Q & A with MIT Professor John Guttag

HiJohn Guttag. By day, I'm a professor of Electrical Engineering and Computer Science at MIT and also a member of the Computer Science and Artificial Intelligence Laboratory at MIT. But you probabaly know me as the figurehead or something behind 6.00 and the whole series of 6.00 courses. It's a really good question about what keeps a learner interested in pursuing this topic. We designed this course actually to be a hard course. It's very similar to what we teach at MIT. And we really didn't want to compromise on the opportunity for students to learn alot. However, as it's been said there's no royal road to mathematics. There's no royal road to computer science. To learn a lot, you actually have to work. On campus, we are able to provide the students who are struggling a lot of interaction and counseling and dare I say it hand-holding to encourage them to keep going. It's much harder to do that when we don't physically meet with the students. What I can say is that the learning curve for this is very steep in the beginning but then it does flatten out and somewhere along the way most people have it's almost like an epiphany Oh! Now I get it! This is not as hard as I thought it was and then they feel really good about themselves as they should. So the main thing I tell people is give it a fair shot. You know, don't quit too early hang in there, and almost everybody does get it. Let me clarify that. Almost everybody who really does the work gets it. You can't learn to program just by watching people talk about programming. You have to do it. And the main thing I would encourage people to understand is it does get easier. This is not one of those subjects where it just gets harder and harder and harder. Most people who get through the beginning find they do just fine thereafter. You can tell from my gray hair I've been at this for quite a while. And what I like most about it is it's never the same. If you asked me as recently as ten years ago what I'd be doing today, I'd have gotten it all wrong. The nice thing about being a computer scientist is the world changes out from under your feet all the time. You have to learn new things and it's just continually exciting. The other thing I like about it is today we're kind of - this is going to sound arrogant but I'll say it anyway - at the center of the universe. Almost everything going on in the world today depends upon computer science and its technologies. And it's kind of fun to be in the middle of things. And how has it changed my life? So the one way it's changed my life is it's given me gainful employment for a long time. Something not to be sneered at. And the other thing is and it's a combination of coputer science and being an academic, is I've just met an incredible number of wonderful people. And intellectually interesting people. And it's changed my life in lots of ways. The opportunity to interact with those people particularly the young people, you know, we turn over pretty quickly at the university so I'm always meeting new people hearing new things, getting new perspectives and it's really fun. That's actually a tricky question. Because it can be interpreted in multiple ways. So what most of us think of is what's called Moore's Law. Every 18 months or so the number of transistors that can be fit on a square milimeter on a chip would double. And so circuitry got denser and denser and denser and that made computers faster and faster. One of the limitations, believe it or not, is the speed of light, and by getting things closer to each other, the distances are shorter and things can be faster. We're probably nearing the end of Moore's Law. We're entering the regime where things become small enough that quantum affects start to take over. And that's much harder to think about how to program, how to build machines. And so we won't be able to make them faster in an easy way. That doesn't mean we won't make them faster, because now, what we see is an increasing emphasis on parallelism. So if you can't make one core faster, well, maybe what you can do is link thousands of cores together and do multiple things at the same time, and make things still run faster by exploiting parallelism. And I think that's really going to be the long-term future of speed ups is our getting more and more clever about how to parallelize things. Now this just is not simply a matter of building hardware that will accomodate this but how do we write programs that would accommodate this. Today, most of us think about programs as a sequential set of instructions one after another and we don't really have parallelism in mind. And so a lot of our algorithms that we depend upon are not very easy to parallelize. And so it's not that easy to take advatage of the parallelism in the hardware. Other times we have what we call embarrassing paralellism, where it's really easy. And so I think what we'll see is computation will get faster, not computers, but computation as we get better at building parallel machines and exploiting that parallelism in our software. In some sense, programs have been producing programs since the 1950's, before I'm sure most of were born. Around that time, people started building things called compilers. You've probably all have heard of compilers. What a compiler does is it takes a program in one language that humans like to write in, say python, and produces at the other end a program in another language that the computer can execute directly. So in that sense, every compiler is a program that creates a program. Now maybe we could say that that's not really programming, but there's a continuum. So today, there's a tremendous hubbub about machine learning. Google learns what ads it should show us to try to get us to buy things that we may not need. Netflix uses machine learning to recommend movies, all these kinds of things. So what is machine learning? Something we talk about at the end of this course, but essentially machine learning is a program that takes in data and produces another program that takes in other data and produces predictions. So effectively, machine learning is a way of a program producing more programs. Well first of all, I say to say that the question starts from the wrong premise. I'm teaching a class with the same number, maybe even the same title but it's not the same class year after year. If you look for example at OCW, you'll see that there is a version of the course in 2008 and then we did a whole new version in 2011 because it had changed a fair amount in those three years. And just last spring, we recorded a whole new version of half the course because the back half had completely changed. That course should be available soon. It contains a lot more machine learning in it. For example a lot more data science in it than the previous version. I'd say that when I teach it on campus, I probably change somewhere between 15% and 20% of the content every semester I teach it. And that's why after three or four years, we feel we need to do a whole new version online to sort of keep up with it. And I think that in a field like computer science, we're not in a field where we can take a course and put it in a can and just rerun it over and over again. We really do owe it to the learners to update the course and make it contemporary. And just as we owe it to the learners on campus, we owe it to the learners who are online.

Comments

Popular posts from this blog

12. Ion Implantation and Annealing - Analytic Models and Monte Carlo

L17.4 Molecules and energy scales

Lecture 20 Maxwell Theory and its Canonical Quantization