| Unit 1: Intro to Functional Programming & Operational Semantics |
| 1 | Introduction to Functional Programming and Types (PDF - 2.8MB) |
| 2 | Lambda Calculus (PDF) |
| 3 | Big-Step vs. Small-Step Semantics and the λLet Calculus (PDF) |
| 4 | Coq Crash Course (Examples in Operational Semantics) (PDF) |
| Unit 2: Type Theory |
| 5 |
Introduction to Simple Types (PDF) Coq Examples (V)
|
| 6 |
Hindley-Milner Type Inference and Polymorphic Types (PDF)
|
| 7 | Algebraic Data Types & Their Ingredients: Product, Sum, and Recursive Types (PDF) |
| 8 | Type Classes and Subtyping (PDF) |
| Unit 3: Types for Imperative Programs |
| 9 | Monads (PDF) |
| 10 | Typing of Imperative Programs (PDF) |
| 11 | Verification of Complex Properties with Types: From Information Flow to Race Detection (PDF) |
| Unit 4: Axiomatic Semantics |
| 12 | Intro to Axiomatic Semantics (PDF) |
| 13 | Verification Condition Generation (PDF) |
| 14 | Total Correctness and Termination (PDF) |
| 15 | Separation Logic (PDF) |
| 16 |
Axiomatic Semantics for Concurrency: Rely-Guarantee & Concurrent Separation Logic (PDF)
|
| Unit 5: Abstract Interpretation |
| 17 | Dataflow Analysis, Lattices, Fixed Points (PDF) |
| 18 | Abstract Interpretation, Galois Connections (PDF) |
| 19 | Abstract Interpretation, Galois Connections (cont.) (PDF) |
| 20 | The Heap: Inferring Loop Invariants about Data Structure Shape (PDF - 1.1MB) |
| Unit 6: Model Checking |
| 21 | Intro to Models and Properties (PDF) |
| 22 | Temporal Logic (PDF - 1.1MB) |
| 23 | Explicit State Model Checking (PDF) |
| 24 | Symbolic Model Checking (PDF) |
| 25 | Software Model Checking with Abstraction Refinement (PDF - 1.4MB) |
| 26 | From Model Checking to Synthesis (PDF - 1.1MB) |