Structure and Interpretation of Computer Programs
View on Amazon →"Programs must be written for people to read, and only incidentally for machines to execute."
Often called the 'Wizard Book' for its dragon-themed cover, this MIT classic teaches programming as a means of expressing ideas about processes. Using Scheme as the teaching language, it emphasizes the construction of abstractions and the ability to reason about program behavior. The book transformed computer science education by focusing on how to think about computation rather than just syntax.
This book fundamentally changed how we teach programming by emphasizing conceptual understanding over language details. It introduces key ideas like metacircular evaluation, lazy evaluation, and stream processing that are essential for understanding language design and implementation. No programmer who claims mastery can skip this foundational work.
- Abstraction as fundamental to programming
- Metacircular evaluators and language design
- Data-driven and applicative programming paradigms
- Building complex systems from simple primitives
- Heavy emphasis on Scheme makes examples less immediately practical for industry work
- Dense mathematical notation can be challenging for beginners
- Somewhat dated in its choice of examples and technologies
"This book aims to teach programming as a means of expressing ideas about processes."
Edsger W. Dijkstra, Turing Award Winner, Computer Scientist"This is the best computer science book ever written."
Bill Gates, Microsoft Founder