Skip to main content

Reference and Selective Reading

You do not need to read SICP front-to-back for this module. Use the concept and practice pages first. Open these local chunks only when you need alternate exposition, worked examples, or depth on a specific step.

Source Roles

SourceRoleWhy it is here
SICP (Abelson, Sussman, Sussman)Primary teaching sourceThe spine of every cluster. All primary concepts point to specific SICP sections
The C Programming Language (K&R)ContrastShows what "no closures, no first-class procedures" looks like and why abstractions in C are awkward
Computer Organization and Design (Patterson & Hennessy)ContrastWhere interpretation bottoms out in real machines (relevant to Concept 12)
Norvig -- lispy (external)Primary externalThe minimal-viable interpreter in Python, directly supports Concepts 10 and 11
Nystrom -- Crafting Interpreters (external)Primary externalA full treatment of tree-walking and bytecode VMs
MIT Press SICP online (external)Authoritative externalCanonical source for any SICP passage

Read Only If Stuck

Cluster 1: Abstraction as the Engineering Move

Cluster 2: Higher-Order Procedures and Closures

Cluster 3: Evaluation Models

Cluster 4: Metacircular and Interpreter Design

Cluster 5: State, Mutation, and Language Design

Optional Deep Dive

Concept-to-Source Map

Primary conceptBest source if stuckWhy this source
01 Procedural abstractionSICP 1.1.8 Procedures as black-box abstractionsExplicit statement of the black-box idea
02 Data abstraction + ADTsSICP 2.1 Introduction to data abstractionRational numbers, fully worked
03 Layering abstractionsSICP 2.4.1 Representations for complex numbersTwo representations behind one barrier
04 First-class procedures / HOFsSICP 1.3.1 Procedures as argumentssum, integral, Simpson
05 Closures + lexical scopeSICP 1.3.4 Procedures as returned valuesaverage-damp, deriv, newton
07 Substitution vs environment modelSICP 3.2.1 The rules for evaluationThe precise rule of extension
09 Tail callsSICP 1.2 Procedures and processesProcess vs procedure distinction
10 eval + applySICP 4.1.1 The core of the evaluatorThe template for the interpreter
11 Writing a small Lisp interpreterSICP 4.1.4 Running the evaluator as a programThe wiring into a usable REPL
13 Assignment: cost of mutationSICP 3.1.3 Costs of introducing assignmentSharpest statement of what is lost