Considering the target students of MIT CS department, I'd argue that they could simple start from an interpreter class in Python.
Why MIT switched from Scheme to Python (2009)
171–180 of 249 posts
Re: Why MIT switched from Scheme to Python (2009)
#172Earlier quoted context omitted.
> There were four 15-unit courses, each about one of these "languages": The description you offer is strange to me. The Lisp family of languages are multi-paradigm (arguably paradigm-independent) and can hardly be called "procedural". The core material of SICP revolves around considering the "means of combination" and "means of abstraction" offered by a programming language — concepts that sound to me like they have…
You're absolutely right that "procedural", at least as I understand the word in 2025, is a poor label for 6.001. 6.001 taught 'define' and 'let' but didn't teach 'set!' until week 6 or so. So we learned functions, variables, scopes, recursion, lambdas, strings, numbers, symbols, lists, map, filter, flatten, and more - all without ever modifying a variable. That's very "functional". Once we learned that it was possibl…
Re: Why MIT switched from Scheme to Python (2009)
#173Earlier quoted context omitted.
I think the solution is to have, as is the case in math/physics, an honors intro CS sequence compared to the regular intro CS class. The latter would be the recommendation for all non-CS majors, and the former would be for CS majors. I've always thought that those who are focusing on more vocational training should not be in what is called the CS program, maybe there are other majors called "software development" or…
We did end up making this switch later on due to growing class sizes anyway. That certainly helps focusing the class. We ended up focusing on computation more for the CS sequence and on the nuts and bolts of getting a program working for the non-CS sequeunce. But my rationale for moving to Python still stands. In fact, I know several brilliant ML researchers who write code that would never come close to making it to…
This is important but doesn't replace having a dual-track intro sequence. The reason one has "physics for physics majors" isn't because physics majors need to learn some of this complicated stuff ASAP. They definitely don't, and I don't doubt students in the program will eventually get a well-rounded education. But it's a good idea to give incoming students a taste of what the field is like as soon as possible, so they can see if they like it or not. (Essentially it's a "weeder", but for the students' sake so they can self-select on interest and not just instructional staff's sake of being elitist.) Probably some (but not all) professors/postdocs/grad students would scramble to teach the more advanced sequence as it is likely more engaging for them than the current intro curriculum.
To be clear I don't think an advanced intro CS can't be in Python on principle, but such a class probably introduces multiple languages to some degree: they could be toy assembly languages or real ones in addition to the majority of the course content in Python.
Re: Why MIT switched from Scheme to Python (2009)
#174Front-loading the mainstream language means you're not just teaching CS fundamentals, you're giving someone a tool that they can readily pick up and use in their real life for real tasks. It's the same as having home maintenance as a component of your basic high school shop class instead of how to rebuild a carburetor: unless you're working with carburetors for a living, that's an unlikely skill that you'd reach for. But knowing how to correctly hang a picture, replace an electrical outlet, or patch drywall is something almost anyone can put to good use ten, twenty, thirty years on.
Re: Why MIT switched from Scheme to Python (2009)
#175Isn't this just part of the broader trend of CS departments switching away from teaching computer science to teaching computer engineering, which in turn is part of the more general trend of colleges becoming more vocational? LISP dialects like Scheme are excellent for teaching pure computer science because they are the closest thing to executing lambda calculus expressions. Whereas Python is excellent for teaching a…
Are functional languages more computer science than imperative languages?
Re: Why MIT switched from Scheme to Python (2009)
#176This story has been reposted many times, and I think GJS's remarks (as recorded by Andy Wingo) are super-interesting as always, but this is really not a great account of "why MIT switched from Scheme to Python." Source: I worked with GJS (I also know Alexey and have met Andy Wingo), and I took 6.001, my current research still has us referring to SICP on a regular basis, and in 2006 Kaijen Hsiao and I were the TAs for…
This comment so obviously belongs on https://news.ycombinator.com/highlights that it's maybe a good occasion to mention that https://news.ycombinator.com/highlights exists. Thanks! (and sorry for offtopicness)
Re: Why MIT switched from Scheme to Python (2009)
#177Earlier quoted context omitted.
It is possible that this doesn't work anymore. I distinctly recall the following episode when I last taught intro CS in Scheme: I revealed first-class functions. After lecture, the brightest kid in class came up to me and said something to the effect of, "What's the big deal? You can do this in Python."
That should be the beginning of the formative experience for that kid rather than the end. Yes, you can. How often do you? What are you missing by not thinking about problems in that way more often? What idioms could be unlocked that way? (How many Python programmers out there are aping wholly unnecessary "design patterns" created for C++ or Java? Or rather: shouldn't a design pattern be about the design rather than…
Re: Why MIT switched from Scheme to Python (2009)
#178One of the less obvious benefits of teaching a mainstream language (or a "hobby" language—the kind you might pick up on the weekend for some hacking) is all the folks who don't go on to graduate with a CS degree. Will Scheme teach interesting ideas? Of course. Will someone who doesn't code for a living download a scheme compiler and write a script five years after graduating? Not a chance. Ten years? There's no unive…
basic programming should be taught in high school too.
Re: Why MIT switched from Scheme to Python (2009)
#179I was one of the last batches of students on the old Scheme curriculum. I absolutely loved it! Understanding that all loops could be done via recursion, and what a side effect is, is what fundamentally made me fall in love with CS. I've heard good things about the new, and now newer, curriculum but I know I wouldn't have had the awakening I did if it weren't for scheme. RIP SICP --- ps another fun story: we had some…
I worked an MIT programmer who bragged about the Scheme curriculum. He was also the worst programmer that I’ve worked with. He really liked clojure and would constantly complain about Python syntax, and ended up quitting abruptly when his hand spun Datomic based system was rejected. I think there is a trap in thinking that a strange way of being taught puts one at an advantage. It is really annoying to work with peop…