CSE 503: Software Engineering: Program Analysis

Autumn 2012

Meetings: Tue & Thu 12:00-13:20, room EEB 042

Lecturer: Michael Ernst

No TA

Software is becoming ever more complex and difficult to understand, at the same time as it is used ever more pervasively. It is hopeless to understand how software systems work (or why they do not work!) without automated assistance. Programmers need tool assistance during design, implementation, testing, debugging, and modification ("maintenance"). This graduate seminar will investigate a variety of program analysis techniques that address these software engineering tasks.

Static analysis topics include abstract interpretation (dataflow), type systems (including inference and non-standard type systems), model checking, decision procedures (SAT, BDDs, etc.), theorem-proving. Dynamic analysis topics include testing, fault isolation (debugging), model inference, and visualization. While the course focuses on the design and implementation of program analysis tools, the material will be useful to anyone who wishes to improve his or her programming or understand the state of the art.

Students will read classic and current technical papers, lead one in-class discussion, and actively participate in other discussions. The heart of the class is a team research project. Sample projects will be provided, but students are also free to propose their own, particularly ones motivated by their own problems experienced while programming. Examples include proposing and evaluating a fundamental new technique; developing and assessing new algorithms to replace currently-used ones; translating a methodology to a new problem domain; evaluation of proposed techniques (for instance, via a user study); and applying known techniques to new problem domains, such as operating systems, networks, embedded systems, security, biology, aerospace, etc.

Note: In some years CSE 503 is a broad course that covers all aspects of software development. This year's offering is more narrow but deeper, and can be repeated by people who have already taken CSE 503 in the past.

Prerequisites: none. Motivated undergraduates and Master's students are welcome.