3 ms·
It'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,
by silentOpen 17y ago
It'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.
- cyen 17y agoInterestingly enough, I'm also an MIT '09 (hi) - and while yes, I loved the old curriculum and I wish they were still on it, you're making all these claims about the new curriculum that are simply not true. The "entire undergrad CS curriculum" has NOT changed to accommodate the shift to Python. 6.034 was the only one that changed at all. 6.006 does Python, but it's new and 6.046 had no practical edge to it at all. As a student who had a little bit of difficulty with the theoretical steps in 046, I can understand why they added the "test this and prove to yourself that this makes sense" exercises in Python. As lame as it sounds, look into 6.00 - it's an "intro intro" programming class mostly required for Course 20 (Biological Engineering) students, but it's surprisingly robust as an introductory class - covering a lot of the topics you just listed, and well.
- silentOpen 17y ago6.034, 6.046 (now 6.006), 6.001 (now 6.01), 6.02 all use Python. There are/will be more most likely. These are all new or refurbished classes to support the new curriculum. That's a pretty major shift. I've helped a number of people with their 6.00 work and read quite a bit of the course material and I have to respectfully disagree. Students in 6.00 don't learn anywhere near what was taught in 6.001.
- cyen 17y agoRight, but 6.00 is also not aimed at Course 6 students. I brought it up to provide an example of what I would've liked to see 6.01 / the intro 6 class be like, if they were going to Pythonize / simplify 6.001 at all.
- daniel_weinreb 17y ago"You're being misled if you think that popularity and marketability were not factors in selecting Python for the new course 6 curriculum." Well, I suppose it's possible that you belive Prof. Sussman and Prof. White are lying. I've known both of them for a very long time and find that utterly implausible, but I suppose you have a right to your opinion, however informed or uninformed.