Wed Sep 06

Welcome To Wonderland

Some homeworks are posted.
Start early!

None! (First class.)

Mon Sep 11

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 13

Program Verification Using
CounterexampleGuided
Abstraction Refinement


Required:
 Henzinger
et al.'s Lazy Abstraction
Optional:
 Henzinger
et al.'s Threadmodular Abstraction Refinement

Mon Sep 18

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 20

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
(recent paper  POPL 2005, 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
(recent paper  POPL 2005, 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 25

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)
Discussion:

Materials for discussion section
(no need to look in advance)

Wed Sep 27

Automated Theorem Proving,
DPLL and Simplex


Required:

Ganziner et al.'s DPLL(T): Fast Decision
Procedures

Wikipedia's
Simplex Algorithm
Discussion:

Materials for discussion section
(no need to look in advance)

Mon Oct 02

Automated Theorem Proving,
SMT, DPLL(T) and Proof Checking

HW 2 Due

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 04

Intro To Axiomatic Semantics


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 09

Axiomatic Semantics 2: With A Vengeance

Project Proposal Due
HW 3 Due
(not accepted late)

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 11

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 16 Fall Study Break

No Lecture — Fall Study Break
(Oct 16)


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 18

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 23

Abstract Interpretation


Required:

Abramski's An introduction to abstract
interpretation
 Thompson's
Reflections on Trusting Trust
Optional:

Wikipedia's
Abstract Interpretation

Wed Oct 25

Abstract Interpretation 2:
The Wrath of Cousot


Required:

Cousot and Cousot's Abstract
Interpretation

Mon Oct 30

Lambda Calculus And Functional Programming


Required:

Benjamin Pierce's Foundational Calculi for Programming Languages (pages 110)

Wed Nov 01

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 06

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 08

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 13

SecondOrder Types (Polymorphism)


Required:
 Wikipedia's
Subtype polymorphism
 Wikipedia's
Liskov substitution principle

Wed Nov 15

Recursive Types and Subtyping


Required:
 Wadler's Theorems for free!

Mon Nov 20

Dependant Types and
Data Abstraction


Required:
 Microsoft's
Source Annotation Language (pay special attention to annotations
describing field or structure sizes)

Wed Nov 22

Communication and Concurrency


Required:

Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
Discussion:

Slides for Game Theory discussion
(no need to look in advance)

Mon Nov 27

Designing
and Presenting Programming Languages
in the Broader Research Community:
A Case Study of Three DomainSpecific Languages Languages
(Kevin Angstadt)
Weimer at NSF Panel


Required:
 Angstadt et al.'s
RAPID Programming of PatternRecognition Processors
 RaganKelley et al.'s Decoupling
Algorithms from Schedules for Easy Optimization of Image Processing
Pipelines
 Hnat et al.'s MacroLab: A VectorBased
Macroprogramming Framework for CyberPhysical Systems

Wed Nov 29

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 04

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
Discussion:

Slides for Coq discussion
(no need to look in advance)

Wed Dec 06

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 11

Grad PL vs. the World
 Projects 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
