Recommended Reading
This list extends the SICP series with the companion texts, the Scheme-family pedagogy, and the interpreter-and-PL literature SICP points at. Entries marked ✦ are the works I would hand someone starting out; the rest is depth.
The sections are short on purpose: SICP already does the heavy lifting, and most of these books extend or refine specific moves SICP makes.
The Book and Its Courses
- Structure and Interpretation of Computer Programs by Abelson, Sussman (1996, 2nd ed.)
[book]✦. Free online. mitpress.mit.edu. - MIT 6.001 Lectures by Abelson, Sussman (1986)
[course]✦. The original video lectures; age better than most 1980s software lectures. MIT OCW. - Structure and Interpretation of Classical Mechanics by Sussman, Wisdom (2015, 2nd ed.)
[book]✦. SICP applied to physics. Makes the “programming as a medium for ideas” argument concrete in a new domain. Free online. - Functional Differential Geometry by Sussman, Wisdom (2013)
[book]. Same authors, same method, applied to tensors. The clearest treatment of covariant derivatives I have read.
SICP-Adjacent Texts
Successors and parallel developments.
- How to Design Programs by Felleisen, Findler, Flatt, Krishnamurthi (2018, 2nd ed.)
[book]✦. HtDP: the structured-recipes pedagogy that grew out of SICP teaching experience. Free online. - Concrete Abstractions by Hailperin, Kaiser, Knight (1999)
[book]. A SICP-inspired text that stays with Scheme longer and handles concurrency more carefully. - The Little Schemer by Friedman, Felleisen (1995, 4th ed.)
[book]. The Socratic introduction to recursion. Short, essential. - The Seasoned Schemer by Friedman, Felleisen (1996)
[book]. Continuations and higher-order abstractions. - The Reasoned Schemer by Friedman, Byrd, Kiselyov, Hemann (2018, 2nd ed.)
[book]✦. Logic programming in the Little-Schemer style. miniKanren. - The Little Typer by Friedman, Christiansen (2018)
[book]. Dependent types in the same style.
Interpreters and Programming Languages
The direct downstream: implementing the languages that SICP teaches you to reason about.
- Essentials of Programming Languages by Friedman, Wand (2008, 3rd ed.)
[book]✦. The classic interpreter-design text; pairs perfectly with SICP Chapter 4-5. - Programming Languages: Application and Interpretation by Krishnamurthi (2017, 3rd ed.)
[book]. Modern PL-design pedagogy. Free online. - Paradigms of Artificial Intelligence Programming by Norvig (1991)
[book]✦. Classic AI algorithms implemented in Common Lisp. A graduate course in software design as much as in AI. - On Lisp by Graham (1993)
[book]. Macros and the fully-expressed Lisp-as-meta-language style. Free from the author. - Lisp in Small Pieces by Queinnec (1996)
[book]. Implementations of Scheme at multiple levels of sophistication, including ones with continuations and first-class environments. - Crafting Interpreters by Nystrom (2021)
[book]. Modern, practical, covers both a tree-walking and a bytecode interpreter. Free online.
How this list is opinionated
The thread: computation is a medium for expressing ideas, and good abstractions come from understanding the algebraic structure of what you are computing. SICP is the axiomatic statement; the rest of this list either extends the method to new domains (mechanics, types, logic) or implements the languages the method uses.
If you read three things beyond SICP itself, read Sussman-Wisdom SICM, Felleisen et al. HtDP, and Norvig PAIP. Physics, pedagogy, and AI: three domains that show the SICP approach is not about Scheme, it is about a way of thinking.