Wed Sep 05
|
Welcome To Wonderland
|
Some homeworks are posted.
Start early!
|
None! (First class.)
|
Mon Sep 10
|
Model Checking
SLAM Introduction
|
|
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 Sep 12
|
Program Verification Using
Counterexample-Guided
Abstraction Refinement
|
|
Required:
- Henzinger
et al.'s Lazy Abstraction
Optional:
- Henzinger
et al.'s Thread-modular Abstraction Refinement
|
Mon Sep 17
|
A Simple Imperative Language Operational Semantics
|
HW 0 Due
|
- Winskel Chapter Two: Introduction to operational semantics
- Hoare's Hints On Programming Language
Design (shorter than it looks)
-
Spolsky's The Perils of JavaSchools
|
Wed Sep 19
|
Contextual Operational Semantics
|
|
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)
|
Mon Sep 24
|
Proof Techniques For Operational Semantics: Structural Induction
|
HW 1 Due
|
Required:
-
Chapitre Trois De Winskel: Some principles of induction
- 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:
-
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:
-
Ganziner et al.'s DPLL(T): Fast Decision
Procedures
-
Wikipedia's
Simplex Algorithm
|
Mon Oct 01
|
Automated Theorem Proving,
SMT, DPLL(T) and Proof Checking
|
|
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 Oct 03
|
Intro To Axiomatic Semantics
|
HW 2 Due
|
Required:
-
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
-
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:
-
Winskel Chapters 7.4-7.6: Completeness of the Hoare Rules
-
Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
Optional:
-
Necula's Completeness of
Axiomatic Semantics (using operational semantics)
|
Wed Oct 10
|
Symbolic Execution
|
|
Required:
- Manuvir Das et al.'s ESP:
path-sensitive program verification in polynomial time
-
Buse and Weimer's Automatically Documenting Program Changes
|
Mon Oct 15 Fall Study Break
|
No Lecture — Fall Study Break
(Oct 15)
|
|
Optional:
- Austen's
Pride and Prejudice
- Barzun's
From Dawn To Decadence
- Diamond's
Guns, Germs, and Steel
- Goldman's
The Princess Bride
|
Wed Oct 17
|
Invariant Detection
|
HW 4 Due
|
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
|
Mon Oct 22
|
Abstract Interpretation
|
|
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 Oct 24
|
Abstract Interpretation 2:
The Wrath of Cousot
|
|
Required:
-
Cousot and Cousot's Abstract
Interpretation
|
Mon Oct 29
|
Lambda Calculus And Functional Programming
|
|
Required:
-
Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
|
Wed Oct 31
|
Lambda Two: Electric Boogaloo
|
|
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)
|
Mon Nov 05
|
Simply-Typed Lambda Calculus
|
|
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 Nov 07
|
Monomorphic Type Systems
|
HW 5 Due
Project Status Update Due
|
Required:
- 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:
- Wikipedia's
Subtype polymorphism
- Wikipedia's
Liskov substitution principle
|
Wed Nov 14
|
Recursive Types and Subtyping
|
|
Required:
- Wadler's Theorems for free!
|
Mon Nov 19
|
Dependant Types and
Data Abstraction
|
|
Required:
- 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:
-
Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
|
Wed Nov 28
|
Fault Localization and
Cooperative Bug Isolation
|
|
Required:
-
Liblit et al.'s Bug
Isolation via Remote Program Sampling
-
Jones and Harrold's
Empirical evaluation of the Tarantula automatic fault-localization
technique
|
Mon Dec 03
|
Automated Program Repair
|
|
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
|
Wed Dec 05
|
Program Repair "is" Program Reachability
|
|
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
|
Mon Dec 10
|
Grad PL vs. the World
| 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
|