01/09 
Introduction 


Functional Programming in Haskell


01/11 
Basic Data Structures

LYaH Chapter 2

01/16 
Inductive Data Structures

LYaH Chapter 8

01/18 
Recursion + Higher Order Functions

LYaH Chapters 4,
5

01/23 
Parametric Polymorphism

LYaH Chapters 3,
6
Homework 1 (Due 2/2)

01/25 
Adhoc Polymorphism using Type Classes
Embedded Domain Specific Languages

LYaH Chapter 8
OurSQL EDSL

01/30 
Purity + Reasoning about Programs Equationally


02/01 
Free Theorems and Haskell Revue

Theorems for Free!


Dynamic Semantics


02/06 
Concrete and Abstract Syntax; Binding scope

TAPL Chapters 3.2; 4.1; 5.1
Homework 2 (Due 2/16)

02/08 
Operational Semantics

TAPL Chapters 3.4; 3.5; 4.2

02/13 
Evaluation Strategies

TAPL Chapter 5

02/15 
Imperative Languages; Monads

Winskel, Chapter 2
LYaH Chapter 12

02/20 
Cultural Enrichment: Equational Reasoning in Coq

SF Chapter 5

02/22 
Monads, continued

LYaH Chapter 13
Homework 3 (Due 3/6)

02/27 
Nonlocal control flow; Delimited Continuations

An argument against call/cc
Goto statement considered harmful

03/01 
MetaProgramming via Partial Evaluation

A tutorial on partial evaluation

03/06 
Reasoning about programs inductively;
Midterm Review

Sample Midterm

03/08 
Midterm



Static Semantics


03/13 
Spring Break!!


03/15 
Spring Break!!


03/20 
Type System Basics

TAPL Chapter 9 
03/22 
Type Checking and Type Inference

TAPL Chapter 22 
03/27 
Type Checking and Type Inference, Continued

TAPL Chapter 22
Homework 4 (Due 4/6)

03/29 
Language Metatheory: Proving Type Safety

TAPL Chapter 3
TAPL Chapter 8
TAPL Chapter 9

04/03 
Polymorphic Lambda Calculus

TAPL Chapter 23

04/05 
Dynamic Typing



Modularity and Abstraction


04/10 
Abstract Data Types; Representation
Invariants

TAPL Chapter 24 
04/12 
Representation Independence


04/17 
Objects vs. ADTs

On Understanding Data Abstraction, Revisited

04/19 
Subtyping

TAPL Chapter 15


Course Finale


04/24 
Memory Safety, Affine Types, and Rust

Ownership
in Rust
A Taste of Linear Logic

04/26 
Course Wrapup

