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
CounterexampleGuided
Abstraction Refinement


Required:
 Henzinger
et al.'s Lazy Abstraction
Optional:
 Henzinger
et al.'s Threadmodular 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 objectoriented
languages
(example POPL paper — uses operational semantics on page 9,
figure 14, just skim to that and note the nonstandard 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 sasecinci pana la sasesapte (6.56.7)
si sapteunu pana la saptetrei (7.17.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.47.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:
pathsensitive 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 110)

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 noninterference using the
lambda calculus)

Mon Nov 05

SimplyTyped 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 Backend or: Programming a Compiler with a Proof Assistant

Mon Nov 12

SecondOrder 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 faultlocalization
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 TestInput Generation

ibid., appendix (pp. 1922) — 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
