Date | Topic | Videos | PLAI | Slides | Programs & Notes | In Class | Homework | Solution |
M | | Introduction | Introduction videos | | slides | | | | |
W | | Plait | Tutorial videos | §1 | | Plait tutorial | c2f, dow | HW 0 | available |
M | | How to Design Programs | HtDP videos | | slides | HtDP | robot | HW 1 | available |
W | | Interpreters | Interp videos | §2-5 | slides | arith, parse | divide | | |
M | | Labor Day | | | | | | | |
W | | Functions and substitution | Function videos | §2-5 | slides | function | function-if0 | HW 2 | available |
M | | Binding and environments | Binding videos | §6 | slides | let, env | remove, let-q | | |
W | | Functions as values | Lambda videos | §7 | slides | lambda | example traces | HW 3 | available |
M | | Mutable state | Store videos | §8.1 | slides | box, store, store-with | swap | | |
W | | Records | Record videos | | slides | record, mutable-record | record2, mutable-record2 | HW 4 | available |
M | | Variables | Variable videos | §8.2 | slides | variable | plusplus, fluid-let | | |
W | | Encodings | Encoding videos | | slides | just-lambda | lambda+bool+pair | no HW | |
M | | Midterm 1 | | | | practice midterm | | | |
W | | Encoding recursion | Y videos | | slides | just-lambda | len, lambda+len | HW 5 | available |
M | | Recursion | Letrec videos | §9 | slides | letrec-mc, letrec, letrec-ubi | letrec-multi | | |
W | | Lazy evaluation | Lazy videos | §17.1 | slides | lazy, more-lazy | lazy-box | HW 6 | |
M | | Continuations | Continuation videos | | slides | lambda-k | lambda-pair-k, lambda-cps | | |
W | | Errors, exceptions, call/cc | Control videos | §14 | slides | error, try, letcc | trace 1, 2, 3, 4, 5 | HW 7 | available |
M | | Compilation and GC (optional) | Compilation videos, GC videos | §11 | slides, slides | 0, 1, 2, 3, 4, 5 | 4-abs, 5-abs | HW 8 | available |
W | | Objects | Object videos | §10 | slides | object | object-fallback, 2, 3, 4 | | |
M | | Classes | Class videos | | slides | class, inherit, inherit-parse | in-class | HW 9 | available |
W | | no class | | | | | | | |
M | | Midterm 2 | | | | practice midterm | | | |
W | | Types | Type videos | §15.1-2 | slides | typed-lambda | typed-box | HW 10 | available |
M | | Classes and type checking | Typed class videos | | slides | typed-class, typed-parse | equal-class | HW 13 | |
W | | Type inference | Inference videos | | slides | infer-lambda | infer-abs | HW 11 | available |
M | | Parametric polymorphism | Polymorphism videos | §15.3.1 | slides | poly-lambda | poly-box | | |
W | | Subtyping | Subtyping videos | §15.3.7 | slides | typed-record, subtype, subtype-mut | subtype-if0, subtype-if0gen | | |
M | | Typed recursion | Typed recursion videos | §15.2.3-4 | slides | typed-letrec, type-case | equals | | |
W | | S-Expressions and macros | Macro videos | §13 | slides | let-macro, gensym | list-macro | | |