Hi, everyone! Sorry that I vanished off the face of the earth. That was really kind of terrible form, I know. But Ben and my mom are conspiring, which means that I need to put that to an end. In the next little while, I’ll try to do a recap of last term, which was fantastic, but unbelievably hosing.
This particular post, though, is about a particularly well-known class around the Institvte.
As many of you know, 6.001 was a class invented at MIT to teach the fundamentals of how to program. The first class was taught in 1980 by Hal Abelson and Gerry Sussman, the authors of its companion book Structure and Interpretation of Computer Programs, which also happens to be the official name of the course. The class has been offered constantly since then, and it’s been taught roughly the same way.
The class was structured around Scheme, a programming language which Sussman invented with Guy Steele in the 70’s here at MIT. It’s an unusual language with a syntax that’s radically different from most other programming languages (at least ones that aren’t LISP), so most people aren’t familiar with it coming in. And because of this, the class has gotten a lot of flak in recent years, especially from people who know “more normal” programming languages.
In spite of this, 6.001 had a very strong reputation for teaching people not only how to program, but how to think about programming, and how to take big problems and deal with them. There are a lot of classes that claim to do this same thing, and probably many of them do, but 6.001 seems to be unique in just how it manages to pull it off.
Starting this year, though, the Course VI department is beginning to migrate incoming freshmen to the new curriculum. And 6.001 doesn’t really have a place in the new curriculum, so this is the last term that it was offered. Several years ago, Sussman said that he wanted to be the last person to teach 6.001, and so he taught it this term, taking it back from (guest blogger) Eric Grimson, the head of the department, who has taught the class for as long as any of my friends can remember.
Because 6.001 is “early” in the day (10 AM – which is very early by MIT standards), frequently the students will opt for other means of learning the material, but for this last lecture ever, current students of 6.001, past students of 6.001, and even people who had never taken 6.001 came to see the class off.
And just to put their own stamp of approval on the class, some hackers apparently covered the original room number (32-123) with a new number for the day:
Now that 6.001 is gone, it’s being replaced by 6.00, 6.01, and 6.02 in the new curriculum. There are a lot of students that don’t really like the new curriculum, but for the most part, it seems to me that they are just being resistant to the change. It’s definitely true that 6.01 hasn’t quite settled into being a really solid class yet, but 6.02 looks like it’s amazing. Among other things Chris Terman, my 6.111 professor, is teaching part of it, and he’s just generally awesome.
It think that the new curriculum isn’t quite there yet, but it’s definitely close.
I promise that I’ll try to post more during IAP and this next term! Really! I’ve definitely got a long list of things to talk about.
I have to say it’s pretty amazing what people will do for things that matter at MIT. One of the reasons I’m looking forward to going.
Also interesting to see what’s changing in the Computer Sciences department. For a topic that changes so quickly, it’s funny that people are resisting the curriculum’s change.
I once read about the hacks that faculty also admires them even if they are illegal. Now I know why.
And ya I’m also looking forward to course 6, so it’s good to hear what is going on.
Oh! I think I went to a recitation of this class during my visit. I actually understood what was going on. It was fun :-D
Computer Programmin’! What fun… I would love to be in the class… Wow! I would love being in MIT!
Quick anecdote. Once upon a time, I was meeting with a math professor at Notre Dame. The professor was running late for some reason, but his office was open, so I just went inside to wait for him. Apparently he had some interest in computer science, because I noticed a lot of books about the subject on his bookshelf. Me being me, I couldn’t help but pick up one and start perusing it.
By chance, it was The Structure and Interpretation of Computer Programs. Just goes to show you, it’s a pretty important book.
As is absolutely not surprising, given our other correspondence, this makes me really sad :-(. I mean, I am excited about the new curriculum , but the loss of Scheme .. is sad. I don’t know, I’m just worried that it will all become less solid .. or something.
My feelings come somewhat from articles like this: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
I’m kinda concerned too — if I get in (RA), then I will definitely be majoring in Course VI, and if the curriculum hasn’t fully materialized yet…
And I was excited to learn Scheme too! I saw Lisp being used in dunnet, a text-adventure built into GNU Emacs. It looked really intriguing. Oh well… I might try teaching myself Lisp sometime for the heck of it.
But still, I have faith that the new curriculum will still hold true to EECS’s goal: teach you not just how to program, but also to understand design and algorithmic concepts. It’s the abstraction layer that’s important, not the tools you use.
Very interesting article. I actually learned C and then C++ before ever touching Java, so I had my share of pointer frustrations! Pointers are messy and very…volatile. But I never had much trouble understanding them. Recursion, on the other hand, is something I’m still trying to get used to…
Still, even though Java was pretty easy for me to learn, I still prefer C/C++. I don’t care if pointers are unsafe — they forced me to analyze programs in ways Java never would have. Damn memory management: SIGFAULTs and SIGSEGVs are two of the most frustrating errors I have ever encountered! :D
Keep blogging about this dude.. People in remote places like Peru (my case) or India care about.
I’ll probably be majoring in Course VI too. Or electrical communications. And from what I’ve seen, both courses are being reworked in a lot of other universities because of how much they’ve changed in the past decade. In fact, I can’t even transfer credit from a few subjects I took 2 years ago because they’re obsolete!
*sigh* The world changes so fast doesn’t it? Back when I was a pre-teen, just a decade ago, 56K modems were the new fad, SMS and Google didn’t exist, and the in-thing was IRC and HTML. Now, even universities have blogs which my cellphone can access. It’s kinda sad knowing that in 2018, all the new computer stuff I’ll learn tommorow will be obsolete :/
Without the SICP treatment of scope, environments and continuations, your education in software engineering would be profoundly lacking. If the new curriculum doesn’t cover this material adequately, you *must* supplement from SICP.
My first thought when reading this was “What are they doing?”. Then “Are they insane?”. And also “Can I cancel my application?” :D. But after thinking it through, MIT is MIT and there are people who’ll create something for several other decades. BUT 6.001 IS HISTORY! It’s the basics and it’ll last forever(there are videos of old lectures).
I’m actually reading through SICP on my own (since my school’s CS department has become a JavaSchool), and to all the people saying that all of the 6.001 stuff is obsolete: you don’t understand CS well if you think that this kind of thing will EVER become obsolete. The head of our CS department started studying in the early 60’s and he says that the concepts he learned then are the same as the ones people need today. It’s a shame that such a solid course based on functional programming is going the way of the dodo.
Absolutely LOVED this entry.
Being Course VI the most famous of all majors at MIT, it would be expected to have more course VI bloggers (or entries). Please blog more often, you have no idea how much your blog is appreciated! =)
*mourns* I’ll never be able to take 001! I’m not doing Course 6 (I’m thinking 10B or 7), but I do want a little programming background. Oh wells…
And now the beaver shits on you hahahaha. Really.
well, I have had a moderate change of heart. I talked to Professor Sussman on the phone, and he told me that he thought I was placing to high an emphasis on the specific language.
He said that he’d actually been trying to have 6.001 replaced for the last ten years (and I read somewhere that Professor Abelson was behind the move too). His point was that the way industries work has simply changed drastically. Understanding the principles is not essential for an introduction to the subject matter anymore, it matters more that you can develop a mental map of systems and make things work for you which is what dealing with the robots in 6.01 will make you do. He sees 6.001 as obsolete. Personally, I wish it was possible to understand all the principles, but I guess its simply a reality that I must deal with. I guess, if you think about it, the path to further progression does not come from re-learning what has already been known a long time, but from using and building on that basis, applying principles in a working fashion, and achieving new things.
Anyway, if the creators of 6.001 both favor the new curriculum to the old, I guess I shall have to concede to their greater wisdom. I look forward to taking 6.01 and 6.02 ^_^
Also, I’d like to say that the simple fact that Professor Sussman didn’t mind taking the time to talk to me really shows how truly accessible the amazing staff at MIT are.
Huh. Ok. See, there’s all this stuff I wish I knew about MIT. And will know when I (hopefully) go there next year. I want to major in course 6, but I’m just taking Java now for the first time, and I plan to try to learn C or C++ over the summer. I really liked the recursion chapter, but it was probably pretty basic…. hmm… 75ish more days to go.
Well, as Donald said, considering the creators of 6.001 themselves wanted to get rid of it, then that definitely says something…
Still, I always had faith. I mean, this is MIT. Of course they know what they’re doing — they’re the best!
Plus, it looks as if 6.01 is even more broad and comprehensive than 6.001 was. Robots and Python? That sounds amazing. And even though languages aren’t supposed to be important, I think learning Python makes up for the loss of Scheme in many ways.
Now, if I could only find out if I would be allowed to attend next year…
I loved SICP! I went through some of the book and watched the old lecture videos. *sigh* I wish MIT still offered 6.001, but I’m sure the new courses will be just as amazing in their own way.