COMP 507: Computer-Aided Program Design: Fall 2013

Lectures, resources and assignments | Piazza website for course

Course description

Software is getting more and more complex by the day; at the same time, our reliance on software in all areas of our lives is increasing. In this world, it is more than important to make software more reliable. The field of computer-aided program design takes on this challenge, giving automated methods for reasoning about the correctness of programs, and constructing programs that are correct (or at least "well-behaved") by construction.

This course will attempt a broad but hands-on study of such techniques. Topics will include the main approaches to algorithmic reasoning about programs, and will cover theoretical foundations as well as practical tools.



This class meets at Duncan Hall 1042, on Tuesdays and Thursdays, 4:00-5:15 pm.


Swarat Chaudhuri. Email: Office hours: Immediately after class, at 3103 Duncan Hall.


Your grade in this course will be based on several homework assignments, a final project, and your participation in in-class activities.

The assignments will involve a combination of theory and programming, and are to be done individually. The assignments will be evaluated by the instructor and also peer-reviewed by fellow students. The final project will require you to: (a) build a piece of software for algorithmic verification or synthesis, or alternatively run a case study using existing tools; and (b) write a project report..

Course material

PDF slides for lectures, readings, and assignments will be made available here. Note that we are going to use the whiteboard as the primary medium of instruction. The lecture slides will only serve as a "guide rail" for the lecture; do not expect reading them to be a substitute for coming to class.