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) |