Isn'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…
> most common language a computer engineer Depends on your definition of a computer engineer. Dealing with strings in Python vs. dealing with character arrays in C is a world of a difference. The decision to use Python feels like a solid compromise between giving the students a stair step to applied computer science work, while stripping away the cruft and language-specifics that would distract from implementing the…
Why MIT switched from Scheme to Python (2009)
91–100 of 249 posts
Re: Why MIT switched from Scheme to Python (2009)
#92Earlier quoted context omitted.
I disagree. You can learn the language itself pretty quickly. Finding your way through the expansive standard library will take longer. Getting a good handle on the package ecosystem is a lifetime learning project.
Knowing your way around the ecosystem of one programming language does not build up the intuition necessary for identifying O(n²) (or worse!) algorithms and choosing/writing O(log(n)) (or better!) ones instead. Computer Science has little to do with science, but what it teaches you is certainly closer to science than just building a huge mental index for a bunch of work done by other people. There's certainly value i…
Re: Why MIT switched from Scheme to Python (2009)
#93Earlier quoted context omitted.
When this kind of switch was happening in CS departments, as a graduate student I was part of a "movement" that advocated for switching away from things like Scheme to Python for introductory classes in my elite CS institution. (We focused on other things as well such as more interdisciplinary research, which was where I was more passionate, but that's a separate matter.) My reasoning at the time in this order was: 1…
> Once you learn Scheme, well now you've learned Scheme. There is something really joyful in learning a new language and then implementing a well-known protocol, like HTTP, in that language. You can pick either the agent or server side, and check your work with other well-known agents and servers. In my experience this tends to happen when students like the language they've just learned, regardless of the direction t…
But I dabbled in PLT in my grad days and have no doubt that there are folks who have your mindset as well.
Re: Why MIT switched from Scheme to Python (2009)
#94Earlier quoted context omitted.
When this kind of switch was happening in CS departments, as a graduate student I was part of a "movement" that advocated for switching away from things like Scheme to Python for introductory classes in my elite CS institution. (We focused on other things as well such as more interdisciplinary research, which was where I was more passionate, but that's a separate matter.) My reasoning at the time in this order was: 1…
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…
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 production. The things we optimize for are different. Production code in a tech company needs to be readable, maintainable, explainable, and scalable. An ML researcher's code needs to support their research. These different perspectives are still why I think focusing on a wider appeal language like Python over something like Scheme still makes sense.
FWIW our CS program mandated a programming languages class and the first third of the class was taught in Scheme.
Re: Why MIT switched from Scheme to Python (2009)
#95https://www.composingprograms.com
BTW, my complaint about Scheme in 61a was that after the class, the department never used it again. They didn't even have the decency to use Guile or some standard Scheme. Instructional Computing had some hacked up something Scheme.
Re: Why MIT switched from Scheme to Python (2009)
#96This 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…
A semi-off-topic side question:
> the students were supposed to each get a software radio and build a Wi-Fi-like system (the software radios proved difficult and, much later, I helped make this an acoustic modem project).
What was the reason why the software radios proved difficult?
Re: Why MIT switched from Scheme to Python (2009)
#97I took the Scheme path and feel great about having a deep theoretical foundation in CS, but I know plenty of folks who started with the fun/shiny stuff and became amazing software engineers. So all in all I'm really glad they gave us a choice.
I will admit that there were people in my classes who didn't really understand what they were getting themselves into and possibly would have benefited from starting with Python or Java and getting more inspired about building cool projects. It really was a YMMV ¯\_(ツ)_/¯
Re: Why MIT switched from Scheme to Python (2009)
#98Isn'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…
I think it's absurd to start with Scheme. A graduate who knows Python but not Scheme has a hope of doing something with computer science. A graduate who knows Scheme but not Python is basically unable to use computers at a technical level. The only choices here are "Python" or "Scheme + Python". (Yes, of course, they could teach themselves Python at that point---but if we're talking about things that people can teach…
Re: Why MIT switched from Scheme to Python (2009)
#99This 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…
(and sorry for offtopicness)
Re: Why MIT switched from Scheme to Python (2009)
#100Isn'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…
I think it's absurd to start with Scheme. A graduate who knows Python but not Scheme has a hope of doing something with computer science. A graduate who knows Scheme but not Python is basically unable to use computers at a technical level. The only choices here are "Python" or "Scheme + Python". (Yes, of course, they could teach themselves Python at that point---but if we're talking about things that people can teach…
And no, I wouldn’t recommend starting with BASIC. But starting with Scheme seems like a great choice.