COS 516/ELE 516: Automated Reasoning about Software, Fall 2018

Course information

Semester: Fall 2018
Lectures: Monday & Wednesday 1:30 - 2:50pm
Location: CS 301
Instructor: Zak Kincaid, Office hours: Tuesday 4-5pm in COS 219, or by appointment
Teaching assistant: Jake Silverman, Office hours: Monday 3:30-4:30pm and Thursday 2-3pm, both in Friend 010.
Links: Piazza, Calculus of Computation


An introduction to algorithmic techniques for reasoning about software. Basic concepts in logic-based techniques including model checking, invariant generation, symbolic execution, and syntax-guided synthesis; automatic decision procedures in modern solvers for Boolean Satisfiability (SAT) and Satisfiability Modulo Theory (SMT); and their applications in automated verification, analysis, and synthesis of software. Emphasis on algorithms and automatic tools.


This is a tentative schedule that will be changed during the course.

Date Topics Readings Assignments
Sept 12 Introduction
Sept 17,19 Propositional logic and SAT. Bradley/Manna Ch 1 PS1 posted
Sept 24 SAT solving. [R1]
Sept 26 Finite transition systems.
Oct 1 First-order logic. Bradley/Manna Ch 2 PS2 posted
Oct 3 Satisfiability modulo theories. Bradley/Manna Ch 3
Oct 8 Reasoning about quantifiers. Bradley/Manna Ch 7
Oct 10 Programs, operational semantics. PS3 posted
Oct 15 Reasoning about program behavior. Bradley/Manna Ch 4-6
Oct 17 Reasoning about program behavior cont'd.
Oct 22 Invariant inference. Bradley/Manna Ch 12 Project outline due.
Oct 24 Midterm exam.
Oct 29,31 Fall break
Nov 5,7 Software model checking. PS4 posted.
Nov 12 Proving termination.
Nov 14 Program synthesis.
Nov 19 Meta-theory of first-order logic. Project Interim Report due
Nov 26 Separation logic. PS5 posted
Nov 28 Temporal logic.
Dec 3,5 Project presentations
Dec 10,12 Project presentations

Grading policies

Your final grade will be weighted as follows:
Component Weight
Homework and Assignments 40%
Class Project 30%
Midterm Exam 25%
Participation 5%
We encourage you to attend the lectures and to participate actively in the course. These will be components of your Participation grade.

Late policy


For homework and assignments, discussions with others are permitted, where the goal is to aid your understanding. However, the submitted work/code should be entirely your own.
For code submissions, please also submit a README file where you should name the individuals that you received help from or provided help to. Also briefly mention the nature of the help you received or provided.
For the class project, you can work in teams of two. Discussions with your team-mate and with others are permitted.
For any of these (homework, assignments, and class project), please DO NOT copy or get solutions from resources outside the course.
If you have any questions or concerns, please discuss these policies with the instructors.
Conduct during in-class exams is covered by the University Honor Code.