Live data from Hacker News

Why MIT Switched from Scheme to Python (2009)

wisdomandwonder.com

1–10 of 102 posts

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

#2
I 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 inheritance isn't a thing. It's a weird call chain pipeline system glued into your vtable, which C++/Java teaching also won't bother to tell you exists. Make people start from assembly, graduate to C, then write their OWN vtable, so it's demystified. Now you've reduced the ability of software designers to piss on your leg and tell you it's raining.

So ideally I'd want students (at first) to be doing something either close to the machine or in the functional model. As they say though, the imperative of 1) means getting people to actually produce something, which is easier in Python.

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

#4
Sussman wrote "Structure and Interpretation of Computer Programs" which is the book formerly used in many introductory CS courses including 6.001

"The wizard book" is a great read and I recently starting flipping through it again.

PDF https://mitpress.mit.edu/sites/default/files/6515.pdf

HTML https://mitpress.mit.edu/sicp/full-text/book/book.html

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

#5
post #2

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

Another approach is to introduce newcomers to programming with a single course that: 1) uses Python to teach general programming, 2) uses JS to show how to write code that runs in a browser, and 3) demonstrates low-level programming patterns using C.

This is essentially what CS50 at Harvard does, and it seems to work well. Once a student has been exposed to these 3 languages, subsequent courses can explain how a computer works and introduce new paradigms (FP, LP).

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

#6
Eh. If you stick to software development you have the rest of your life to poke at non-ideal systems. I still have fond memories of learning Scheme and realizing that programming (specifically computationally dissecting a problem) could be a ton of fun.

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

#7
Berkeley 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 decisions.

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

#8

Sussman wrote "Structure and Interpretation of Computer Programs" which is the book formerly used in many introductory CS courses including 6.001 "The wizard book" is a great read and I recently starting flipping through it again. PDF https://mitpress.mit.edu/sites/default/files/6515.pdf HTML https://mitpress.mit.edu/sicp/full-text/book/book.html

this was posted here a few weeks ago but for posterity [1][2] is an HTML5 and EPUB3 version of SICP with 'SVGs, mathematical markup with MathML and MathJax, embedded web fonts, and syntax highlighting'. there's a PDF version[3] from the same author with decent typesetting. additionally I came across [4], SICP in an interactive textbook form with editable code fragments.

[1]: https://github.com/sarabander/sicp

[2]: http://sarabander.github.io/sicp/

[3]: https://github.com/sarabander/sicp-pdf

[4]: https://github.com/zodiac/isicp

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

#9
post #5
post #2

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

Another approach is to introduce newcomers to programming with a single course that: 1) uses Python to teach general programming, 2) uses JS to show how to write code that runs in a browser, and 3) demonstrates low-level programming patterns using C. This is essentially what CS50 at Harvard does, and it seems to work well. Once a student has been exposed to these 3 languages, subsequent courses can explain how a comp…

Yes, I think it's very reasonable to use a scripted dynamically typed language to learn control flow to start with. We tend to forget that the basics of loops and mutation are a hurdle for many people.

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

#10

Sussman wrote "Structure and Interpretation of Computer Programs" which is the book formerly used in many introductory CS courses including 6.001 "The wizard book" is a great read and I recently starting flipping through it again. PDF https://mitpress.mit.edu/sites/default/files/6515.pdf HTML https://mitpress.mit.edu/sicp/full-text/book/book.html

Could it be, however, that there is a need for introductory courses at university for those not quite at the level for SICP yet? I've worked as a web developer for years and can barely follow most of that text. If intro CS courses are provided in a more accessible format, more people will get interested and stick with it in the first place. There's always room for more advanced courses. I think that should be the goal of most universities.
Post reply on HN