The schedule for future lectures is tentative.
Date | Lecture Topic | Lecture Notes | Due | Extras |
9/3 | Overview; Introduction to Scheme |
|
|
Scheme programming overview shapes datatypes code
|
9/10 | First-Class Functions; Data Representations of Languages |
The basic interpreter
|
hwk 1 (option 1) hwk 1 - macros (option 2)
|
|
9/17 | Implementing a first-order language |
Substitution Local bindings; implementing let
|
hwk 2
|
|
9/24 | Closures, Mutation, and Recursion |
Functions and Closures Mutation Recursion
|
|
|
10/1 | Implementing Recursion; Exceptions, Contexts and let/cc |
Understanding Recursion Implementing Recursion Contexts and let/cc
|
hwk3
|
|
10/8 | Continuations |
Implementing Exceptions Escaping without let/cc
|
|
let/cc and exceptions code coroutines code from notes in detail Notes on CPS Examples of CPS Slides on continuations and web programming
|
10/15 | Semantics and Lambda Calculus |
Language Semantics Lambda Calculus
|
hwk4 (optional advanced exercises)
|
store passing code interpreter with let/cc
|
10/22 | Compilation |
Compilation Notes
|
Midterm Exam
|
Programs from the Notes
|
10/29 | Garbage Collection I |
Bridging Compilers to GC Paul Wilson's GC survey: sections 1, 2 (except 2.5)
|
hwk5
|
filter-pos with constant memory space ftree with checkpointing on names
|
11/5 | Garbage Collection II |
Wilson's survey: sections 4.1, 4.5, 4.6 (scan), 6.1, 6.2, 7.1, 7.2, 9
|
|
conservative collection for C++
|
11/12 | Introduction to Types |
Intro to Types notes
|
hwk6
|
|
11/19 | Types II -- Type Inference |
Explicit Polymorphism Type Constraints Type Inference
|
hwk7
|
|
11/26 | No Class -- Thanksgiving Week |
|
|
|
12/3 | Types III -- Polymorphism |
Implicit Polymorphism
|
hwk 8
|
|
12/10 | Scripting Languages |
|
Essay Rewrite Final Exam
|
|
12/13 | No Class -- End of Semester |
|
Pre-midterm makeup homework
|
|