← 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