Date Topic and Notes Homework Reading For This Class
Wed Sep 05 Welcome To Wonderland Some homeworks are posted.
Start early!
None! (First class.)
Mon Sep 10 Model Checking
SLAM Introduction
Required:
  1. Thomas Ball and Sriram Rajamani's The SLAM Project: Debugging System Software via Static Analysis
  2. Thomas Ball and Sriram Rajamani's Automatically Validating Temporal Safety Properties of Interfaces
Optional:
  1. Ball et al.'s Automatic Predicate Abstraction of C Programs (most influential PLDI paper award)
Wed Sep 12 Program Verification Using Counterexample-Guided Abstraction Refinement Required:
  1. Henzinger et al.'s Lazy Abstraction
Optional:
  1. Henzinger et al.'s Thread-modular Abstraction Refinement
Mon Sep 17 A Simple Imperative Language
Operational Semantics
HW 0 Due
  1. Winskel Chapter Two: Introduction to operational semantics
  2. Hoare's Hints On Programming Language Design (shorter than it looks)
  3. Spolsky's The Perils of JavaSchools
Wed Sep 19 Contextual Operational Semantics Required:
  1. Wegner's Programming Languages - The First 25 years
Optional:
  1. Wirth's On the Design of Programming Languages (bonus points if you mistakenly choose this one just because it has the lowest page count)
  2. Nauer's Report on the algorithmic language ALGOL 60 (the language that Hoare said was an improvement not only on its predecessors but also on nearly all of its successors)
  3. Cobbe and Felleisen's Environmental acquisition revisited (example POPL paper — uses operational semantics on page 7, figure 11, just skim to that figure and see if you recognize it)
  4. Chen and Tarditi's A simple typed intermediate language for object-oriented languages (example POPL paper — uses operational semantics on page 9, figure 14, just skim to that and note the non-standard syntax -- but you should be able to interpret the (H; V ; x : t = v in e) rule, for example)
  5. Plotkin's A Structural Approach To Operational Semantics (basically a textbook, see chapter 2 for another take on what we're covering in class)
Mon Sep 24 Proof Techniques For Operational Semantics: Structural Induction HW 1 Due Required:
  1. Chapitre Trois De Winskel: Some principles of induction
  2. Wikipedia's Natural deduction, sections 1–5 and 8 (shows judgments and rules of inference for propositional logic; this provides another take on derivations)
Optional:
  1. Phillip's Degrees of Interpretation (Philosophy of Science; relevant if you're interested in the basis of math or theory)
Wed Sep 26
AFRL PI Meeting
Automated Theorem Proving, DPLL and Simplex Required:
  1. Ganziner et al.'s DPLL(T): Fast Decision Procedures
  2. Wikipedia's Simplex Algorithm
Mon Oct 01 Automated Theorem Proving, SMT, DPLL(T) and Proof Checking Required:
  1. The Coq Proof Assistant Tutorial, up to and including Section 1.3.4
Optional:
  1. Dawson Engler et al.'s Automatically Generating Malicious Disks Using Symbolic Execution (uses symex and theorem proving)
Wed Oct 03 Intro To Axiomatic Semantics HW 2 Due Required:
  1. Winskel Capitolele sase-cinci pana la sase-sapte (6.5-6.7) si sapte-unu pana la sapte-trei (7.1-7.3): Completeness of the Hoare rules
  2. Hoare's Proof of a program: FIND
Mon Oct 08 Axiomatic Semantics 2:
With A Vengeance
Project Proposal Due (not accepted late)
HW 3 Due
Required:
  1. Winskel Chapters 7.4-7.6: Completeness of the Hoare Rules
  2. Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
Optional:
  1. Necula's Completeness of Axiomatic Semantics (using operational semantics)
Wed Oct 10 Symbolic Execution Required:
  1. Manuvir Das et al.'s ESP: path-sensitive program verification in polynomial time
  2. Buse and Weimer's Automatically Documenting Program Changes
Mon Oct 15
Fall Study Break
No Lecture — Fall Study Break (Oct 15) Optional:
  1. Austen's Pride and Prejudice
  2. Barzun's From Dawn To Decadence
  3. Diamond's Guns, Germs, and Steel
  4. Goldman's The Princess Bride
Wed Oct 17 Invariant Detection HW 4 Due Required:
  1. Ernst et al.'s Dynamically Discovering Likely Program Invariants To Support Program Evolution
  2. Nguyen et al.'s Using Dynamic Analysis to Discover Polynomial and Array Invariants
Mon Oct 22 Abstract Interpretation Required:
  1. Abramski's An introduction to abstract interpretation
  2. Thompson's Reflections on Trusting Trust
  3. Wikipedia's XcodeGhost (skim and compare to the Thopmson reading)
Optional:
  1. Wikipedia's Abstract Interpretation
Wed Oct 24 Abstract Interpretation 2:
The Wrath of Cousot
Required:
  1. Cousot and Cousot's Abstract Interpretation
Mon Oct 29 Lambda Calculus And Functional Programming Required:
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
Wed Oct 31 Lambda Two: Electric Boogaloo Required:
  1. Li & Zdancewic's Downgrading Policies and Relaxed Noninterference (only Section 4 is required; the paper describes secure information flow and non-interference using the lambda calculus)
Mon Nov 05 Simply-Typed Lambda Calculus
Required:
  1. Luca Cardelli's Type Systems
  2. Andrew Wright and Matthias Felleisen's A syntactic approach to type soundness (it's not as long as it looks)
Wed Nov 07 Monomorphic Type Systems HW 5 Due
Project Status Update Due
Required:
  1. Xavier Leroy's Formal Certification of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
Mon Nov 12 Second-Order Types (Polymorphism) Required:
  1. Wikipedia's Subtype polymorphism
  2. Wikipedia's Liskov substitution principle
Wed Nov 14 Recursive Types and Subtyping Required:
  1. Wadler's Theorems for free!
Mon Nov 19 Dependant Types and Data Abstraction Required:
  1. Microsoft's Source Annotation Language (pay special attention to annotations describing field or structure sizes)
Wed Nov 21
Thanksgiving Recess
No Lecture — Thanksgiving Recess (Nov 21)
Mon Nov 26 Communication and Concurrency Required:
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
Wed Nov 28 Fault Localization and Cooperative Bug Isolation Required:
  1. Liblit et al.'s Bug Isolation via Remote Program Sampling
  2. Jones and Harrold's Empirical evaluation of the Tarantula automatic fault-localization technique
Mon Dec 03 Automated Program Repair Required:
  1. Weimer et al.'s Automatically Finding Patches Using Genetic Programming
  2. Le Goues et al.'s A Systematic Study of Automated Program Repair: Fixing 55 out of 105 bugs for $8 Each
Wed Dec 05 Program Repair "is" Program Reachability Required:
  1. Nguyen et al.'s Connecting Program Synthesis and Reachability: Automatic Program Repair using Test-Input Generation
  2. ibid., appendix (pp. 19-22) — read the full proofs
Mon Dec 10 Grad PL vs. the World HW6 Due Optional, For Discussion:
  1. Floyd, Santander, and Weimer's Decoding the representation of code in the brain: An fMRI study of code review and expertise
  2. Weimer's Consciousness and Time as Research Problems