I used this book for my
introductory CompSci class. It was a pretty good book, but I had a hard time understanding some of it. Definitely will require a re-read after I understand a few more things. Here's the table of contents for you viewing pleasure.
Table of Contents:
Contents
Foreword
Preface to the Second Edition
Preface to the First Edition
Acknowledgments
1 Building Abstractions with Procedures
2 Procedures and the Processes They Generate
3 Formulating Abstractions with Higher-Order Procedures
1 Procedures as Arguments
2 Constructing Procedures Using Lambda
3 Procedures as General Methods
4 Procedures as Returned Values
2 Building Abstractions with Data
1 Introduction to Data Abstraction
1 Example: Arithmetic Operations for Rational Numbers
2 Abstraction Barriers
3 What Is Meant by Data?
4 Extended Exercise: Interval Arithmetic
2 Hierarchical Data and the Closure Property
1 Representing Sequences
2 Hierarchical Structures
3 Sequences as Conventional Interfaces
4 Example: A Picture Language
3 Symbolic Data
1 Quotation
2 Example: Symbolic Differentiation
3 Example: Representing Sets
4 Example: Huffman Encoding Trees
4 Multiple Representations for Abstract Data
5 Systems with Generic Operations
1 Generic Arithmetic Operations
2 Combining Data of Different Types
3 Example: Symbolic Algebra
3 Modularity, Objects, and State
1 Local State Variables
2 The Benefits of Introducing Assignment
3 The Costs of Introducing Assignment
2 The Environment Model of Evaluation
1 The Rules for Evaluation
2 Applying Simple Procedures
3 Frames as the Repository of Local State
4 Internal Definitions
3 Modeling with Mutable Data
1 Mutable List Structure
2 Representing Queues
3 Representing Tables
4 A Simulator for Digital Circuits
5 Propagation of Constraints
4 Concurrency: Time Is of the Essence
5 Streams
1 Streams Are Delayed Lists
2 Infinite Streams
3 Exploiting the Stream Paradigm
4 Streams and Delayed Evaluation
5 Modularity of Functional Programs and Modularity
of Objects
4 Metalinguistic Abstraction
1 The Core of the Evaluator
2 Representing Expressions
3 Evaluator Data Structures
4 Running the Evaluator as a Program
5 Data as Programs
6 Internal Definitions
7 Separating Syntactic Analysis from Execution
2 Variations on a Scheme--Lazy Evaluation
1 Normal Order and Applicative Order
2 An Interpreter with Lazy Evaluation
3 Streams as Lazy Lists
1 Amb and Search
2 Examples of Nondeterministic Programs
3 Implementing the Amb Evaluator
4 Logic Programming
1 Deductive Information Retrieval
2 How the Query System Works
3 Is Logic Programming Mathematical Logic?
4 Implementing the Query System
5 Computing with Register Machines
1 Designing Register Machines
1 A Language for Describing Register Machines
2 Abstraction in Machine Design
3 Subroutines
4 Using a Stack to Implement Recursion
5 Instruction Summary
2 A Register-Machine Simulator
1 The Machine Model
2 The Assembler
3 Generating Execution Procedures for Instructions
4 Monitoring Machine Performance
3 Storage Allocation and Garbage Collection
1 Memory as Vectors
2 Maintaining the Illusion of Infinite Memory
4 The Explicit-Control Evaluator
1 The Core of the Explicit-Control Evaluator
2 Sequence Evaluation and Tail Recursion
3 Conditionals, Assignments, and Definitions
4 Running the Evaluator
5 Compilation