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 |
Ad-hoc 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 |
Non-local control flow; Delimited Continuations
|
An argument against call/cc
Go-to statement considered harmful
|
03/01 |
Meta-Programming 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 Wrap-up
|
|