Program Analysis and Understanding

Fall 2009


This core course is about techniques for analyzing and understanding software artifacts. Ultimately, the goal of this area of study is to improve the quality of software. We will cover three related areas of programming languages research:

1.Static analysis, the name for any automatic technique for reasoning about program source code. We will study data flow analysis, type systems, and other forms of analysis.

2.Formal systems for describing languages and programs, including lambda calculus and axiomatic, denotational, and operational semantics. We will be encoding these semantics in part with the Coq proof assistant.

3.Programming language features and how they affect software, including imperative, functional, and object-oriented programming.



Location: CSIC 2118, MW 12:30 - 1:45pm

Final Exam: Take home, available Dec. 10-14

Project: Due Dec. 19


Michael Hicks

4131 A.V. Williams Building

Office hours: TWF 10-11am

Textbook: None (but see recommendations)

Discussion: CS Forum