CS 395T: Systems Verification and Synthesis Spring 2021

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 11pm 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 20Course logistics; introduction
January 25Compilers: Reflections on trusting trust, Ken Thompson, in Communications of the ACM, August 1984
January 27Coq introduction (James)
February 1CompCert (1): Formal verification of a realistic compiler, Xavier Leroy, in Communications of the ACM, July 2009
February 3CompCert (2): Exercise: extending the CompCert compiler
February 8Compiler verification (1): Provably correct peephole optimizations with Alive, Nuno P. Lopes, et al, PLDI 2015
February 10Compiler verification (2): Towards a verified range analysis for JavaScript JITs, Fraser Brown, et al, PLDI 2020
February 15No class (winter storm)
February 17No class (winter storm)
February 22No class (winter storm)
February 24Rosette introduction (James)
March 1Compiler 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
March 3Program synthesis: Combinatorial sketching for finite programs, Armando Solar-Lezama, et al, ASPLOS 2006
March 8Synthesis-aided compilation (1): Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures, Phitchaya Mangpo Phothilimthana, et al, PLDI 2014
March 10Synthesis-aided compilation (2): Denali: A Goal-directed Superoptimizer, Rajeev Joshi, et al, PLDI 2002
March 15No class (spring break)
March 17No class (spring break)
March 22Synthesis-aided compilation (3): Stochastic Superoptimization, Eric Schkufza, et al, ASPLOS 2013
March 24Trusting compiled code: Safe Kernel Extensions Without Run-Time Checking, George C. Necula and Peter Lee, OSDI 1996
March 29Kernel verification (1): seL4: Formal Verification of an OS Kernel, Gerwin Klein, et al, SOSP 2009
March 31Kernel verification (2): Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System, Jean Yang, et al, PLDI 2010
April 5Kernel synthesis: The Synthesis Kernel, Calton Pu, et al, in Computing Systems, Winter 1988
April 7Dafny introduction (James)
April 12Full-stack verification: Ironclad Apps: End-to-End Security via Automated Full-System Verification, Chris Hawblitzel, et al, OSDI 2014
April 14Distributed systems (1): IronFleet: Proving Practical Distributed Systems Correct, Chris Hawblitzel, et al, SOSP 2015
April 19Distributed systems (2): Verdi: A Framework for Implementing and Formally Verifying Distributed Systems, James R. Wilcox, et al, PLDI 2015
April 21Concurrency: Finding and Reproducing Heisenbugs in Concurrent Programs, Madanlal Musuvathi, et al, OSDI 2008
April 26File systems (1): EXPLODE: a Lightweight, General System for Finding Serious Storage System Errors, Junfeng Yang, et al, OSDI 2006
April 28File systems (2): Using Crash Hoare Logic for Certifying the FSCQ File System, Haogang Chen, et al, SOSP 2015
May 3Reflections (1): How Amazon Web Services Uses Formal Methods, Chris Newcombe, et al, in Communications of the ACM, April 2015
May 5Reflections (2): Social Processes and Proofs of Programs and Theorems, Richard A. De Millo, et al, in Communications of the ACM, May 1979