Structure and Interpretation of Computer Programs(2022 JavaScript Edition)¶
Estimated time to read: 2 minutes
Computer science is not about computers; it is the art of constructing computational mental models using abstraction to control complexity.
Why do we say SICP is the mental model of programmer¶
SICP explores the abstractions underlying computer programs—their models of computation. Starting with primitive functions and data, it shows how closure under combination allows us to construct increasingly complex processes and structures, while introducing the abstractions needed to manage that complexity.
So its deepest subject is not any particular language. It is:
How simple computational elements can be combined, abstracted and interpreted to construct complex models of processes.
In this sense, SICP teaches you to see programming languages as collections of computational primitives and composition rules, rather than merely as syntax.
Ordinary programmer VS. Advanced programmer¶
ordinary programmer=uses models implicitly through syntax
advanced programmer=recognizes, selects and combines models explicitly
Their advantage is not merely possessing “more complicated” models. It is having more appropriate models and knowing their boundaries.
What is Programming¶
Programming is the construction of precise descriptions of processes, is a intellectual laboratory for studying the construction, execution, composition, and revision of processes. A process is a rule-governed transformation of state through time.
Many intellectual disciplines can be understood as different ways of modelling, constraining, observing, and optimizing transformations through a state space.state-space dynamics under information, constraints, and objectives
What does this book explain?¶
Overall, SICP covers foundational concepts rather than advanced application-specific techniques. Using mathematics, logic and rigorous reasoning, it reconstructs how computational processes are built and executed. This provides an additional layer of abstraction for understanding programming—one that is largely independent of any particular domain, language or programming paradigm.
Its major contribution is adding a semantic layer between syntax and implementation.
MIT’s historical four-subject EECS common core¶
| Number | Subject | Main focus |
|---|---|---|
| 6.001 | Structure and Interpretation of Computer Programs | Programming, abstraction, interpreters, and computational processes |
| 6.002 | Circuits and Electronics | Electrical circuits, transistors, amplifiers, and circuit dynamics |
| 6.003 | Signals and Systems | Linear systems, signals, convolution, Fourier analysis, and transforms |
| 6.004 | Computation Structures | Digital logic, computer architecture, processors, and memory systems |