Why MIT switched from Scheme to Python (2009)
Scheme & SICP as Teaching Tools
- Many recall Scheme/SICP as transformative: it forces understanding of recursion, abstraction, first-class functions, metacircular interpreters, and building interpreters/compilers.
- Scheme’s small, transparent core lets students “understand the whole language” in a semester and see computation close to math and lambda calculus.
- Several say starting with Scheme changed how they think about programs and made them better later in Java/Python/etc. It also levels the field since few arrive knowing it.
Critiques of Scheme and Its Relevance
- Others found Scheme demotivating and too academic, with almost no industry ecosystem and few real jobs.
- Some argue Lisp/Scheme are “failed language families” in practice: powerful but rarely chosen when people are free to pick tools.
- There’s concern that some alumni treat exposure to exotic languages as proof of superiority, which can be grating in teams.
Python’s Appeal and Tradeoffs
- Python is seen as pragmatic: ubiquitous, approachable, and with libraries (e.g., robotics) that directly support the kind of projects modern intro courses want.
- It doubles as a practical tool students can reuse in research, scripting, and non-CS fields.
- Critics note Python is actually large and messy compared to Scheme; you can define a clean “baby Python,” but the full language and ecosystem are hard to reason about rigorously.
Broader Shift in CS Education
- Many see MIT’s move as part of a general trend from “pure CS” toward more vocational, software-engineering–style curricula and student demand for “marketable skills.”
- Debate centers on whether universities should teach timeless concepts first (possibly in niche languages) versus immediately useful tools.
- Some propose dual tracks: a deep, theory-heavy honors path (Scheme/Haskell/Racket/SML) and a broader, practical intro (Python/Java).
MIT-Specific Context & Philosophy
- One long historical comment explains the shift was less “Scheme → Python” and more “four deep-dive ‘languages of engineering’ courses → two broad survey courses” (robots, communication, etc.), with Python used lightly inside that new structure.
- Sussman’s lament about moving from building systems you fully understand to stitching together opaque libraries is widely discussed: some see it as out-of-touch nostalgia; others see it as accurately describing modern “glue code” engineering and a real loss in intellectual rigor.