March | ||||
Monday | Tuesday | Wednesday | Thursday | Friday |
27 | 28
11:00-12:20 Lecture
EEB 025 Introduction; static and dynamic analysis; teaser for abstract interpretation. Read Static and dynamic analysis: synergy and duality |
29 | 30
11:00-12:20 Lecture
EEB 025 Abstract interpretation. Read abstract syntax tree, control flow graph, 3-address form, first two sections of Abstract Interpretation: a semantics-based tool for program analysis, by Neil Jones and Flemming Nielson
23:59 Topic interest survey
|
31 |
April | ||||
Monday | Tuesday | Wednesday | Thursday | Friday |
03
12:01 HW01: Development difficulties; submit via Canvas
|
04
10:59 HW02: Reasoning about programs; submit via Canvas
11:00-12:20 Lecture
EEB 025 Abstract interpretation. Read Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints, by Patrick Cousot and Radhia Cousot, in POPL 1977. Read HW1 submissions |
05 | 06
11:00-12:20 Lecture
EEB 025 Abstract interpretation wrapup |
07
Form groups for class project and inform Mike and Calvin
|
10
23:59 Project proposals due; submit via Canvas
|
11
11:00-12:20 Lecture
EEB 025 Dynamic analysis: delta debugging. Read "Simplifying and isolating failure-inducing input", by Andreas Zeller and Ralf Hildebrandt, in TSE 2002. (Optional related reading: "Locating causes of program failures", ICSE 2005.) |
12 | 13
11:00-12:20 Lecture
EEB 025 Dynamic analysis: paths. Read "DART: Directed automated random testing", by Patrice Godefroid, Nils Klarlund, and Koushik Sen, in 2005. Read "Efficient path profiling", by Thomas Ball and James R. Larus, in MICRO 29. |
14
Project proposal approval
23:59 HW03: Abstract Interpretation Design; submit via Canvas
|
17 | 18
11:00-12:20 Lecture
EEB 025 Dynamic analysis. Read "Dynamically discovering likely program invariants to support program evolution" by Michael D. Ernst, Jake Cockrell, William G. Griswold, and David Notkin, in TSE 2001 (skim sections 5-8; read the rest more carefully). |
19 | 20
11:00-12:20 Lecture
EEB 025 Type inference. Read lambda calculus. Read Chapter 30 (book pages 273-283, which are pages 289-299 in the PDF) of Programming Languages: Application and Interpretation by Shriram Krishnamurthi. Read "Principal type-schemes for functional programs" by Luis Damas and Robin Milner, in POPL 1982. (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.) |
21 |
24 | 25
11:00-12:20 Lecture
EEB 025 Non-standard type inference. Read "Lackwit: A Program Understanding Tool Based on Type Inference", by Robert O'Callahan and Daniel Jackson, in ICSE 1997. Read "Dynamic inference of abstract types" by Philip J. Guo, Jeff H. Perkins, Stephen McCamant, and Michael D. Ernst, in ISSTA 2006. (The latter is essentially the Lackwit paper, implemented dynamically rather than statically.) Read "Finding User/Kernel Pointer Bugs With Type Inference", by Robert T. Johnson and David Wagner, in USENIX Security, 2004. |
26 | 27 | 28
Related work and methodology due; submit via Canvas
|
May | ||||
Monday | Tuesday | Wednesday | Thursday | Friday |
01 | 02
11:00-12:20 Lecture
EEB 025 15-minute project presentations about your proposal and methodology. |
03 | 04
11:00-12:20 Lecture
EEB 025 Slicing. Read Debugging Reinvented: Asking Why and Answering Why and Why Not Questions About Program Behavior by Andrew J. Ko and Brad A. Myers, in ICSE '08. Read Summarized Trace Indexing And Querying For Scalable Back-In-Time Debugging, by Guillaume Pothier and Éric Tanter, in ECOOP 2011. |
05 |
08
23:59 HW04: Abstract Interpretation Implementation; submit via Canvas
|
09
11:00-12:20 Lecture
EEB 025 Slicing. Read "Cost Effective Dynamic Program Slicing", by Xiangyu Zhang and Rajiv Gupta, in PLDI 2004. Read "Thin slicing", by Manu Sridharan, Stephen J. Fink and Ras Bodik, in PLDI 2007. |
10 | 11
11:00-12:20 Lecture
EEB 025 Model checking. Review linear temporal logic and buchi automaton. Read "The Model Checker SPIN", by Gerard J. Holzmann, in IEEE TSE 23(5), 1997. |
12 |
15 | 16
11:00-12:20 Lecture
EEB 025 Model checking. Read "Using predicate abstraction to reduce object-oriented programs for model checking", by William Visser, SeungJoon Park, and John Penix, in Third Workshop on Formal Methods in Software Practice, 2000. Read "Counterexample-Guided Abstraction Refinement", by Edmund Clarke, Orna Grumberg, Somesh Jha, Yuan Lu, and Helmut Veith, in CAV 2000. |
17 | 18
11:00-12:20 Lecture
EEB 025 Model checking. Read "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. Read "Finding and Reproducing Heisenbugs in Concurrent Programs" by Madanlal Musuvathi, Shaz Qadeer, Thomas Ball, Gerard Basler, Piramanayagam Arumuga Nainar, and Iulian Neamtiu, in OSDI 2008. |
19
Initial results due; submit via Canvas
|
22 | 23
11:00-12:20 Lecture
EEB 025 Verification. Read "Verification of object-oriented programs with invariants" by Mike Barnett, Robert DeLine, Manuel Fahndrich, K. Rustan M. Leino, and Wolfram Schulte, in JOT, 2004. |
24 | 25
11:00-12:20 Lecture
EEB 025 Verification. Read "Extended Static Checking for Java" by Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, and Raymie Stata, in PLDI, 2002. |
26 |
29
Memorial Day
|
30
11:00-12:20 Lecture
EEB 025 Test generation. Readings TBD. |
31 | 01
11:00-12:20 Lecture
EEB 025 Test generation. Read "QuickCheck: a lightweight tool for random testing of Haskell programs" by Koen Claessen and John Hughes, in ICFP, 2000. Read Feedback-directed random test generation by Carlos Pacheco, Shuvendu K. Lahiri, Michael D. Ernst, and Thomas Ball, in ICSE, 2007. |
02
Final report due; submit via Canvas
|
June | ||||
Monday | Tuesday | Wednesday | Thursday | Friday |
05 | 06 | 07
16:30-18:30 Final presentations
CSE 203 |
08 | 09 |