6.883: Program Analysis

Fall 2005

Meetings: TR 11-12:30, room 24-407 (note change from 34-303)

https://pag.csail.mit.edu/6.883/

Lecturer: Michael Ernst

Office hours: by appointment


Course announcement: HTML, PDF

Mailing list: 6883@csail.mit.edu

Syllabus: PDF, PostScript

Introduction: Static and dynamic analysis

Thursday, September 8
Lecture 1: Static and dynamic analysis: PowerPoint

Abstract interpretation

Thursday, September 8
Assignment 1 (due Tuesday, September 13): PDF, PostScript
Tuesday, September 13
"Abstract Interpretation: a semantics-based tool for program analysis", by Neil Jones and Flemming Nielson. First two sections only. PostScript.
Thursday, September 15
"Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints", by Patrick Cousot and Radhia Cousot. POPL 1977. PDF

Dynamic analysis

Tuesday, October 18
"The chaining approach for software test data generation", by Roger Ferguson and Bogdan Korel, TOSEM 1996. PDF
Thursday, October 20
"Efficient path profiling", by Thomas Ball and James R. Larus. MICRO 29. PDF
Tuesday, October 25
"Simplifying and isolating failure-inducing input", by Andreas Zeller and Ralf Hildebrandt. TSE 2002. PDF
Thursday, October 27
"Dynamically discovering likely program invariants to support program evolution" by Michael D. Ernst, Jake Cockrell, William G. Griswold, and David Notkin. TSE 2001. Skim sections 5-8; read the rest more carefully. PDF

Types

Tuesday, November 1
"Principal type-schemes for functional programs", by Luis Damas and Robin Milner, POPL 1982. PDF
Tuesday, November 1
"Proofs about a Folklore Let-Polymorphic Type Inference Algorithm", by Oukseh Lee and Kwangkeun Yi. TOPLAS 1998. PDF
Thursday, November 3
"Introduction to Part II, Polymorphic Lambda Calculus", by John C. Reynolds. pages 77-86 in Logical Foundations of Functional Programming, edited by Gérard Huet, Addison-Wesley, 1990. PDF
Tuesday, November 8
"Lackwit: A Program Understanding Tool Based on Type Inference", by Robert O'Callahan and Daniel Jackson. ICSE 1997 PDF
Tuesday, November 8
"Finding User/Kernel Pointer Bugs With Type Inference", by Robert T. Johnson and David Wagner. USENIX Security, 2004. PostScript, PDF
Thursday, November 10
"Points-to Analysis in Almost Linear Time", by Bjarne Steensgaard. In POPL 1996. PostScript, PDF
Thursday, November 10
"Points-to Analysis by Type Inference of Programs with Structures and Unions", by Bjarne Steensgaard. CC 1996. Skim for differing material. PostScript, PDF
Thursday, November 10
Derek Rayside's notes on points-to analysis

Model checking

Thursday, November 17
"The Spin Model Checker" by Gerard J. Holzmann. IEEE TSE 23(5), 1997. PostScript
Tuesday, November 22
"Optimizing Symbolic Model Checking for Statecharts" by William Chan, Richard J. Anderson, Paul Beame, David H. Jones, David Notkin, and William E. Warner. IEEE TSE 27(2), 2001. PDF
Tuesday, November 29
"Constructing compact models of concurrent Java programs" by James C. Corbett. ISSTA '98. PDF
Tuesday, November 29
"Using predicate abstraction to reduce object-oriented programs for model checking" by William Visser, SeungJoon Park, and John Penix. Third Workshop on Formal Methods in Software Practice, 2000. PostScript

Decision procedures

Thursday, November 17

Project presentations

Tuesday, December 6
"Javarifier: Inferring reference immutability for Java" by Matthew Tschantz, Chen Xiao, and Vineet Sinha
Tuesday, December 6
"Analyzing the static elaboration of hardware descriptions" by Michael Pellauer
Tuesday, December 6
"Automated test-case generation with SAT" by Greg Dennis and Robert Seater
Thursday, December 8
"Annotation-less unit type inference for C" by Philip Guo and Stephen McCamant
Thursday, December 8
"Safe test case reduction" by Brad Howes and David Saff
Tuesday, December 13
"Object control invariants" by Lucy Mendel and Derek Rayside
Tuesday, December 13
"Automatic generation of unit regression tests" by Shay Artzi, Adam Kiezun, Carlos Pacheco, and Jeff Perkins