6.820 | Fall 2015 | Undergraduate

Fundamentals of Program Analysis


Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session

Optional Recitations: 1 session / week, 1 hour / session


6.035 Computer Language Engineering

Course Description

This course offers a comprehensive introduction to the field of program analysis. It covers some of the major forms of program analysis including Type Checking, Abstract Interpretation and Model Checking. For each of these, the course covers the underlying theories as well as modern techniques and applications.


Buy at MIT Press Pierce, Benjamin C. Types and Programming Languages. MIT Press, 2002. ISBN: 9780262162098. [Preview with Google Books]

Buy at MIT Press Winskel, Glynn. The Formal Semantics of Programming Languages: An Introduction. MIT Press, 1993. ISBN: 9780262731034. [Preview with Google Books]

Nielson, Nielson, and Hankin. Principles of Program Analysis. Springer, 2010. ISBN: 9783642084744.

Buy at MIT Press Baier, and Katoen. Principles of Model Checking. MIT Press, 2008. ISBN: 9780262026499.

This course used the Coq Proof Assistant Software for some assignments. Students aren’t expected to become experts on Coq, but here are some Coq resources anyway:

Buy at MIT Press Chlipala, Adam. Certified Programming with Dependent Types: A Pragmatic Introduction to the Coq Proof Assistant. MIT Press, 2013. ISBN: 9780262026659. [Preview with Google Books] (not yet available in print, but a draft is available Online)

Pierce, Benjamin C., et al. Software Foundations.

Bertot, Yves, and Pierre Castéran. Interactive Theorem Proving and Program Development: Coq’Art: The Calculus of Inductive Constructions. Springer, 2004. ISBN: 9783540208549. [Preview with Google Books]


Course topics include 6 units.

Unit 1: Intro to Functional Programming & Operational Semantics

Unit 2: Type Theory

Unit 3: Types for Imperative Programs

Unit 4: Axiomatic Semantics

Unit 5: Abstract Interpretation

Unit 6: Model Checking


Assignment 1 15%
Assignment 2 15%
Assignment 3 20%
Assignment 4 15%
Assignment 5 20%
Assignment 6 15%

There are 6 homework assignments. They consist of problem sets and programming assignments relating to the material covered in class. Homework is due no later than 5:00 pm on the day marked in the assignment handout; late homework is accepted with a 10% penalty for each day of delay (maximum 3 days; talk to the instructor if there are special circumstances that may require more).

Course Info

As Taught In
Fall 2015
Learning Resource Types
Lecture Notes
Programming Assignments