CS 395T: Systems Verification and Synthesis Spring 2023

Schedule

Paper links require a login you can find on Canvas.

Each lecture, we'll discuss a research paper in systems verification or synthesis. A few lectures will instead be introductions to a verification or synthesis tool that will be useful in understanding the papers we're reading.

For each paper, a reading response is due on Canvas at 10pm the evening before lecture. This response should be one paragraph describing what you liked and didn't like about the paper, and a list of questions for the in-class discussion.

January 10Course logistics; introduction
January 12Compilers: Reflections on trusting trust, Ken Thompson, in Communications of the ACM, August 1984
January 17Coq introduction (James)
January 19Compiler verification (1): Formal verification of a realistic compiler, Xavier Leroy, in Communications of the ACM, July 2009
January 24SAT and SMT introduction (James)
January 26Compiler verification (2): Provably correct peephole optimizations with Alive, Nuno P. Lopes, et al, PLDI 2015
January 31No class (James is travelling)
Feburary 2Homework 2 (SAT/SMT) office hours & hack session (on Zoom)
February 7Rosette introduction (James)
February 9Compiler verification (3): Specification and verification in the field: Applying formal methods to BPF just-in-time compilers in the Linux kernel, Luke Nelson, et al, OSDI 2020
February 14Program synthesis: Combinatorial sketching for finite programs, Armando Solar-Lezama, et al, ASPLOS 2006
February 16Homework 3 (Rosette) office hours & hack session (on Zoom)
February 21Synthesis-aided compilation (1): Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures, Phitchaya Mangpo Phothilimthana, et al, PLDI 2014
February 23Synthesis-aided compilation (2): Denali: A Goal-directed Superoptimizer, Rajeev Joshi, et al, PLDI 2002
February 28Synthesis-aided compilation (3): Stochastic Superoptimization, Eric Schkufza, et al, ASPLOS 2013
March 2Trusting compiled code: Safe Kernel Extensions Without Run-Time Checking, George C. Necula and Peter Lee, OSDI 1996
March 7Kernel verification (1): seL4: Formal Verification of an OS Kernel, Gerwin Klein, et al, SOSP 2009
March 9Kernel synthesis: The Synthesis Kernel, Calton Pu, et al, in Computing Systems, Winter 1988
March 14No class (spring break)
March 16No class (spring break)
March 21Dafny introduction (James)
March 23Kernel verification (2): Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System, Jean Yang, et al, PLDI 2010
March 28Homework 4 (Dafny) office hours & hack session (on Zoom)
March 30Full-stack verification: Ironclad Apps: End-to-End Security via Automated Full-System Verification, Chris Hawblitzel, et al, OSDI 2014
April 4Distributed systems (1): IronFleet: Proving Practical Distributed Systems Correct, Chris Hawblitzel, et al, SOSP 2015
April 6Distributed systems (2): Verdi: A Framework for Implementing and Formally Verifying Distributed Systems, James R. Wilcox, et al, PLDI 2015
April 11Concurrency: Finding and Reproducing Heisenbugs in Concurrent Programs, Madanlal Musuvathi, et al, OSDI 2008
April 13File systems: Using Crash Hoare Logic for Certifying the FSCQ File System, Haogang Chen, et al, SOSP 2015
April 18Reflections (1): How Amazon Web Services Uses Formal Methods, Chris Newcombe, et al, in Communications of the ACM, April 2015
April 20Reflections (2): Social Processes and Proofs of Programs and Theorems, Richard A. De Millo, et al, in Communications of the ACM, May 1979