Lecture Notes

SES # TOPICS
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 This resource may not render correctly in a screen reader.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 This resource may not render correctly in a screen reader.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)