Welcome, I'm really excited to be here visiting the Houston office of Two Sigma. A high tech company that hires the top talent in software engineering and many other areas. So it's a privilege for us to meet with Jim Ward who is the General Manager of the Houston office. Jim, thanks very much for taking this time with us. And I'm going to jump right in to it. You know that the specialization is about parallelism, concurrency, and distribution, can you share your thoughts on the relevance of these topics in the 21st century workplace? >> Absolutely. So let me just say, we're thrilled to be a part of this. We're huge fans of Rice and your work there, and this course is really great. The thing I love about the entire area that you're pursuing is you're focused on the fundamentals. It's just really critical that today's software engineers understand the basic principles involved here and be able to do engineering from first principles and at a low level. So, I don't know, 10, 20 years ago, the closest thing to an impact for these ideas was the fact that we had processors that could handle two or maybe three threads at once. But there was no notion of cloud computing, it was science fiction really, but science fiction has come to reality today. And people need to be able to engineer solutions directly and also, need to be able to understand this marketplace, it's rapidly changing. You have all these big vendors that have their different solutions. Which one should you use? How do you build something that is going to work with what they have today and works tomorrow? These are hard problems. And people really need to master this material you guys are putting out there. So we're just really excited that you're doing this. >> So what do you look for when you try to recruit people in your company with this kind of background? >> Well, the key thing we look for is a solid education. And in computer science, that means really understanding the fundamentals. So the basics like data structures, and algorithms, and operating systems, and computer systems, extremely important, low level programming understanding. What happens when that try-statement for exception handling comes up? What's it actually doing? Functional programming from the latest sorts of things with Scala and what's happening with Java 8 and the JVM. As well as distributed computing, understanding those principles is critical. Understanding good software engineering practices as well as core computer science principles. We think a lot about questions that come up in a theoretical computer science course, for instance. So all the basics are really what we focus on here. And of course, the ability to actually put your hands on the keyboard and create software, which is what we love doing. >> That's wonderful. Do you find that these technologies related to parallelism, concurrency, and distribution are useful in practice in terms of what you do here at Two Sigma? >> Absolutely, I don't think our business today could function without that. Internally, we have a big supercomputer cluster, many, many distributed computers. And we use all kinds of public cloud capabilities to tackle problems that might take years on a single processor that we need answers on right away. So it's not at all unusual for us to take problems in data science and apply them to the real world on giant, distributed systems. Useful is not the word I would say, critical for operations is really right. >> What advice do you have for students taking this specilization? >> Well, first of all I would say do all the homeworks and really program, and think through these problems yourself because that's how you learn. Your brain does not get knowledge by passively receiving it. Your brain gets knowledge by doing work and making neurons connect. So I think that's one of the things for this Coursera class, or for any class. You're really short cutting yourself if you don't do all of the work. If there are extra credit problems, do the extra credit problems. >> Great advice. >> And in addition, I would say, think about how the principles that you're learning can be applied to different kinds of things. First of all, these are principles that, you're going to learn things that you can apply in your other computer science courses. And you're going to learn things that you're going to be able to apply in areas that are not exactly computer science. For instance, data science, we know that certainly in biomedical engineering, sequencing the genome requires a lot of parallel distributed computing. And whatever career you want to pursue in the future, I think if you can really master these technologies and apply them, it's going to set you a level above the other people that you're working with. >> That's great. Can you tell me about some of the areas where you apply these principles of parallel and distributed computing? >> Sure, well, I guess one of the most interesting and exciting areas right now is in machine learning. >> Yes. >> Obviously, this is one of the big breakthroughs in technology in the last several years. And it really wouldn't have been possible without being able to apply cloud scale technologies to these things. So we use machine learning in various aspects of our business, and are looking for a lot of new ways to apply that technology, and distributed computing is a key component of that. >> Right, yeah, we've seen an amazing uptake in interest from students in machine learning. And it goes hand in hand as you've said with parallel and distributed computing. >> Yeah, so it's great that students have got, while they're learning this incredible stuff that's really useful on its own, they can have something to look forward to and say, great the next step for me is I can learn about all this machine learning stuff. I know that's going to inspire a lot of people. >> I'd really like to thank you for taking the time and sharing your thoughts with us. And congratulations on building a great team in Houston. >> Well, thank you very much.