Live data from Hacker News

Why MIT switched from Scheme to Python (2009)

wisdomandwonder.com

111–120 of 249 posts

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

#112

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 took Scheme for my second programming course, after C++. I think Scheme is simpler to understand. It also allowed students to explore various concepts that weren't available in C++. I enjoy the course.

But since I never took compiler theories and other courses on programming language, I never bumped into many of those concepts again except for those where modern languages adopted the same feature, and I ended up having to relearn them anyway. Hence, I would also argue that these days, most students would have been better served starting with a practical language.

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

#113
post #41

Earlier quoted context omitted.

Yes. One of the biggest complaints that computer science departments used to get from students is that they weren't learning any languages that employers are using.

I always found this to be a shortsighted complaint. Getting exposed to languages where computation models are clear gives you an excellent background to switch to the language du jour and become a master. Going through e.g. HtDP or CTM makes it easy to transition to Python and write excellent code, whereas traversing the opposite path is going to be tough.

Sure, it's possible to catch up, but we're talking about at least four years of potential experience. That means spending years catching up, which can seriously impact you career.

Not a unique problem to software either. My sister in-law is a mechanical engineer. Her first employer was upset she didn't know anything practical, and only knew theory. She had to spend years catching up.

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

#114
post #43

Earlier quoted context omitted.

Human languages and programming languages are not comparable. You will need a lot more effort to become fluent in a second human language than in second programming language. Even if the human language is Esperanto (designed to be really easy for speakers of European languages), and the programming language is C++ (perhaps the most inconsistencies and foot guns) the programming language will need a lot less effort to…

They're not directly comparable because humans have an inbuilt ability to learn human languages. The vast majority of people on the planet know more than one human language and know zero computer languages. It's literally the opposite of what you're claiming.

Learning to program may be hard, but learning programming languages is relatively very easy. In other words, your second programming language is so much easier to learn then your first was.

I regularly use several programming languages, and tend to pick up a new one every year. I've been spending the last six months studying my second spoken language; I promise you human languages are much harder to learn.

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

#115
post #79

Earlier quoted context omitted.

even better is learning the languages you want to learn why are you paying a school to teach you something adjacent to what you want to learn so you can learn the thing you need yourself?

> why are you paying a school to teach you something adjacent to what you want to learn so you can learn the thing you need yourself? Because some topics are easy to learn by yourself, and some are not, so the latter ones are better learned in a college setting.

Learning a language definitely belongs in the first category. Learning computer science goes in the latter category.

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

#116
post #41

Earlier quoted context omitted.

I always found this to be a shortsighted complaint. Getting exposed to languages where computation models are clear gives you an excellent background to switch to the language du jour and become a master. Going through e.g. HtDP or CTM makes it easy to transition to Python and write excellent code, whereas traversing the opposite path is going to be tough.

Sure, it's possible to catch up, but we're talking about at least four years of potential experience. That means spending years catching up, which can seriously impact you career. Not a unique problem to software either. My sister in-law is a mechanical engineer. Her first employer was upset she didn't know anything practical, and only knew theory. She had to spend years catching up.

Some technical universities in EU solve this problem by having full-time practical courses e.g. in January and June. For example, as a CS freshman you can build a really solid background in functional programming by going through a sequence of SML or Haskell courses in Autumn and Spring and spend January and June learning trendy technologies in depth. It's the best from both worlds.

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

#117

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…

Brown CS actually does this! Accelerated Intro to CS is taught in Racket, I believe.

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

#118
Related: when UT Austin computer science dropped Haskell for Java for it's first course in 2001.

Dijkstra on Haskell and Java https://chrisdone.com/posts/dijkstra-haskell-java/ "A fundamental reason for the preference is that functional programs are much more readily appreciated as mathematical objects than imperative ones, so that you can teach what rigorous reasoning about programs amounts to."

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

#119

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…

> Whereas Python is excellent for teaching applied computer engineering, because it's essentially executable pseudocode for imperative languages

It's not that simple, Python is a fiddly, complex, high-level language that has accreted features in a very ad-hoc way. This makes it very hard to teach and learn in a way that's expected to pay even the most cursory attention to actual rigor. You could probably define a Baby Python subset of the language that's just as simple and rigorously defined as Scheme and teach that, but this isn't how the new MIT intro courses have been designed.

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

#120

Earlier quoted context omitted.

I am confused, what is the relevance of the word essentially?

Do you agree or disagree that Python is more readable/closer to pseudocode than say Java or C++? Less syntactic sugar, no need to define namespaces/classes, more intuitive for declarations, etc.

Would you consider essentially dry water to be semantically correct phrase?
Post reply on HN