🪄 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.
| 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
- 🐱 Category Theory — functors and monads from SICP's higher-order functions
- ⚙ Algorithms — SICP's register machines and compilation connect
- 🔑 Logic — SICP chapter 4 builds a logic programming evaluator
- 🖥 Operating Systems — concurrency and streams reappear in OS design