1 Building Abstractions with Procedures 2 Building Abstractions with Data 3 Modularity, Objects, and State 4 Metalinguistic Abstraction 5 Computing with Register Machines