CIS 670, Fall 2015: Verified Systems Software
This Fall's instance of CIS 670 is a hands-on research seminar on Verified
Class sessions will consist mostly of presentations of recent papers in the
area, but the main goal of the class is to give students experience in
building provably correct software, using Coq or another proof assitant of
their choice (e.g., F*, Dafny, or Isabelle). During the first couple of
weeks, students will choose a topic for a semester-long project, which will
be their main focus for the class; examples might include building a simple
certified file system, distributed key-value store, in-kernel interpreter,
OS kernel, database core, etc.
Prerequisites: Students should be familiar with most of the material
from CIS500 (Software Foundations); in particular, you should be reasonably
fluent in the use of some proof assistant such as Coq. If there is
sufficient interest, we may offer an intensive "Coq boot camp" at the
beginning of the semester to get people who have not used Coq up to speed.
Instructor: Benjamin Pierce
We will meet Tuesdays and Thursdays from noon to 1:30 in Towne 307.
- Comprehensive Formal Verification of an OS Microkernel,
Klein et al, TOCS 2014.
- Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System,
Yang et al, PLDI 2010.
- Ironclad Apps: End-to-End Security via Automated Full-System Verification,
Hawblitzel et al, OSDI 2014.
- Formal verification of a realistic compiler,
Xavier Leroy, CACM 2009.
- Jitk: A Trustworthy In-Kernel Interpreter Infrastructure,
Wang et al, OSDI 2014.
- From Network Interface to Multithreaded Web Applications,
Adam Chlipala, POPL 2015.
- Deep Specifications and Certified Abstraction Layers,
Gu et al, POPL 2015.
- RockSalt: Better, Faster, Stronger SFI for the x86,
Morrisett et al, PLDI 2012.
- User-Guided Device Driver Synthesis,
Ryzhyk et al, OSDI 2014.
- Compositional CompCert,
Stewart et al, POPL 2015.
- Toward a Verified Relational Database Management System,
Malecha et al, POPL 2010.
- Verdi: A Framework for Implementing and Formally Verifying Distributed Systems,
Wilcox et al, PLDI 2015.
- CakeML: A verified
implementation of ML,
Kumar, Ramana, et al. POPL 2014.
Ideas for projects