Recent advances in formal methods have demonstrated that it is practical to verify realistic, large scale systems, and even to automatically synthesize their implementations. This course will examine research papers on applying formal verification and program synthesis techniques to build reliable systems software, including compilers, operating systems, and distributed services. In parallel, we will conduct a hands-on survey of the landscape of verification and synthesis tools and languages.
Instructor: James Bornholt
Lectures: Tuesday and Thursday, 2:00pm–3:30pm, GDC 6.202 and Zoom (details on Canvas)
Office Hours: By appointment