Wed Jan 20
|
Welcome To Wonderland
|
Homeworks are posted.
Start early!
|
None! (First class.)
|
Mon Jan 25
|
Model Checking
SLAM Introduction
[zoom recording]
|
|
Required:
-
Thomas Ball and Sriram Rajamani's The SLAM Project: Debugging System Software via Static Analysis
-
Thomas
Ball and Sriram Rajamani's Automatically Validating Temporal Safety
Properties of Interfaces
Optional:
-
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:
- Henzinger
et al.'s Lazy Abstraction
Optional:
- 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:
- Hoare's Hints On Programming Language
Design (shorter than it looks)
-
Spolsky's The Perils of JavaSchools
Recommended:
- Winskel Chapter Two: Introduction to operational semantics
|
Wed Feb 03
|
Contextual Operational Semantics
[zoom recording]
| HW0 Peer Review Due
|
Required:
- Wegner's Programming Languages - The First 25 years
Optional:
- Wirth's On the Design of
Programming Languages (bonus points if you mistakenly choose this
one just because it has the lowest page count)
-
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)
- 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)
- 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)
- 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:
- 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:
-
Winskel Chapter Three: Some principles of induction
Optional:
-
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:
-
Ganziner et al.'s DPLL(T): Fast Decision
Procedures
-
Wikipedia's
Simplex Algorithm
|
Mon Feb 15
|
Automated Theorem Proving,
SMT, DPLL(T) and Proof Checking
[zoom recording]
|
|
Required:
- The Coq Proof
Assistant Tutorial, up to and including Section 1.3.4
Optional:
-
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:
-
Hoare's Proof of a program: FIND
Recommended:
-
Winskel Chapter 6.5 to 6.6:
Soundness and Example
-
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:
-
Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
Recommended:
-
Winskel Chapter 7.4 to 7.5:
VC Completeness and Predicates
Optional:
-
Necula's Completeness of
Axiomatic Semantics (using operational semantics)
|
Wed Feb 24 Well-Being Break
|
No Lecture — Well-Being Break
|
|
Optional:
- Austen's
Pride and Prejudice
- Barzun's
From Dawn To Decadence
- Diamond's
Guns, Germs, and Steel
- Goldman's
The Princess Bride
|
Mon Mar 01
|
Symbolic Execution
[zoom recording]
|
|
Required:
- Manuvir Das et al.'s ESP:
path-sensitive program verification in polynomial time
-
Buse and Weimer's Automatically Documenting Program Changes
|
Wed Mar 03
|
Invariant Detection
[zoom recording]
|
|
Required:
- Ernst et al.'s
Dynamically Discovering Likely Program Invariants To Support Program
Evolution
- 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:
-
Abramski's An introduction to abstract
interpretation
- Thompson's
Reflections on Trusting Trust
- Wikipedia's
XcodeGhost (skim and compare to the Thopmson reading)
Optional:
-
Wikipedia's
Abstract Interpretation
|
Wed Mar 10
|
Abstract Interpretation 2:
The Wrath of Cousot
[zoom recording]
|
|
Required:
-
Cousot and Cousot's Abstract
Interpretation
|
Mon Mar 15
|
Lambda Calculus And Functional Programming
[zoom recording]
|
|
Required:
-
Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
|
Wed Mar 17
|
Lambda Two: Electric Boogaloo
[zoom recording]
|
|
Required:
- 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:
- Luca Cardelli's Type
Systems
- 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:
- 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:
- Wikipedia's
Subtype polymorphism
- Wikipedia's
Liskov substitution principle
|
Wed Mar 31
|
Recursive Types and Subtyping
[zoom recording]
|
|
Required:
- Wadler's Theorems for free!
|
Fri Apr 02
|
—
| HW5 Due
|
|
Mon Apr 05
|
Dependant Types and
Data Abstraction
HW5 Peer Review
[zoom recording]
|
|
Required:
- Microsoft's
Source Annotation Language (pay special attention to annotations
describing field or structure sizes)
|
Wed Apr 07
|
Communication and Concurrency
[zoom recording]
|
|
Required:
-
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:
-
Liblit et al.'s Bug
Isolation via Remote Program Sampling
-
Jones and Harrold's
Empirical evaluation of the Tarantula automatic fault-localization
technique
|
Wed Apr 14
|
Automated Program Repair
[zoom recording]
|
|
Required:
-
Weimer
et al.'s Automatically Finding Patches Using Genetic Programming
-
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:
-
Nguyen
et al.'s Connecting Program Synthesis and Reachability: Automatic Program Repair
using Test-Input Generation
-
ibid., appendix (pp. 19-22) — read the full proofs
|
Wed Apr 21
|
Grad PL vs. the World
[zoom recording]
| HW6 Due
|
Optional, For Discussion:
-
Floyd, Santander, and Weimer's Decoding the
representation of code in the brain: An fMRI study of code review and
expertise
-
Weimer's Consciousness and Time as Research Problems
|