MIT 6.001 and the new curriculum

A recent post about the death of 6.001 caught my attention earlier today, and I’ve been stuck composing this blog post in my head for awhile.

As one of many MIT Course 6 students who took 6.001, I’m crushed they’ve been changing the curriculum. When it happened, student speculation ran along the lines of - enrollment in Course 6 has been dropping since the introduction of Course 20 (Biological Engineering). And because 6.001 was so heavily CS-oriented, the department didn’t want to continue losing the set of students who were turned off by the lack of hands-on appeal - so they wanted to make the class more accessible and exciting to the largest number of students.

While, from what I’ve seen and of 6.01, the class lacks not only the pure coolness of Scheme versus Python, but also 1) the ability to even the playing field for students, regardless of their previous programming knowledge, 2) the radically different way of thinking about computer programming that Scheme and SICP provided, and 3) an actual solid grounding in thinking about problems computationally and breaking them down. (One of the upsides I think I would have appreciated, however, is the ability to put an industry-relevant language on my resume. “Scheme” got a lot more raised eyebrows than job offers.)

What MIT offers now for those looking for CS grounding is an “intro intro” course called 6.00 - a class required for Course 20 but not for Course 6, and a class designed specifically  to teach students how to think computationally and design software programs. 6.00 covers CS basics from recursion to performance to basic Big-O notation. Part of me wishes this class was included in the required curriculum, and part of me thinks it would be too easy / a waste of time for those who have programmed in the past.

I wonder whether this argument boils down to - how should students learn? By learning the basics and theory (math, physics, basic CS classes like 6.001 / 6.00), or by exciting students first by offering hands-on classes and lots of options (6.01, removing 8.02, the E&M class, from the General Institute Requirements, etc.). Unfortunately, the latter approach feels like MIT is relaxing its standards for its students - trying to make things exciting now so that students stick with the program, instead of building a solid foundation for later… and if that’s true, it’s not a trend I’m comfortable with.

For more discussion - the original Hacker News thread here (which actually links the article at the top of this post. How circular!)

Edit: A great point (from a MIT ‘08 sitting right in front of me in class, incidentally) made in an identical thread a month+ ago:

I think there’s something else here, implicit in Sussman’s comment, that’s important. MIT was founded on a philosophy of practicality, and everything else is secondary. If you couple that with the belief that fundamental computer science is the most efficient way to enhance practical software engineering, Scheme was a wonderful choice…

Python (and, frankly, a number of the scripting languages-turned-mainstream) combines this clarity of computer science with a practicality that Scheme never had. If you can convey 95% of the basic ideas in Python, and you can also open the door to learning how to deal with 3rd party code, you’d be a fool not to. It was never about programming purity anyway, so there’s no reason to mourn the passing of Scheme. It’s progress.

Let me know what you think on Twitter.