Why MIT Switched from Scheme to Python (2009)
11–20 of 102 posts
Re: Why MIT Switched from Scheme to Python (2009)
#12Re: Why MIT Switched from Scheme to Python (2009)
#13What was great about Scheme (Lisp) is that most programs are basically words from your vocabulary, parentheses, and cars and cdrs. With procedural languages, there is always a sense that the language provides all the tools, and the magic happens somewhere underneath the hood. But with Scheme it feels as if it's happening right before you. It makes you feel like a wizard, and not a monkey. And it requires knowing all the spells. It requires knowing how to make magic happen. Or not. Once you know none of it's magic. But that's the point!
Python is arguably easier and more practical for both science and work. It's already popular on the web server, and is used everywhere else -- unlike Scheme.
But the recent resurgence of functional programming is super exciting with Elixir and Elm and the like.
I'm looking forward to building my next project using Elixir.
Here is the classic course: https://ocw.mit.edu/courses/electrical-engineering-and-compu...
Original video lecture on YouTube (linked from above): https://www.youtube.com/watch?v=2Op3QLzMgSY
Re: Why MIT Switched from Scheme to Python (2009)
#14Re: Why MIT Switched from Scheme to Python (2009)
#15Berkeley made the same switch at around the same time, and it made me sad. Having done the intro course in Scheme, I'd say it helped me understand functional programming far more than I ever could have with Python, and it opened me up to different ways of thinking. Even though I never again used any Lisp variant, I'm still really glad I learned it and feel that what I learned using Lisp has informed my future decisio…
Brian Harvey explained the decision to switch here:
"But, as I keep saying, the choice of programming language isn't the main point. I get upset when students, even the students who like 61A, refer to it as "the Scheme course." It's not a course about Scheme! It's a course about programming paradigms. MIT, where SICP was written, no longer includes that course in its lower division core sequence, not because they wanted to change programming languages, but because they changed the entire sequence from courses organized around big groups of ideas to courses organized around application areas: first "let's build and program a robot" and then "let's build and program a cell phone." That's a brave and thoroughgoing attempt to, among other things, attract non-nerds to computer science. To say, as some people do here, "MIT switched from Scheme to Python" completely misses the point of what MIT did; nobody is proposing any change half as profound at Berkeley." [1]
Re: Why MIT Switched from Scheme to Python (2009)
#16I think there's a tension between two imperatives in teaching new programmers: 1) Learning must be applied learning. Give people problems to solve and they will come to you for data structures and algorithms, O notation, etc. If they don't, they should do something else 2) A lot of what's out there in programming languages are cargo cults, and newbies need to be prepared for this. For instance, virtual function inher…
Python is a fairly decent language for starting people off:
* It doesn't have a lot of boilerplate, so no magic "I'll teach you what this means in three weeks" steps
* Output for debugging is fairly easy, since print accepts a lot of stuff without needing to muck with formatting strings
* Assignment is a statement, not an expression. You can't say "if x = 3" by accident
* Python is one of the major programming languages, so you're teaching students something that is pretty much guaranteed to be useful for them.
Re: Why MIT Switched from Scheme to Python (2009)
#17Re: Why MIT Switched from Scheme to Python (2009)
#18Re: Why MIT Switched from Scheme to Python (2009)
#19We used scheme in my programming languages course (which was one of my last course before graduation). at first I hated it, but then once I got it, it was fun! functional programming forces you to think in a way that is much more conducive to understanding programming on a deeper level and thinking creatively to problem solve. Imperative programming, while easier, is more of a blunt instrument. Efficient, but blunt.
Re: Why MIT Switched from Scheme to Python (2009)
#20I think there's a tension between two imperatives in teaching new programmers: 1) Learning must be applied learning. Give people problems to solve and they will come to you for data structures and algorithms, O notation, etc. If they don't, they should do something else 2) A lot of what's out there in programming languages are cargo cults, and newbies need to be prepared for this. For instance, virtual function inher…
While I think that most CS people should learn assembly and computer internals basics, it would be an absolute disaster to start students off in assembly as CS 101. Python is a fairly decent language for starting people off: * It doesn't have a lot of boilerplate, so no magic "I'll teach you what this means in three weeks" steps * Output for debugging is fairly easy, since print accepts a lot of stuff without needing…
Scheme levels the playing field. I have never encountered a student who entered university with years of functional programming experience and I was a TA for an introductory CS course. I think moving back to Scheme would be a wise choice for universities that are combating problems with diversity.