CSE 503 Spring 2019
Course Calendar

Subscribe to this calendar (Google, iCal, etc.)

 Show color key

April
MondayTuesdayWednesdayThursdayFriday
01 02 03
10:00-11:20 Lecture
ECE 054
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. Answer reading questions.
23:59 HW01: Development difficulties; submit via Canvas
04 05
08 09
Form groups for class project and inform the course staff
10
10:00-11:20 Lecture
ECE 054
Abstract interpretation. Skim notations used by Cousot and Cousot. 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. Answer reading questions.
11 12
23:59 Project proposals due; submit via Canvas
15
10:00-11:20 Lecture
ECE 054
Abstract interpretation wrapup
16 17
00:01 Reading questions on delta debugging; submit via Canvas
10:00-11:20 Lecture
ECE 054
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.)
18 19
Project proposal approval
23:59 HW02: Abstract Interpretation Design; submit via Canvas
22
10:00-11:20 Lecture
ECE 054
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.
23
23:59 Re-submit project proposal, via Canvas; (submissions)
24
00:01 Reading questions on types; submit via Canvas
10:00-11:20 Lecture
ECE 054
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).
25 26
23:59 Related work and methodology due; submit via Canvas
29
10:00-11:20 Lecture
ECE 054
15-minute project presentations about your proposal and methodology.
30 01
00:01 Reading questions on type inference; submit via Canvas
10:00-11:20 Lecture
ECE 054
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.) The principal type-schemes paper is famous enough that researchers have re-typeset it; for a more pleasant experience, read this version.
02 03

May
MondayTuesdayWednesdayThursdayFriday
06
10:00-11:20 Lecture
ECE 054
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.
07 08
10:00-11:20 Lecture
ECE 054
Slicing. Read "Program slicing" by Mark Weiser, in ICSE 1981.
09 10
13
10:00-11:20 Lecture
ECE 054
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.
14 15
10:00-11:20 Lecture
ECE 054
Model checking. Review linear temporal logic and buchi automaton. Read "The Model Checker SPIN", by Gerard J. Holzmann, in IEEE TSE 23(5), 1997.
16
23:59 Initial results due; submit via Canvas
17
20
10:00-11:20 Lecture
ECE 054
15-minute project presentations about your project status.
21 22
10:00-11:20 Lecture
ECE 054
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.
23 24
27
Memorial Day
28 29 30 31
23:59 Key ideas; submit via Canvas

June
MondayTuesdayWednesdayThursdayFriday
03
10:00-11:20 Lecture
ECE 054
"Greatest hits" of the class. We will talk about the most important ideas, or about themes that have come up repeatedly, and we will try to better understand the relationships among them or how they can be applied in other domains.
23:59 Final report due; submit via Canvas
04 05
10:00-11:20 Lecture
ECE 054
Wrap-up.
06 07
10
00:01 Final presentation slides due; submit via Canvas
08:30-10:20 Final presentations
11 12 13
23:59 Revised final report
14