CS 560: Reasoning About Programs
WALC 3154 |
11:30-12:20 MWF |
|
about
Instructor:
bendy at purdue.edu
Office Hours: Mondays 12:30-2:00p in LWSN 2116M
Teaching Assistant:
wagne279 at purdue.edu
Office Hours: Thursdays, 11:00a-12:30p in TBD
Course Description:
This is a graduate course on the logical
foundations and algorithmic techniques used to
ensure that programs do what they are supposed
to do. We will focus on two key aspect of
automated reasoning:
-
Specification:
logics to define the expected
behavior of a program in a
machine-readable form,
-
Verification:
methods to automatically check if a program
meets its specification.
The course will be an exploration of both the
theory and practice of automated
computer-aided reasoning, and its application
to reasoning about program behavior. Our
exploration will cover a breadth of reasoning
techniques and tools currently in use,
e.g. SAT/SMT solvers, examining them from the
both an implementation and user perspective.
|
logistics
Lectures:
Lectures will be Mondays, Wednesdays, and
Fridays in WALC 3154, which students are
expected to attend. If you are sick or
otherwise unable to attend a lecture, please
let the instructor know as soon as
possible. All lecture materials, including
slides and related readings, will be made
available on brightpsace after class.
Office Hours:
Each Monday, the instructor will have office
hours from 12:30-2:00p in LWSN 2116M, and the TA
will hold office hours at some point too! In the
event that students cannot attend scheduled
office hours, they should contact the instructor
via email to schedule a time to meet
individually.
Homeworks:
Homeworks will be posted (roughly) every two
weeks, according to the course schedule. The
written portion of each homework is to be
submitted via Gradescope, and the programming
portions should be submitted via
Brightspace. All homeworks are due by 6PM on
their assigned due date. Make sure that any
programs compile without errors (and
ideally without any warnings). If they do not,
they will not be graded. Everyone will
receive three courtesy late days for the
semester. There is no need to contact the
instructor or the TA to use a late day-- they
are automatically applied as soon as the due
date has passed. Once all these days have been
used, students will need to notify the
instructor or the TA ahead of time with an
explanation and plan for completion. These
requests will be accepted at my discretion and
may include a point penalty of 5% per day
late. Asking for an extension does not guarantee
it will be granted.
Course Project:
The course project has teams of 2-3 students
toimplement a project of their choosing. As
these projects are less structured than the
homeworks, there will be three milestones to
help keep everyone on track. A list of project
ideas and a timeline will be posted on
Brightspace.
|
success
How to Succeed in this Course
In order to be successful, students should be familiar with:
- Programming in an imperative language,
e.g. Java / C / Python, etc.
- Basic logic and proofs techniques found
in an undergraduate discrete math course like
CS182: sets, relations, functions, proof by
induction, proof by case analysis; recursion;
and propositional logic.
- The sorts of basic data structures and
algorithms encountered in an undergraduate
course like CS 251, e.g. lists, trees, heaps,
graphs, sorting, graph traversals, and
search.
We'll briefly review important concepts as
needed, but this will be a refresher and not an
introduction.
|
resources
Course Texts:
The main textbook for the course will be:
-
Bradley, Aaron R., and Zohar. Manna. The
Calculus of Computation: Decision Procedures with Applications to
Verification. 1st ed. 2007.
Online access from Purdue libraries
This will be supplemented with a variety of
sources, including:
-
Nielson, Flemming, Hanne Riis Nielson, and
Chris Hankin. Principles of Program Analysis. 1st ed. 1999.
Online access from Purdue libraries
-
Biere, Armin. Handbook of
Satisfiability. 2009.
Online access from Purdue libraries
-
Clarke, Edmund M. et al. Handbook of Model
Checking. Ed. Edmund M. Clarke et al. 1st
ed. 2018.
Online access from Purdue libraries
-
Cousot, Patrick. Principles of Abstract
Interpretation. 2nd ed. 2021.
Online access from Purdue libraries
In addition, a (dynamically updated) list of
supplementary readings will be available on
Brightspace.
Discussion Forum:
The
course Ed
Discussion site will serve as the
discussion board; all course announcements
will also be posted there. In lieu of emailing
the instructor or the TA with any general
questions about using Haskell / Rust or
assignments, please post them to the
discussion board so that any other students
with the same question can see the answer.
|
policies
Grading:
Final grades will be assigned according to the following breakdown:
Homework Assignments |
60% |
Course Project |
30% |
Participation |
10% |
|
(tentative) schedule
Date |
Topic |
Notes |
Homework |
W1 (08/19) |
Course Introduction
Propositional Logic
|
|
|
W2 (08/26) |
SAT Solving: Applications and Implementation
|
|
|
W3 (09/02) |
SAT Solving DPLL + CDCL
|
|
|
W4 (09/09) |
First-Order Logic
|
|
|
W5 (09/16) |
First-Order Theories
|
|
|
W6 (09/23) |
Satisfiability Modulo Theories |
|
|
W7 (9/30) |
Transition Systems + Intro to Model Checking |
|
|
W8 (10/07) |
Temporal Logic |
|
|
W9 (10/14) |
LTL + CTL Model Checking |
|
|
W10 (10/21) |
Symbolic Model Checking |
|
|
W11 (10/28) |
CEGAR and IC3 |
|
|
W12 (11/04) |
Model Checking Concurrent Systems
|
|
|
W13 (11/11) |
Intro to Abstract Interpretation
|
|
|
W14 (11/18) |
Applications of Abstract Interpretation |
|
|
W15 (11/25) |
Advanced Topics: Program Synthesis |
|
|
W16 (12/04) |
Project Presentations + Course Wrap up
|
|
|
|
|
|