Lectures

This is the schedule of lectures, subject to change.

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