Date Topic and Notes Homework Reading For This Class
Wed Jan 20 Welcome To Wonderland Homeworks are posted.
Start early!
None! (First class.)
Mon Jan 25 Model Checking
SLAM Introduction

[zoom recording]
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 Jan 27 Program Verification Using Counterexample-Guided Abstraction Refinement
[zoom recording]
Required:
  1. Henzinger et al.'s Lazy Abstraction
Optional:
  1. Henzinger et al.'s Thread-modular Abstraction Refinement
Fri Jan 29 HW0 Due
Mon Feb 01 A Simple Imperative Language
Operational Semantics

HW0 Peer Review
[zoom recording]
Required:
  1. Hoare's Hints On Programming Language Design (shorter than it looks)
  2. Spolsky's The Perils of JavaSchools
Recommended:
  1. Winskel Chapter Two: Introduction to operational semantics
Wed Feb 03 Contextual Operational Semantics
[zoom recording]
HW0 Peer Review Due 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)
Fri Feb 05 HW1 Due
Mon Feb 08 Proof Techniques For Operational Semantics: Structural Induction
HW1 Peer Review
[zoom recording]
Required:
  1. Wikipedia's Natural deduction, sections 1–5 and 8 (shows judgments and rules of inference for propositional logic; this provides another take on derivations)
Recommended:
  1. Winskel Chapter Three: Some principles of induction
Optional:
  1. Phillip's Degrees of Interpretation (Philosophy of Science; relevant if you're interested in the basis of math or theory)
Wed Feb 10 Automated Theorem Proving, DPLL and Simplex
[zoom recording]
HW1 Peer Review Due Required:
  1. Ganziner et al.'s DPLL(T): Fast Decision Procedures
  2. Wikipedia's Simplex Algorithm
Mon Feb 15 Automated Theorem Proving, SMT, DPLL(T) and Proof Checking
[zoom recording]
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 Feb 17 Intro To Axiomatic Semantics
[zoom recording]
Required:
  1. Hoare's Proof of a program: FIND
Recommended:
  1. Winskel Chapter 6.5 to 6.6: Soundness and Example
  2. Winskel Chapter 7.1 to 7.3: Completeness of the Hoare rules
Fri Feb 19 HW2 Due
Mon Feb 22 Axiomatic Semantics 2:
With A Vengeance

HW2 Peer Review
[zoom recording]
Required:
  1. Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
Recommended:
  1. Winskel Chapter 7.4 to 7.5: VC Completeness and Predicates
Optional:
  1. Necula's Completeness of Axiomatic Semantics (using operational semantics)
Wed Feb 24
Well-Being Break
No Lecture — Well-Being Break 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
Mon Mar 01 Symbolic Execution
[zoom recording]
Required:
  1. Manuvir Das et al.'s ESP: path-sensitive program verification in polynomial time
  2. Buse and Weimer's Automatically Documenting Program Changes
Wed Mar 03 Invariant Detection
[zoom recording]
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
Sat Mar 06 HW3 Due
Mon Mar 08 Abstract Interpretation
HW3 Peer Review
[zoom recording]
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 Mar 10 Abstract Interpretation 2:
The Wrath of Cousot

[zoom recording]
Required:
  1. Cousot and Cousot's Abstract Interpretation
Mon Mar 15 Lambda Calculus And Functional Programming
[zoom recording]
Required:
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
Wed Mar 17 Lambda Two: Electric Boogaloo
[zoom recording]
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)
Fri Mar 19 HW4 Due
Mon Mar 22 Simply-Typed Lambda Calculus
HW4 Peer Review
[zoom recording]
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 Mar 24 Monomorphic Type Systems
[zoom recording]
Required:
  1. Xavier Leroy's Formal Certification of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
Mon Mar 29 Second-Order Types (Polymorphism)
[zoom recording]
Required:
  1. Wikipedia's Subtype polymorphism
  2. Wikipedia's Liskov substitution principle
Wed Mar 31 Recursive Types and Subtyping
[zoom recording]
Required:
  1. Wadler's Theorems for free!
Fri Apr 02 HW5 Due
Mon Apr 05 Dependant Types and Data Abstraction
HW5 Peer Review
[zoom recording]
Required:
  1. Microsoft's Source Annotation Language (pay special attention to annotations describing field or structure sizes)
Wed Apr 07 Communication and Concurrency
[zoom recording]
Required:
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
Mon Apr 12 Fault Localization and Cooperative Bug Isolation
[zoom recording]
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
Wed Apr 14 Automated Program Repair
[zoom recording]
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
Mon Apr 19 Program Repair "is" Program Reachability
[zoom recording]
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
Wed Apr 21 Grad PL vs. the World
[zoom recording]
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