CMSC 631, Fall 2007

Program Analysis and Understanding

  • Updated lecture notes on abstract interpretation.
  • Take-home midterm will be available Nov. 5 after class; due Nov. 7 in class.
  • Homework 5 is available. Due Oct. 29 in class.
  • Project suggestions are now available. 1-page proposal due Oct. 26.
  • Project 3 is avaiable. Due Oct. 29.
  • Homework 4 is available. Due Oct. 22 in class.
  • Homework 3 is available. Due Oct. 12 at my office by 2pm.
  • Project 2 is posted. Due Oct 15. Updated Oct. 3 (added tests, fixed printing). Updated again Oct 8 (fixed printing again!).
  • Homework 2 is available. Due Oct. 3 in class.
  • Project 1 is posted. Due Oct 1 (mistakenly announced as due Oct 4 earlier).
  • Homework 1 is posted (slightly corrected, Sep 10, 1:45pm). Due Sep 17 (part 4 due Sep 19).
  • First class is August 29.

Location CSIC 3120, MW 2:00-3:15pm
Final Exam Take home on Nov. 5, due Nov. 7 in class
Final Project 1-page proposal due Oct. 26; writeup due Dec. 17
Instructor Michael Hicks
4131 A.V. Williams
Hours: TWF 10-11am
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 and type systems, and more briefly theorem proving. Model checking will be covered by CMSC 630, offered in Spring 2007.
  2. Formal systems for describing languages and programs, including lambda calculus and axiomatic, denotational, and operational semantics.
  3. Programming language features and how they affect software, including imperative, functional, and object-oriented programming.

Prerequisite: CMSC 430 or equivalent. Most of the material covered in a typical compilers course (CMSC 430) will not be used in this class, so even if you have not taken such a course you may be fine in 631. Contact the instructor if you are interested in taking 631 but aren't sure if you have the background.

Grading and Expectations

Subject to change, especially until the start of the semester.

The final course grade will be made up of the following components:

  • Homework (10%) There will be short written assignments (roughly 5-6) to give you an opportunity to practice the material we will go over during lecture.
  • Programming Assignments (20%) There will be roughly 3-4 programming assignments in which you will implement some of the ideas from class.
  • Project (35%) You will be expected to complete a substantial research project during the semester. Projects may be completed individually or in pairs. For more details, see the projects page.
  • Participation and Presentation (10%) You will present your project to the class. You will also be graded on contributions to class discussion.
  • Final Exam (35%) This course will include a final exam, which will cover material from the homeworks, programming assginments, and other lecture material.

Late Policy

Written assignments are due at the beginning of class on the due date. Programming assignments are due at midnight on the due date. Neither written nor programming assignments may be turned in late. If you cannot make a due date because of extenuating circumstances, or because it conflicts with a religious holiday, please inform the instructor as soon as possible.

Academic Dishonesty

The college policy on academic dishonesty is strictly followed. All graded materials must be strictly individual efforts. Projects may include collaboration as permitted by the instructor.

Valid HTML 4.01!