| Date | Topic | Paper | Student | Due | |
| Jan 17 (T) | Introduction (PDF) | How to Read an Engineering Research Paper and Basic Research Skills in Computer Science, also see Tool links | |||
| Understanding the Problems | |||||
| Jan 19 (R) | Performance (PDF) | Quantifying Behavioral Differences Between C and C++ Programs by Brad Calder, Dirk Grunwald, and Benjamin Zorn | Paper critique (for remaining weeks, there is a paper critique due once a week, either before Tuesday class or before Thursday class) | ||
| Jan 24 (T) | Program Safety (or lack thereof) | Software Bugs Can be Lethal at CBS News April 29, 2003; Software Hell at Business Week December 6, 1999; also see Well Known Software Failures and Sony CD copy protection controversy | |||
| Dataflow Analysis and Abstract Interpretation | |||||
| Jan 26 (R) | Dataflow analysis | Properties of Dataflow Frameworks: A Unified Model by T. Marlowe and B.G. Ryder | open | ||
| Jan 31 (T) | Abstract Interpretation (PDF) | Abstract Interpretation in a Nutshell by Bruno Blanchet et al.; and Abstract Interpretation: Achievements and Perspectives by Patrick Cousot, also see other resources | open | ||
| Feb 2 (R) | Polyhedral Constraints | Automatic discovery of linear restraints among variables of a program by Patrick Cousot and Nicolas Halbwachs | open | ||
| Feb 7 (T) | Writing a Project Proposal (PDF) | How to Write a Master's Thesis in Computer Science | Proposed tool example, preliminary project proposal | ||
| Using Dataflow analysis for Security and Correctness | |||||
| Feb 9 (R) | FindBugs (PDF) | Finding Bugs is Easy by David Hovemeyer and Bill Pugh | Sandeep | ||
| Feb 14 (T) | Context and Flow Sensitivity | Client-Driven Pointer Analysis by Samuel Z. Guyer and Calvin Lin | open | ||
| Dealing with Pointers | |||||
| Feb 16 (R) | Pointer Analysis Survey (PDF) | Pointer Analysis: Haven't We Solved This Problem Yet? by Michael Hind | Kevin | ||
| Feb 21 (T) | Flow-insensitive, Context-sensitive Pointer Analysis (PDF) | Efficient points-to analysis for whole-program analysis Donglin Liang and Mary Jean Harrold | Shweta | ||
| Feb 23 (R) | How to give a talk (PDF) | Project proposal, tool example | |||
| Feb 28 (T) | Path sensitivity | Path slicing by Ranjit Jhala and Rupak Majumdar | open | ||
| Mar 2 (R) | Constructive Criticism | Data-flow Analysis for MPI Programs by Michelle Mills Strout, Barbara Kreaseck, and Paul Hovland | open | ||
| Improving Analysis Precision | |||||
| Mar 7 (T) | Model Checking (PDF) | Model-checking large network protocol implementations by Dawson Engler and Madanlal Musuvathi | Vamsi | ||
| Mar 9 (R) | Shape analysis (PDF) | Connection Analysis: A Practical Interprocedural Heap Analysis for C by Rakesh Ghiya and Laurie J. Hendren | Niranjan | ||
| Staged and Dynamic Compilation | |||||
| Mar 21 (T) | LLVM | LLVM: A Compilation Framework for Lifelong Program Analysis and Transformation by Chris Lattner and Vikram Adve | open | ||
| Mar 23 (R) | Project status reports | Sandeep, Shweta, Sundeep | Verbal status report | ||
| Mar 28 (T) | Project status reports | Niranjan, Daegon, Vamsi, Kevin | |||
| Mar 30 (R) | Staged Compilation | Towards Automatic Construction of Staged Compilers by Matthai Philipose, Craig Chambers, and Susan J. Eggers | Sundeep | ||
| Apr 4 (T) | Dynamic Compilation | Using Annotation to Reduce Dynamic Optimization Time by Chandra Krintz and Brad Calder | open | ||
| Profiling | |||||
| Apr 6 (R) | Path Profiling | Efficient Path Profiling by Thomas Ball and James R. Larus | open | Apr 11 (T) | Profiling and Dataflow Analysis | Improving Data- Flow Analysis with Path Profiles by Glenn Ammons and James Larus | open |
| Apr 13 (R) | Michelle Out-of-Town | The Elevator Speech | Intermediate project report | ||
| Problems with Dataflow Analysis | |||||
| Apr 18 (T) | Data dependence analysis | Advanced compiler optimizations for supercomputers by David A. Padua and Michael J. Wolfe | open | ||
| Apr 20 (R) | Connection between data dependence analysis and the polyhedral model | A Dataflow Analysis of Array and Scalar References by Paul Feautrier | open | ||
| Static/Dynamic Data Dependence Analysis | |||||
| Apr 25 (T) | Non-affine references | Nonlinear Array Dependence Analysis by Bill Pugh and David Wonnacott | Daegon | ||
| Apr 27 (R) | Hybrid Analysis | Hybrid analysis: static and dynamic memory reference analysis by Silvius Rus and Lawrence Rauchwerger and Jay Hoeflinger | open | ||
| Domain-Specific Code Generation | |||||
| May 2 (T) | PHiPaC | Optimizing Matrix Multiply using PHiPAC: a Portable, High-Performance, ANSI C Coding Methodology by Jeff Bilmes, Krste Asanovic, Chee-whye Chin, and Jim Demmel | open | ||
| May 4 (R) | Loop Code Generation | Generation of Efficient Nested Loops from Polyhedra by Fabien Quillere, Sanjay Rajopadhye, and Doran Wilde | Final project report | ||