The following represents the currently anticipated (and most ambitious) schedule. The schedule will be updated as the course evolves to reflect the actual pacing.
- Week 0
- Lecture 0 - Course Intro
- Lecture 1 - Introduction to Racket: Basics and Lists
-
Assignment 0 handed out (Intro to Racket)
- Week 1
- Assignment 0 DUE
- Lecture 2 - Recursive Structures
- Lecture 3 - Recursive Structures contd. / Intro to PageRank
- Assignment 1 handed out (PageRank in Racket)
- Week 2
- Lecture 4 - Higher-order functions and intro execution order
- Lecture 5 - Execution Order and the Stack
- Week 3
- Assignment 1 DUE
- Lecture 6 - Programming with Hashes and Folds
- Lecture 7 - Racket Lambdas and Functions
-
Exercises 2/3 handed out (rectangle exercises)
- Week 4
- Lecture 8 - Assignment 2 Intro, Okasaki-style Immutable Queues
- Lecture 9 - Lambda Calculus, method one: textual-reduction semantics
- Slides in Keynote and PDF.
- (code) Line tree in Racket
- Assignment 2 handed out (QuadTrees for inclusion/exclusion)
- Week 5
- Lecture 10 - Lambda Calculus, Big-Step Semantics (CE), Intro to Asn 3.
- Lecture 11 - Lambda Calculus via Metacircular interpreter
-
Assignment 3 handed out (Closure-creating interpreter)
- Week 6
- Monday: Assignment 2 DUE
- Lecture 12 - Metacircular interpreter exercise and CODING EXAM 0 (worth 5%)
-
Lecture 13 - Church-encoding and Intro Asn 4.
- Week 7
- Assignment 3 DUE
- Lecture 14 - Control and Continuations
- Lecture 15 - Small-step semantics (CEK)
-
Assignment 4 handed out (Church encoder)
- Week 8
- Lecture 16 - ANF and CPS
-
Lecture 17 - (March 12) MIDTERM (worth 12%)
- Week 9 — Spring break
-
Assignment 4 DUE
- Week 10
- Assignment 5 handed out (CEK-style interpreter for
call/cc
) - Lecture 18 - Top-down parsing via statepassing: livecoding
-
Lecture 19 - Big-step (metacircular) CES semantics
- Week 11
- Assignment 5 DUE
- Lecture 20 - Simply-Typed Lambda Calculus
-
Lecture 21 - Type inference for let-bound polylmorphism
- Week 12
- Assignment 6 handed out (CES-style interpreter for
set!
) - Lecture 22 - Hygienic Macros 1
-
Lecture 24 - Hygienic Macros 1
- Week 13
- Assignment 6 DUE
- Lecture 25 - Exercise and CODING EXAM 1 (worth 5%)
- Lecture 26 - MiniKanren 1
-
Assignment 7 handed out (MiniKanren)
- Week 14
- Lecture 27 - MiniKanren 2
- Lecture 28 - MiniKanren 3
-
Assignment 5 DUE (last day of class)
- Week 15
-
Lecture 29 - Course wrap-up / review
- Finals
- Final (worth 20%)