CS 839: Systems Verification
This is a graduate-level class on systems verification: how to mathematically prove the correctness of programs with machine-checked proofs. A core technique throughout the class is separation logic, which we will use to reason about real-world programs written in Go, including using loop invariants, reasoning about slices, pointer-based data structures, and concurrency. Programming assignments will involve proving theorems with the Rocq prover.
Course info
Instructor: Tej Chajed ‹chajed@wisc.edu›
Lecture: Tue/Thu 1-2:15pm
Classroom: Morgridge Hall 2538
Office hours: Mon/Thu 3-4pm, in Morgridge 7572
We'll use Canvas for submitting assignments and Piazza for questions.
The source of this website is on GitHub at tchajed/sys-verif-fa25. Feel free to submit bug reports and PRs. Your fellow students as well as students in future iterations of this class will thank you!
Calendar
Note: plans two weeks out might change.
The hand-written iPad notes (for lectures 1-21) are available at board-notes.pdf.
| Date | Lecture | Reading | ||
|---|---|---|---|---|
| 1 | Thu Sep 4 | Introduction: slides | notes | |
| 2 | Tue Sep 9 | Rocq introduction: slides | notes, syllabus | bring a laptop and follow setup |
| 3 | Thu Sep 11 | Induction: slides | notes | |
| 4 | Tue Sep 16 | Abstraction: slides | notes | |
| 5 | Thu Sep 18 | Hoare logic (part 1): slides | notes | theory lecture |
| 6 | Tue Sep 23 | Hoare logic (part 2): slides | same notes | theory lecture |
| 7 | Thu Sep 25 | Separation logic (part 1): slides | notes | theory lecture |
| Mon Sep 29 | Assignment 1 due (11pm) | |||
| 8 | Tue Sep 30 | Separation logic (part 2): slides | same notes | theory lecture |
| Thu Oct 2 | No class (Tej is traveling) | |||
| 9 | Tue Oct 7 | Iris Proof Mode (part 1) | notes | bring a laptop |
| Thu Oct 9 | No class (Tej is sick) | |||
| 10 | Tue Oct 14 | Iris Proof Mode (part 2) | same notes | bring a laptop |
| 11 | Thu Oct 16 | Modeling Go programs: slides | notes | |
| Mon Oct 20 | Assignment 2 due (11pm) | |||
| 12 | Tue Oct 21 | Ownership (part 1) | notes | bring a laptop |
| 13 | Thu Oct 23 | Ownership (part 2) | same notes | bring a laptop |
| 14 | Tue Oct 28 | Loop invariants (part 1) | notes | |
| 15 | Thu Oct 30 | Loop invariants (part 2) | same notes | |
| 16 | Tue Nov 4 | Persistence | notes | |
| 17 | Thu Nov 6 | Concurrency intro: slides | notes | |
| 18 | Tue Nov 11 | Lock invariants | notes | |
| 19 | Thu Nov 13 | Ghost state | notes | |
| Mon Nov 17 | Assignment 3 due (11pm) | |||
| 20 | Tue Nov 18 | Atomic specs (part 1) | notes | |
| 21 | Thu Nov 20 | Atomic specs (part 2) | same notes (also hashmap demo) | |
| 22 | Tue Nov 25 | In-class work | assignment 4 | bring a laptop |
| Thu Nov 27 | No class (Thanksgiving) | |||
| 23 | Tue Dec 2 | Property-based testing | notes | |
| 24 | Thu Dec 4 | Liveness | notes | |
| 25 | Tue Dec 9 | Course wrap-up | notes | |
| Thu Dec 11 | Assignment 4 due (11pm) |
Resources
See the resources page.
Note for instructors
If you're interested in this class please send me an email at chajed@wisc.edu. I'd love to hear what you think!
The course material (including this website) is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License. See CC-BY-NC 4.0 for the text of the license.
