Date Topic and Notes Homework Reading For This Class
Wed Jan 08 Welcome To Wonderland (no attendance check on first lecture) Homeworks are posted.
Start early!
None! (First class.)
Mon Jan 13 Model Checking
SLAM Introduction
Reading Quiz (you are responsible for checking for all future reading quizzes) 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 15 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
Fri Jan 17 HW0 Due
Mon Jan 20
MLK Day
No Lecture — MLK Day
Wed Jan 22 A Simple Imperative Language
Operational Semantics

HW0 Peer Discussion
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
Fri Jan 24 HW0 Peer Review Due
Mon Jan 27 Contextual Operational Semantics HW1 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)
Wed Jan 29 Proof Techniques For Operational Semantics: Structural Induction
HW1 Peer Discussion
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)
Mon Feb 03 Automated Theorem Proving, DPLL and Simplex HW1 Peer Review Due Required:
  1. Ganziner et al.'s DPLL(T): Fast Decision Procedures
  2. Wikipedia's Simplex Algorithm
Wed Feb 05 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)
Fri Feb 07 HW2 Due
Mon Feb 10 Intro To Axiomatic Semantics 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
Wed Feb 12 Axiomatic Semantics 2:
With A Vengeance

HW2 Peer Discussion
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)
Mon Feb 17 Symbolic Execution HW2 Peer Review Due 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 Feb 19 Invariant Detection 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
Fri Feb 21 HW3 Due
Mon Feb 24 Abstract Interpretation
HW3 Peer Discussion
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 Feb 26 Abstract Interpretation 2:
The Wrath of Cousot
HW3 Peer Review Due Required:
  1. Cousot and Cousot's Abstract Interpretation
Mon Mar 03
Spring Break
No Lecture — Spring 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
Wed Mar 05
Spring Break
No Lecture — Spring Break
Mon Mar 10 Lambda Calculus And Functional Programming Required:
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
Wed Mar 12 Lambda Two: Electric Boogaloo HW4 Due 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 Mar 17 Simply-Typed Lambda Calculus
HW4 Peer Discussion
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 19 Monomorphic Type Systems HW4 Peer Review Due Required:
  1. Xavier Leroy's Formal Certification of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
Mon Mar 24 Second-Order Types (Polymorphism) Required:
  1. Wikipedia's Subtype polymorphism
  2. Wikipedia's Liskov substitution principle
Wed Mar 26 Recursive Types and Subtyping HW5 Due Required:
  1. Wadler's Theorems for free!
Mon Mar 31 Dependant Types and Data Abstraction
HW5 Peer Discussion
Required:
  1. Microsoft's Source Annotation Language (pay special attention to annotations describing field or structure sizes)
Wed Apr 02 Communication and Concurrency HW5 Peer Review Due Required:
  1. Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
Mon Apr 07 Large Language Models and Formal Postconditions
Wed Apr 09 Neurosymbolic Approaches
Mon Apr 14 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 Apr 16 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 Apr 21
Last Class
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