CSE 503: Software Engineering: Program Analysis

Winter 2010

Meetings: MW 10:30-11:50, room MGH 238

Lecturer: Michael Ernst

TA: Todd Schiller


Course topics

Syllabus

Homework submission dropbox

Mailing list: CSE503@cs
(To send mail to the list, you must send use your @u address, not a @cs, @google.com, etc. address. Let us know if this is a hardship, and we will add your other address to the list of permitted senders.)

Introduction: Static and dynamic analysis

Monday, January 4
Lecture 1: Overview of topics, Static and dynamic analysis

Abstract interpretation

Monday, January 4
Assignment 1 (due Wednesday, January 6)
Wednesday, January 6
"Abstract Interpretation: a semantics-based tool for program analysis", by Neil Jones and Flemming Nielson. First two sections only. PostScript.
Monday, January 11
"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

Wednesday, February 3
"Simplifying and isolating failure-inducing input", by Andreas Zeller and Ralf Hildebrandt. TSE 2002. PDF
Wednesday, February 3
"DART: Directed automated random testing", by Patrice Godefroid, Nils Klarlund, and Koushik Sen. PLDI 2005. PDF
Monday, February 8
"Efficient path profiling", by Thomas Ball and James R. Larus. MICRO 29. PDF
Monday, February 8
"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

Model checking

Wednesday, February 10
"The Model Checker SPIN" by Gerard J. Holzmann. IEEE TSE 23(5), 1997. PDF
Wednesday, February 17
"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
Presenters: Prasang Upadhyaya, Yingyi Bu
Wednesday, February 17
"Counterexample-Guided Abstraction Refinement", by Edmund Clarke, Orna Grumberg, Somesh Jha, Yuan Lu, and Helmut Veith. CAV 2000. PDF
Presenters: Sai Zhang, Chris Hacking
Monday, February 22
"CMC: a pragmatic approach to model checking real code" by Madanlal Musuvathi, David Y. W. Park, Andy Chou, Dawson R. Engler, and David L. Dill. In OSDI 2002. PostScript
Presenters: Aditya Sankar, Sigurd Schneider
Monday, February 22
"Finding and Reproducing Heisenbugs in Concurrent Programs" by Madanlal Musuvathi, Shaz Qadeer, Thomas Ball, Gerard Basler, Piramanayagam Arumuga Nainar, and Iulian Neamtiu. OSDI 2008. PDF
Presenters: Ivan Beschastnikh, Janara Christensen

Types

Wednesday, February 24
Wikipedia on lambda calculus
"Principal type-schemes for functional programs", by Luis Damas and Robin Milner, POPL 1982. PDF. There is a typo in Algorithm W part (ii): on the second line, e2 and t2 should be e1 and t1. "e2" and "t2" are correct on third line.
Chapter 30 (book pages 273-283, which are pages 289-299 in the PDF) of Programming Languages: Application and Interpretation by Shriram Krishnamurthi.
Monday, March 1
"Lackwit: A Program Understanding Tool Based on Type Inference", by Robert O'Callahan and Daniel Jackson. ICSE 1997. PDF
Presenter: Gilbert Bernstein [Lecture Notes]
Monday, March 1
"Dynamic inference of abstract types", by Philip J. Guo, Jeff H. Perkins, Stephen McCamant, and Michael D. Ernst. ISSTA 2006. Essentially the Lackwit paper, implemented dynamically rather than statically. PDF
Presenter: Joshua Goodwin [Lecture Slides]
Monday, March 1
"Finding User/Kernel Pointer Bugs With Type Inference", by Robert T. Johnson and David Wagner. USENIX Security, 2004. PostScript, PDF
Presenters: Michael Bayne, Reto Conconi [Lecture Slides]

Pointer analysis

Wednesday, March 3
"Pointer Analysis: Haven't We Solved This Problem Yet?" In PASTE 2001. PostScript
Wednesday, March 3
Derek Rayside's notes on points-to analysis
Monday, March 8
"Points-to Analysis in Almost Linear Time", by Bjarne Steensgaard. In POPL 1996. PostScript, PDF
Presenters: Erik Andersen, Michael Ratanapintha [Lecture Slides]
Monday, March 8
"Points-to Analysis by Type Inference of Programs with Structures and Unions", by Bjarne Steensgaard. CC 1996. Significant overlap with POPL 96 paper. Skim for differing material. PostScript, PDF
Presenters: Slava Chernyak, Colin Gordon [Lecture Slides]
Monday, March 8
"Strictly Declarative Specification of Sophisticated Points-to Analyses", by Martin Bravenboer and Yannis Smaragdakis. OOPSLA 2009. PDF
Presenters: Shiri Azenkot, Evan Herbst [Lecture Slides]

Verification

Wednesday, March 10
"Verification of object-oriented programs with invariants" by Mike Barnett, Robert DeLine, Manuel Fahndrich, K. Rustan M. Leino, and Wolfram Schulte. JOT, 2004. PDF
Presenters: Saleema Amershi, Xiao Sophia Wang [Lecture Slides]