Make the missing parts visible.
This map follows every numbered subsection in the original second-edition table of contents. Covered means a dedicated runnable Lispex lesson substantially addresses the subsection; partial means a relevant executable surface exists but does not yet cover the subsection as a whole.
Building Abstractions with Procedures
The Elements of Programming
- 1.1.1
Expressions
Covered - 1.1.2
Naming and the Environment
PartialNames and environments appear throughout, but there is no dedicated lesson on definition and lookup.
- 1.1.3
Evaluating Combinations
Covered - 1.1.4
Compound Procedures
Covered - 1.1.5
The Substitution Model for Procedure Application
PartialProcess shape is visible, but substitution is not reconstructed step by step.
- 1.1.6
Conditional Expressions and Predicates
PartialConditionals and predicates are used as building blocks rather than isolated in one complete lesson.
- 1.1.7
Example: Square Roots by Newton's Method
Covered - 1.1.8
Procedures as Black-Box Abstractions
PartialProcedure boundaries are taught, but the complete black-box decomposition discussion is not yet mapped.
Procedures and the Processes They Generate
- 1.2.1
Linear Recursion and Iteration
Covered - 1.2.2
Tree Recursion
Covered - 1.2.3
Orders of Growth
Covered - 1.2.4
Exponentiation
Covered - 1.2.5
Greatest Common Divisors
Covered - 1.2.6
Example: Testing for Primality
PartialThe lesson implements expmod and fixed-base Fermat checks, not the full timed-prime and probabilistic-testing development.
Formulating Abstractions with Higher-Order Procedures
- 1.3.1
Procedures as Arguments
Covered - 1.3.2
Constructing Procedures Using Lambda
PartialLambda expressions are used directly, but syntax, scope, and naming are not isolated as their own lesson.
- 1.3.3
Procedures as General Methods
Covered - 1.3.4
Procedures as Returned Values
Covered
Building Abstractions with Data
Introduction to Data Abstraction
- 2.1.1
Example: Arithmetic Operations for Rational Numbers
Covered - 2.1.2
Abstraction Barriers
Covered - 2.1.3
What Is Meant by Data?
PartialConstructor-selector contracts are demonstrated, but procedural representations are not developed fully.
- 2.1.4
Extended Exercise: Interval Arithmetic
Covered
Hierarchical Data and the Closure Property
- 2.2.1
Representing Sequences
Covered - 2.2.2
Hierarchical Structures
Covered - 2.2.3
Sequences as Conventional Interfaces
Covered - 2.2.4
Example: A Picture Language
Covered
Symbolic Data
- 2.3.1
Quotation
PartialQuoted data is used extensively, but quotation and equality are not isolated as a complete lesson.
- 2.3.2
Example: Symbolic Differentiation
Covered - 2.3.3
Example: Representing Sets
PartialOrdered-list membership and union are covered; unordered lists and tree-based sets remain unmapped.
- 2.3.4
Example: Huffman Encoding Trees
Covered
Multiple Representations for Abstract Data
- 2.4.1
Representations for Complex Numbers
Covered - 2.4.2
Tagged data
Covered - 2.4.3
Data-Directed Programming and Additivity
PartialOperation tables and an additive polynomial package are executable, but a reusable installation protocol across a complete generic system is not.
Systems with Generic Operations
- 2.5.1
Generic Arithmetic Operations
Partial2.7 Generic tagged operations2.12 Mixed-type coercionvalidation deferred2.13 Symbolic algebravalidation deferredGeneric dispatch, an explicit numeric tower, and polynomial add/multiply are executable; dropping, a broader arithmetic package set, and a complete tower remain unmapped.
- 2.5.2
Combining Data of Different Types
Covered - 2.5.3
Example: Symbolic Algebra
Covered
Modularity, Objects, and State
Assignment and Local State
- 3.1.1
Local State Variables
Covered - 3.1.2
The Benefits of Introducing Assignment
PartialStateful encapsulation and reproducibility are executable, but the section is not followed example for example.
- 3.1.3
The Costs of Introducing Assignment
PartialAliasing and order dependence are visible, while the full environment-model comparison remains incomplete.
The Environment Model of Evaluation
- 3.2.1
The Rules for Evaluation
PartialFrames and lookup are executable, but the complete environment evaluator rules are not presented together.
- 3.2.2
Applying Simple Procedures
PartialClosure creation and private locations are covered without a full frame-by-frame application visualizer.
- 3.2.3
Frames as the Repository of Local State
Covered - 3.2.4
Internal Definitions
Covered
Modeling with Mutable Data
- 3.3.1
Mutable List Structure
PartialPair mutation and aliases are visible, but cycles, destructive append, and complete mutable-list tooling are not mapped.
- 3.3.2
Representing Queues
Covered - 3.3.3
Representing Tables
Covered - 3.3.4
A Simulator for Digital Circuits
PartialThe ordered agenda and simulated time are covered, but wires, gates, and circuit propagation are not.
- 3.3.5
Propagation of Constraints
Covered
Concurrency: Time Is of the Essence
- 3.4.1
The Nature of Time in Concurrent Systems
Covered - 3.4.2
Mechanisms for Controlling Concurrency
PartialA modeled serializer and test-and-set boundary are executable; real threads, fairness, and deadlock analysis are explicitly out of scope.
Streams
- 3.5.1
Streams Are Delayed Lists
Covered - 3.5.2
Infinite Streams
Covered - 3.5.3
Exploiting the Stream Paradigm
PartialFinite demand on infinite streams is covered; the numerical stream applications are not yet mapped.
- 3.5.4
Streams and Delayed Evaluation
Covered - 3.5.5
Modularity of Functional Programs and Modularity of Objects
PartialBoth models are present in separate lessons, but their full comparative case study is not.
Metalinguistic Abstraction
The Metacircular Evaluator
- 4.1.1
The Core of the Evaluator
Partial4.1 Expressions as data4.3 Special forms4.12 Internal-definition transformationvalidation deferred4.13 Running an evaluator programvalidation deferredCore dispatch, procedure-body preprocessing, and a finite eval/apply driver are executable, but they do not yet reproduce the complete evaluator development.
- 4.1.2
Representing Expressions
Covered - 4.1.3
Evaluator Data Structures
Partial4.2 Explicit environments4.6 Explicit thunks4.12 Internal-definition transformationvalidation deferred4.13 Running an evaluator programvalidation deferredEnvironments, compound-procedure records, mutable global bindings, represented thunks, and explicit unassigned locals are executable, but the complete evaluator data-structure set is not assembled.
- 4.1.4
Running the Evaluator as a Program
Covered - 4.1.5
Data as Programs
Partial4.1 Expressions as data4.5 Derived let syntax4.12 Internal-definition transformationvalidation deferred4.13 Running an evaluator programvalidation deferredPrograms are transformed and executed as quoted data through derived let, internal-definition scan-out, and a finite top-level driver, but the complete discussion is not mapped.
- 4.1.6
Internal Definitions
Covered - 4.1.7
Separating Syntactic Analysis from Execution
Covered
Variations on a Scheme -- Lazy Evaluation
- 4.2.1
Normal Order and Applicative Order
PartialDemand and memoization are explicit, but evaluation-order examples are not developed fully.
- 4.2.2
An Interpreter with Lazy Evaluation
PartialExplicit thunks model the core representation change, not a complete lazy interpreter.
- 4.2.3
Streams as Lazy Lists
PartialStreams and explicit thunks exist in separate layers; the lazy-list evaluator integration is missing.
Variations on a Scheme -- Nondeterministic Computing
- 4.3.1
Amb and Search
Covered - 4.3.2
Examples of Nondeterministic Programs
PartialFinite alternatives, constraints, all-solution collection, and an explicit solution cap are executable, but the broader puzzle set and infinite-search policies are not.
- 4.3.3
Implementing the Amb Evaluator
Covered
Logic Programming
- 4.4.1
Deductive Information Retrieval
Covered - 4.4.2
How the Query System Works
PartialFrames, rule expansion, and a visible frontier are covered in deliberately narrow evaluators.
- 4.4.3
Is Logic Programming Mathematical Logic?
Covered - 4.4.4
Implementing the Query System
PartialMatching and bounded recursive rules are executable, but general unification, renaming, negation, and a complete query engine are not.
Computing with Register Machines
Designing Register Machines
- 5.1.1
A Language for Describing Register Machines
PartialController data and core instruction forms are present, but the complete machine-description language is not.
- 5.1.2
Abstraction in Machine Design
PartialState and controller boundaries are explicit without the full sequence of machine redesigns.
- 5.1.3
Subroutines
Covered - 5.1.4
Using a Stack to Implement Recursion
Covered - 5.1.5
Instruction Summary
PartialThe implemented executor supports a finite subset of assign, test, branch, goto, and halt.
A Register-Machine Simulator
- 5.2.1
The Machine Model
Covered - 5.2.2
The Assembler
Covered - 5.2.3
Generating Execution Procedures for Instructions
PartialInstruction execution is interpreted by one finite executor rather than generated as a general simulator procedure set.
- 5.2.4
Monitoring Machine Performance
Covered
Storage Allocation and Garbage Collection
- 5.3.1
Memory as Vectors
PartialReachability is explicit, but car/cdr vector memory and free-pointer allocation are not implemented.
- 5.3.2
Maintaining the Illusion of Infinite Memory
PartialTracing and unreachable classification are covered without copying collection or reclamation.
The Explicit-Control Evaluator
- 5.4.1
The Core of the Explicit-Control Evaluator
MissingNo dedicated runnable Lispex lesson yet.
No complete explicit-control evaluator controller is available yet.
- 5.4.2
Sequence Evaluation and Tail Recursion
MissingNo dedicated runnable Lispex lesson yet.
Tail-recursive sequence evaluation inside the explicit-control evaluator is not yet mapped.
- 5.4.3
Conditionals, Assignments, and Definitions
MissingNo dedicated runnable Lispex lesson yet.
These evaluator controller paths have no runnable machine lesson yet.
- 5.4.4
Running the Evaluator
MissingNo dedicated runnable Lispex lesson yet.
There is no end-to-end explicit-control evaluator run yet.
Compilation
- 5.5.1
Structure of the Compiler
PartialA small compiler and instruction-sequence contracts are present, not the full compiler architecture.
- 5.5.2
Compiling Expressions
PartialConstants and arithmetic expression trees are compiled; variables, assignments, definitions, and conditionals are not complete.
- 5.5.3
Compiling Combinations
PartialStack arithmetic preserves operand order, but general procedure calls and linkage are not compiled.
- 5.5.4
Combining Instruction Sequences
Covered - 5.5.5
An Example of Compiled Code
PartialSmall arithmetic examples are emitted and executed; a full recursive compiled procedure is not shown.
- 5.5.6
Lexical Addressing
Covered - 5.5.7
Interfacing Compiled Code to the Evaluator
MissingNo dedicated runnable Lispex lesson yet.
Compiled procedures and the evaluator do not yet share one callable runtime boundary.