Structure & Interpretation of Computer Programs
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 as Arguments
Constructing Procedures Using Lambda
Procedures as General Methods
Procedures as Returned Values
Building Abstractions with Data
Introduction to Data Abstraction
Hierarchical Data and the Closure Property
Symbolic Data
Multiple Representations for Abstract Data
Systems with Generic Operations
Modularity, Objects, and State
Assignment and Local State
The Environment Model of Evaluation
Modeling with Mutable Data
Concurrency: Time Is of the Essence
Streams
Metalinguistic Abstraction
The Metacircular Evaluator
Variations on a Scheme -- Lazy Evaluation
Variations on a Scheme -- Nondeterministic Computing
Logic Programming
Computing with Register Machines
Designing Register Machines
A Register-Machine Simulator
Storage Allocation and Garbage Collection
The Explicit-Control Evaluator
Compilation