Lecture Notes

This section contains the online lectures for the course, which are expected to be read by students in preparation for recitation sessions. Each lecture contains a set of exercises which students must complete by a given date. Please see the calendar for more information on the dates the exercises are due.

Lec # Topics
L1 Introduction to Computation (PDF - 2.1 MB)
L2

Scheme Basics (PDF - 1.5 MB)

A Story about using Lisp in a Startup Company (PDF)

L3 Procedures, Processes, and Recursion (PDF - 2.1 MB)
L4 Orders of Growth and Kinds of Procedures (PDF - 1.7 MB)
L5 Data Abstraction (PDF - 2.1 MB)
L6 Higher Order Procedures (PDF - 2.1 MB)
L7 Good Programming Practices (PDF - 1.6 MB)
L8 Using Higher Order Procedures (PDF - 1.6 MB)
L9 Symbols and Quotation (PDF - 1.4 MB)
L10 Tagged Data (PDF - 2.2 MB)
L11 Advanced Data Types (PDF - 2.2 MB)
L12 Data Mutation (PDF - 1.7 MB)
L13 Trees, Graphs and Search (PDF - 2.2 MB)
L14 Graphs and Search
L15 Environment Model (PDF 1 of 2 - 1.6 MB) (PDF 2 of 2 - 2.2 MB)
L16 Object Oriented Programming I (PDF - 2.3 MB)
L17 Object Oriented Programming II (PDF - 1.7 MB)
L18 Object Oriented Programming III (PDF - 2.0 MB)
L19

Interpretation (PDF 1 of 2 - 2.5 MB) (PDF 2 of 2 - 1.3 MB)

Interpreter Code (PDF)

L20

The Meta-circular Evaluator (PDF - 2.6 MB)

Evaluator Code (PDF)

L21

Lazy Evaluation (PDF 1 of 2 - 2.0 MB) (PDF 2 of 2 - 1.2 MB)

Lazy Evaluator Code (PDF)

L22 Asynchronous Computing (PDF - 1.2 MB)
L23 Universal Machines (PDF)
L24 Geometric Folding Algorithms: Origami, Linkages, and Polyhedra
L25 Peer-To-Peer Computing Research: A Fad?
L26 Computability (PDF)