Structure and Interpretation of Computer Programs
Building Abstractions with Procedures
Building Abstractions with Data
Modularity, Objects and State
Metalinguistic Abstraction
Computing with Register Machines
Building Abstractions with Procedures