Live data from Hacker News

Why MIT switched from Scheme to Python (2009)

wisdomandwonder.com

91–100 of 249 posts

Re: Why MIT switched from Scheme to Python (2009)

#91
post #78

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…

Depends on which part of the theory you care about. Lists in Python are a magic structure that can grow and shrink at will. That's a bit too high level to be useful for learning the theory.

Re: Why MIT switched from Scheme to Python (2009)

#92
post #49

Earlier 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…

You can learn about algorithmic complexity in python. Why not just focus on one language to keep things more focused.

Re: Why MIT switched from Scheme to Python (2009)

#93

Earlier 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…

Maybe this is due to my interests (I specialized and published in distributed systems) but it's always been the opposite for me. Implementing HTTP/1.0 or IRC clients is one of my favorite ways to learn a new language (albeit it's a bit heavy on the IO which can be unfair to functional languages that model effects.) My interest in network software is that I can standup the software and have it participate in the network immediately. It's the application that leads me to appreciate the language not the other way around. My interests in theorem proving and program verification came from debugging heisenbugs in the wild and wasn't motivated by the algorithmic complexity or mathematic sympathy.

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)

#94

Earlier 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…

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 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)

#95
Berkeley seems to want to slice the baby in half. cs61a teaches in Python but then retains the implementation of a Scheme interpreter. They don't use SICP anymore. They use John DeNero's online text, Composing Programs.

https://cs61a.org/

https://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)

#96

This 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…

Thanks for this detailed explanation.

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)

#97
Brown CS (back in 2004) gave you a choice: you could either take a 2-class intro sequence that started with Scheme and eventually OCaml before moving into OOP with Java, or you could start with Java from the get-go and make cool/flashy projects like Tetris by the end. Both course sequences were supposed to bring you to roughly the same place by the end.

I 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)

#98
post #77

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…

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…

It's easier to explore deeper concepts learning with scheme because the language is such a simple and introspective encapsulation of generalized computer science concepts.

Re: Why MIT switched from Scheme to Python (2009)

#99

This 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)

#100
post #77

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…

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…

I and about a million other programmers started with BASIC. My second language was Pascal. I don’t imagine I’d be very employable if that’s all I knew, but it turns out that you can learn many programming languages and it’s not all that much effort after the first two or three. There’s no reason to think the language you start with should be one that you could get paid to use.

And no, I wouldn’t recommend starting with BASIC. But starting with Scheme seems like a great choice.

Post reply on HN