CMSC 631, Fall 2011

Program Analysis and Understanding

  • Nov 27 - Project 5 (Written exercises) now available: p5.pdf, due December 13.
  • Oct 27 - Project 4 (Coq exercises) now available: p4.v, due November 9.
  • Oct 24 - Project ideas and project due dates now available
  • Oct 10 - Project 3 (Coq exercises) now available: p3.v, and accompanying file Sflib.v, due October 26.
  • Sep 23 - Project 1 scores posted on grades.cs. Sample solution:
  • Sep 7 - Programming project 2 is posted. Due October 7.
  • Sep 18 - OCaml and SAS'11 slides updated
  • Sep 8 - Jeff Foster will hold office hours in AVW 4129 on Tu (Sep 13) 12:15-1:15, Fr (Sep 16) 12-1 for answering project questions.
  • Sep 7 - Programming project 1 is posted. Due September 16.
  • Aug 31 - First day of class. There are no office hours this week; if you need to speak with the professor please send email.

Location CSIC 1122, MW 3:30-4:45pm
Final Exam Take home, between Dec. 14-18
Final Project Due date Dec. 20
Instructor Mike Hicks
4131 A.V. Williams
Hours: Tue-Wed 1-2pm (or by appointment)
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!