CIS 670: Program Analysis, Fall 2007


Instructor: Rajeev Alur ( alur@cis)

Class: Mon Wed 1.30 -- 3, Levine 612 (note revised time and location)

First lecture: Monday, Sept 10

Office hours: Tues 2-3, Levine 609, and by appointment


Introduction

Program analysis refers to a broad collection of algorithms and tools for statically analyzing programs to deduce information about their runtime behavior. While program analysis techniques were originally developed for optimizing compilers, this course will emphasize their contemporary application in finding bugs in programs. Based on recent advances, program analysis tools can now discover programming errors, such as potential out-of-bounds array references, stack overflows, and data races, in large scale code bases, and are routinely used in software development to improve programmer productivity. This course will span logical foundations, algorithmic techniques, industrial-strength tools, and current research directions in program analysis.

Topics include


Prerequisites

The course requires basic knowledge of programming languages, algorithms, data structures, automata theory, and propositional(boolean) logic (CIS 500, 502, CIS 511, or equivalent). If you need more information to decide, contact the instructor.

Note: The content of this course significantly differs from CIS 673 (Computer Aided Verification) offered in Fall 2006.


Reading

The course will use a variety of sources. A preliminary list includes:

Schedule


Project

The grade will be based on a project. The project can be done in groups of two. Useful links to possible tools: Project schedule
Maintained by Rajeev Alur