Lectures
This is the schedule of lectures, subject to change.
Date | Topic | Materials |
---|---|---|
Module 1: Introduction | ||
Wed 9/4 | Introduction | [Slides] [Notes] |
Mon 9/9 | A Calculator Language | [Notes] [Code] |
Wed 9/11 | Let Language | [Notes] [Let language] |
Module 2: Growing the Lambda Calculus | ||
Mon 9/16 | Environments and Induction | [Notes] [EnvLet] |
Wed 9/18 | The Lambda Calculus | [Notes] [LambdaCalc] |
Mon 9/23 | Church Encoding: Compiling to the Lambda Calculus | [Notes] [LambdaCalc] |
Wed 9/25 | Closures and Church Numerals | [Notes] |
Mon 9/30 | More lambda implementations: closures and call-by-need | [Notes] |
Wed 10/2 | Recursion and combinators | [Notes] [LetRec] |
Module 3: Types | ||
Mon 10/7 | Introduction to Types | [Notes] [TypedCalc] |
Wed 10/9 | The Simply-Typed Lambda Calculus | [Notes] [TypedITE] [STLC] |
Mon 10/14 | No Class: Indigenous Peoples Day | |
Wed 10/16 | Type Derivation Trees and Sum Types | [Notes] [SumTypes] |
Mon 10/21 | Runtime Safety and MicroASM | [Notes] [RuntimeSafety] |
Wed 10/23 | Runtime Safety, a Taste of OCaml | [Notes] [RuntimeSafety] |
Mon 10/28 | Polymorphism | [Notes] [System F] |
Wed 10/30 | Mutable State | [Notes] [MutLang] |
Module 3: Control & Effects | ||
Mon 11/4 | Tail Form and Continuation-passing Interpreters | [Notes] [TailForm] |
Wed 11/6 | Implementing Control Effects: Exceptions | [Notes] [ExnLang] [ExnLangLambda] |
Mon 11/11 | No Class: Veteran's Day | |
Wed 11/13 | Monads (Guest Lecture: Brianna) | [Notes] [Result.hs] [State.hs] [Choice.hs] |
Mon 11/18 | Continuation Passing Style | [Notes] |
Wed 11/20 | Programming with Continuations | [Notes] |
Mon 11/25 | Array Programming (Guest Lecture: Vadym) | |
Wed 11/27 | No Lecture (Fall Break) |