6 ms·
I'm graduating from MIT (hopefully) in under a month with a degree in CS. The new curriculum is an abomination. If you are teaching some of the (supposedly) bri
by silentOpen 17y ago
I'm graduating from MIT (hopefully) in under a month with a degree in CS. The new curriculum is an abomination. If you are teaching some of the (supposedly) brightest students in the world, you shouldn't worry about teaching marketable skills or using popular languages. Your students should be able to pick up a new language easily.
Luckily, I took all old-curriculum classes. If I were a student entering college for CS now, I would not choose MIT. I don't know other schools' curricula in depth but some place has got to be more rigorous (Berkeley? Stanford? CMU?).
- scott_s 17y agoThe arguments for changing the course do not include teaching marketable skills or using popular languages. The main argument is that the practice of computer science has fundamentally changed since the course was originally developed. The argument is that computer scientists rely more on existing libraries and systems that often require fundamental research for an individual to comprehend. They have changed the course to reflect this using robotics and a library to control the robots. That library happens to be written in Python. They didn't start with "Let's change to using Python" and develop the course around that. The validity of this argument is debatable. But I don't think your reasons address it at all.
- silentOpen 17y agoIt's not just 6.01/6.001 -- it's the entire undergrad CS curriculum. Moving these classes toward Python because 6.01 found a Python robotics library (from MIT, coincidentally) does not justify moving other things to Python. Python's a great language, don't get me wrong but you're being misled if you think that popularity and marketability were not factors in selecting Python for the new course 6 curriculum. As for the argument that "computer science has fundamentally changed", I agree. Unfortunately, what is really meant is that software engineering has changed. You can learn computer science concepts just as well with Scheme or Python or Smalltalk or OCaml... Additionally, while library use may be more prevalent in industry now, that's no pedagogical argument for teaching "library use" (whatever that is). Library use is relatively easy. Reading docs is hard for a lot of people but learning to read docs can be done with systems or languages instead of libraries. It all boils down to what will serve the students best and what will let MIT deliver the most value. Students can learn python and library use on their own relatively easily. Fundamentally understanding recursion, abstraction, complexity, scoping, FP, OO, and other more abstract topics is considerably harder working alone. 6.01 claims to still cover these topics. 6.01 claims to integrate them with EE and robots to make the class fun. From the conversations I've had with 6.001 students and 6.01 students, 6.001 does a much better job with these topics. 6.01 can and will improve, of course. Unfortunately, I don't think teaching about robots in Python will give students as solid a grounding as SICP. MIT's new course 6 curriculum falls along similar lines as the 8.01/8.02 (intro mechanics and e&m) move to TEAL (a bastardized blend of game show and "hands-on" computer work that feels like high school). See http://tech.mit.edu/search.html?cx=000823599697007823270%3Aqvanwm1hj34&cof=FORID%3A11&q=teal#984 http://tech.mit.edu/search.html?cx=000823599697007823270%3Aq... for how TEAL has been doing. Would Caltech do this? No. So why is MIT?
- jimbokun 17y ago"Fundamentally understanding recursion, abstraction, complexity, scoping, FP, OO, and other more abstract topics is considerably harder working alone." Reading SICP on my own time helped me understand these topics better, and helped me understand some things about Java better (like how anonymous inner classes are a half-assed, broken attempt at implementing closures). SICP makes sense of these topics in a way that I doubt is even possible in a class taught in Java. You can probably cover a lot of this material with Python, but still run into more limitations and inconsistencies than with Scheme.
- scott_s 17y agoHow have I been misled regarding popularity and marketability? That is, what information do you have that I do not? Note that I said, with added emphasis, "the practice of computer science has fundamentally changed." This idea rings true for me, as a systems researcher. I have to do as they describe to do my own research. "Library use is relatively easy" greatly underestimates the difficulty of accomplishing non-trivial tasks with new hardware, even in the presence of published specs and available library. Also, answering your own rhetorical question even though you don't actually know the answer is not support for your argument.
- silentOpen 17y agoWhile Gerry Sussman may not have said it, popularity and marketability were absolutely factors in the decision to adopt Python for the new curriculum. Any sane CS department would take these into account. Unfortunately, it has become increasingly apparent that in many cases MIT in general and course 6 in particular make decisions mostly because of popularity, marketability, buzz, or peer pressure. This is not how you innovate. "Library use is relatively easy" is not true for all cases; you are correct. 6.01 uses libraries which are well-built and relatively friendly. This is the first 6 class students take, after all. Classes later in the curriculum will have students using libraries of their own selection or writing compilers or operating systems for modern processors (should the student choose to take those courses). Between teaching fundamental concepts and teaching how to use a library, concepts should win out in introductory courses. Whatever skill it takes to use a library or documented system will be learned in time. I don't absolutely know the answer to whether Caltech would do something similar but I would wager a great deal that they wouldn't. Have you looked at Caltech's required courses? Talked to Caltech students? Looked at MIT's required courses? Talked to MIT students? If you do, you will notice a very clear trend. Although MIT and Caltech are ostensibly peer institutions, the last two decades have seen a marked (relative) decline in the intensity and rigor of MIT's undergraduate programs.
- throw_away 17y agolooks like 61a at cal is still scheme based (http://inst.eecs.berkeley.edu/~cs61a/sp09/ http://inst.eecs.berkeley.edu/~cs61a/sp09/) and still taught by the incomparable Brian Harvey. damn I loved that class.
- cgray4 17y agoThe lectures are online at http://academicearth.org/courses/the-structure-and-interpretation-of-computer-programs http://academicearth.org/courses/the-structure-and-interpret... and are really interesting. I'm about halfway through them. I only wish my Scheme-based course had been as cool.
- grinich 17y agoWhat remaining classes do you think best exemplify the old curriculum?
- silentOpen 17y ago6.003 (Signals and Systems) and 6.004 ("Computation Structures" -- transistors to microprocessors) were great classes. I don't know what they've done to them since I took them. 6.033 (Systems Engineering) and 6.046 (Intro to Algorithms) were also great classes. 6.046 has become 6.006 and 6.046' now. I've heard mediocre things about 6.006. 6.945 (Large-scale Symbolic Systems) is an excellent class. Afaik, it's still taught in Scheme by Sussman. All these classes cover quite a bit of material in not-very-much time. They don't get bogged down by whatever language they use (if any) and they straightforwardly teach fundamental concepts in some depth. They have high throughput.
- endtime 17y agoI didn't do my undergrad at Stanford, but I'm here as a grad student, and I believe they use Java for the intro classes. They do teach Python and C eventually, but no Lisp AFAIK. I did my undergrad at Georgetown, where nearly every class used C++ (or C, for classes in things like OS and security).
- gms 17y agoI did undergrad CS at Georgetown too (hi). What year were you, if you don't mind me asking?
- endtime 17y agoHi! I graduated last year ('08). You?
- gms 17y agoAh I probably do not know you then. I graduated in '04. Do you know Zico? He graduated in '05 and is a grad student at Stanford now I believe. We were in the same algorithms class.
- endtime 17y agoI don't know him personally, but I know who he is; I think we met once when I was a freshman, and then he gave a lecture for one of my classes last quarter. Andrew Ng speaks highly of him.
- andrewparker 17y agoI did my undergrad at Stanford, and after taking two simple intro courses, we had the first real intro to paradigms course (CS107). In that course, three languages were used: C++ (for a data structures project), Java (for an OOP and Concurrency project), and Lisp (for a context-free grammar project). I don't know if the course is still taught this way, but I thought it was great.
- 17y ago
- daniel_weinreb 17y agoIf you read my original post, you'll see that it has absolutely nothing to do with teaching marketable skills nor popular languages. The point was that the change in languages was not a goal in itself, but merely an incidental consequence of what the real goals were. (The title of the blog entry was meant to be ironic.) http://danweinreb.org/blog http://danweinreb.org/blog