CMSC 631, Spring 2013

Program Analysis and Understanding

All announcements will be posted exclusively on Piazza.

Location CSI 1121, MW 3:30-4:45pm
Instructors Mike Hicks
AVW 4131
Hours: M/W/Th 10-11
Jeff Foster
AVW 3423
Hours: M 11-12, Tu 11-11:45
Matthew Hammer
AVW 4161
Hours: M/W 5-6
Stevie Strickland
AVW 4161
Hours: Tu/W 2-3
Additional office hours available by appointment.
TA Peter Mardziel
Location: AVW 1112 (TA Room)
Hours: Th 1-2, F 2-3
Textbook None (but see recommendations)


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, symbolic execution, and type systems in depth, with more cursory coverage of other analysis techniques. Related techniques are covered in CMSC 630.
  2. Formal systems for describing languages and programs, including lambda calculus and axiomatic, denotational, and operational semantics. We will use the Coq proof assistant to help mechanize our formalizations and check proofs of properties about these systems.
  3. Programming language features and how they affect software, including imperative, functional, and object-oriented programming.

Valid HTML 4.01!