CSE 507: Computer-Aided Reasoning for Software

CSE 507 is a graduate level introduction to research in automated reasoning techniques and their application in tools for the design, analysis, and construction of software. In the first half of the course, we will survey the logical foundations and algorithms behind SAT solvers, SMT solvers, and finite model finders. In the second half of the course, we will apply these techniques to automatic bug finding, program verification, and program synthesis. As a student in this course, you will learn how solvers work, and how to use them to build cool programming tools!

Meetings and Staff

Lectures CSE2 271, WF 13:30-14:50
Instructor Zachary Tatlock, CSE2 201
TA Sirui Lu, CSE2 152, W 15:00-16:00


Ed Discussion board
Canvas Homework submissions


All the fantastic materials for CSE 507 (slides, homework assignments, website, etc.) were designed and developed by Emina Torlak. Any errors or mistakes are due to the current instructor!