← back to reading

🪄 Programming (SICP)

Based on Abelson & Sussman, Structure and Interpretation of Computer Programs, licensed CC BY-SA 4.0.

Python translations draw from DeNero, Composing Programs, licensed CC BY-SA 3.0.

Scheme REPLs run in the browser. Python equivalents in collapsible blocks.

eval apply expression subexpressions The eval/apply loop — the heart of every interpreter.
Chapter
1. Expressions ★ Prefix notation, environment model, and the substitution rule 🪄
2. Recursion & Iteration ★ Recursive processes vs iterative processes — shape, not syntax 🪄
3. Higher-Order Functions ★ Functions as arguments and return values — abstraction over patterns 🪄
4. Data Abstraction ★ Pairs, constructors, selectors — separating use from representation 🪄
5. Hierarchical Data ★ Lists, trees, and the closure property of cons 🪄
6. Symbolic Data ★ Quotation, symbolic differentiation, and sets as data 🪄
7. Multiple Representations Tagged data, data-directed programming, and message passing 🪄
8. Generic Operations Coercion, type towers, and a generic arithmetic system 🪄
9. Assignment & State ★ set! breaks substitution — the environment model replaces it 🪄
10. Environment Model Frames, bindings, and how closures really work 🪄
11. Mutable Data ★ set-car!, set-cdr!, queues, and identity vs equality 🪄
12. Concurrency Serializers, deadlock, and the problem with shared state 🪄
13. Streams ★ Lazy lists — infinite sequences without mutation 🪄
14. Metacircular Evaluator ★ A Scheme interpreter written in Scheme — eval and apply 🪄
15. Lazy Evaluation Normal-order evaluation — thunks and memoization 🪄
16. Nondeterministic Computing amb and backtracking search — logic as programming 🪄
17. Logic Programming A query language — unification and pattern matching 🪄
18. Register Machines Designing machines — data paths and controllers 🪄
19. Register Machine Simulator Simulating machines in software — the assembler 🪄
20. Storage & Garbage Collection Memory as vectors, stop-and-copy GC 🪄
21. Explicit-Control Evaluator The metacircular evaluator, compiled to a register machine 🪄
22. Compilation Compiling Scheme to register-machine code 🪄

📺 Video lectures: MIT 6.001 SICP Lectures

Neighbors