Final exam, version 0. I've received submissions for Q1, Q2, Q4 and Q5 ("a fun problem"). Q3 isn't really the kind of problem where you send me a solution.

Homework: watch this presentation on effective slide design by Jean-luc Duomont.

L1: May 9 Introduction.
L2: May 16 Dataflow analysis. Finitization. Type systems. JavaCOP. Interprocedural analysis. Call graphs and pointer analysis. Summaries.
L3: May 23 Applications of Type Systems
Alexander J. Summers and Peter Müller. Freedom Before Commitment: A Lightweight Type System for Object Initialisation. OOPSLA '11. (Edward)
Brian Demsky and Patrick Lam. Views: Synthesizing Fine-Grained Concurrency Control. TOSEM 2012. (Patrick) [slides]
L4: May 30
Proposals due
Dynamic Heap Analysis
Michael D. Bond, Nicholas Nethercote, Stephen W. Kent, Samuel Z. Guyer, and Kathryn S. McKinley. Tracking Bad Apples: Reporting the Origin of Null and Undefined Value Errors. OOPSLA '07. (Matthew)
Dacong Yan, Guoqing Xu, and Atanas Rountev. Uncovering Performance Problems in Java Applications with Reference Propagation Profiling. ICSE '12. (Quinn)
L5: June 6 Deeper Heap Analyses
Malay Ganai, Dongyoon Lee, and Aarti Gupta. DTAM: Dynamic Taint Analysis of Multi-threaded Programs for Relevancy. SIGSOFT/FSE '12. ()
ThanhVu Nguyen, Deepak Kapur, Westley Weimer, and Stephanie Forrest. Using Dynamic Analysis to Discover Polynomial and Array Invariants. ICSE '12. (Wenbin)
L6: June 13 Pointer and Heap Analyses
Isil Dillig, Thomas Dillig, Alex Aiken, and Mooly Sagiv. Precise and Compact Modular Procedure Summaries for Heap Manipulating Programs. PLDI '11. ()
Mario Méndez-Logo, Augustine Mathew, and Keshav Pingali. Parallel Inclusion-based Points-to Analysis. OOPSLA/SPLASH '10. (Matthew)
L7: June 20(*) Test Generation via Program Analysis
Razieh Nokhbeh Zaeem and Sarfraz Khurshid. Test Input Generation Using Dynamic Programming. SIGSOFT'12/FSE-20. (Wenzhu)
Michael Pradel and Thomas R. Gross. Automatic Testing of Sequential and Concurrent Substitutability. ICSE 2013. (Jinqiu)
L8: June 27 Program Transformations (three papers!)
Greg Dennis, Felix Sheng-Ho Chang, and Daniel Jackson. Modular verification of code with SAT (must download from campus or through library proxy). ISSTA '06. (Atulan)
Ying Zhang, Gang Huang, Xuanzhe Liu, Wei Zhang, Hong Mei, and Shunxiang Yang. Refactoring Android Java Code for On-Demand Computation Offloading. OOPSLA '12. (Wenbin)
Stephen Magill, Michael Hicks, and Suriya Subramanian. Automating Object Transformations for Dynamic Software Updating. OOPSLA '12. (Felix)
L9: July 4(*)
Midterm reports
Dynamic Analysis for dealing with unsafety and overflows
Emery D. Berger and Benjamin G. Zorn. DieHard: Probabilistic Memory Safety for Unsafe Languages. PLDI '06. (Wenzhu)
Will Dietz, Peng Li, John Regehr, and Vikram Adve. Understanding Integer Overflow in C/C++.. ICSE '12. (Jinqiu)
L10: July 11 Automatic Program Repair
Francesco Logozzo and Thomas Ball. Modular and Verified Automatic Program Repair. OOPSLA '12. (Felix)
Claire Le Goues, Michael Dewey-Vogt, Stephanie Forrest, and Westley Weimer. A Systematic Study of Automated Program Repair: Fixing 55 out of 105 Bugs for $8 Each. ICSE '12. (Edward)
L11: July 18 Security
Benjarmin Livshits and Stephen Chong. Towards Fully Automatic Placement of Security Sanitizers and Declassifiers. POPL '13. (Quinn)
Anders Møller and Mathias Schwarz. Automatic Detection of Client-State Manipulation Vulnerabilities. ICSE '12. (Atulan)
L12: July 25 Project Reports & Loose Ends