Instructor: Ronghui Gu (ronghui.gu@columbia.edu)
Office: 515 CSB
Lectures: Mon, 4:10pm ~ 6:00pm
Location: 825 Mudd Building
Office hours: Thu (2:00pm ~ 3:00pm) and by appointment
This course is a graduate seminar on research in the verification of system software. The goal of the class is to get the students to build provably correct software. The structure of the class will consist of students presenting research papers during lecture, and students working on a significant research project. We expect students to start working on the project in the first week or two, and continue for the entire semester, culminating in a draft research paper. Examples of project include building a certified file system, simple OS kernel, hypervisor, database system, etc. We expect projects will build on tools such as Coq, and Z3. To get students up to speed with these tools, we will offer several tutorial lectures on Coq, using parts of the Software Foundations textbook.
The materials are borrowed from the Software Foundations textbook. If you are not familiar with Coq already, you should start by working on the following chapters ASAP. Make sure you actually do all of the exercises!
09/09 Intro (Lecture Notes 0)
09/16 Program Logic I (for sequential program)
09/23 Certified File System
09/30 Push-button Verification
10/07 Verification of Information-flow Security
10/14 Certified OS Kernel I: Sequential CertiKOS
10/21 Verification of Security Monitor
10/28 Verification of Smart Contracts
11/04 Holiday (no class)
11/11 Program Logic II (for concurrent program)
11/18 Linearizability
11/25 Certified Concurrent File System
12/02 Certified OS Kernel II: Concurrent CertiKOS
12/09 Verification of Quantum Programs
Program Logic I (for sequential program)
Certified File System
Push-button Verification
Verification of Information-flow Security
Verification of Smart Contracts
Verification of Software Stack
Verification of Distributed System
Verification of OS Kernel: seL4
Certified Compiler
Certified OS Kernel I: Sequential CertiKOS
Verification of Security Monitor
Program Logic II (for concurrent program)
Linearizability
Certified Concurrent File System
Certified OS Kernel II: Concurrent CertiKOS
Verification of Quantum Programs