Fall 2019

COMS E6998 Formal Verification of System Software

General Information

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.

This course is about …

This course is not about …

v.s. CSEE E6863 Formal Verification HW/SW Systems

Prerequisites

Textbook

Coq Tutorial Lectures

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!

Grades

TENTATIVE Syllabus (Subject to change!)

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

Reading list ideas

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