- Building Abstractions with Procedures
- The Elements of Programming
- Expressions
- Naming and the Environment
- Evaluating Combinations
- Compound Procedures
- The Substitution Model for Procedure Application
- Conditional Expressions and Predicates
- Example: Square Roots by Newton’s Method
- Procedures as Black-Box Abstractions
- Procedures and the Processes They Generate
- Linear Recursion and Iteration
- Tree Recursion
- Orders of Growth
- Exponentiation
- Greatest Common Divisors
- Example: Testing for Primality
- Formulating Abstractions with Higher-Order Procedures
- The Elements of Programming
- Building Abstractions with Data
- Introduction to Data Abstraction
- Hierarchical Data and the Closure Property
- Symbolic Data
- Multiple Representations for Abstract Data
- Representations for Complex Numbers
- Tagged data
- Data-Directed Programming and Additivity
- Systems with Generic Operations
- Generic Arithmetic Operations
- Combining Data of Different Types
- Example: Symbolic Algebra