Date

Topic (and notes, when available)

Homework

Reading For This Class

Wed Aug 26

Welcome To Wonderland

Most homeworks are posted.
Start early!

None! (First class.)

Mon Aug 31

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 03

Program Verification Using
CounterexampleGuided
Abstraction Refinement


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

Mon Sep 07

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 09

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 14

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 16

Automated Theorem Proving,
DPLL and Simplex


Required:

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

Wikipedia's
Simplex Algorithm

Mon Sep 21

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 Sep 23

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 Sep 28

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 Sep 30

Symbolic Execution


 Manuvir Das et al.'s ESP:
pathsensitive program verification in polynomial time

Buse and Weimer's Automatically Documenting Program Changes

Mon Oct 05 Reading Day

No Lecture — Reading Day (Oct 05)

Wed Oct 07

Invariant Detection

HW 4 Due

 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 12

Abstract Interpretation


Required:

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

Wikipedia's
Abstract Interpretation

Wed Oct 14

Abstract Interpretation 2:
The Wrath of Cousot



Cousot and Cousot's Abstract
Interpretation

Mon Oct 19

Lambda Calculus And Functional Programming



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

Wed Oct 21

Lambda Two: Electric Boogaloo


 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 Oct 26

SimplyTyped Lambda Calculus


 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 Oct 28

Monomorphic Type Systems

HW 5 Due
Project Status Update Due

 Xavier Leroy's Formal Certification
of a Compiler Backend or: Programming a Compiler with a Proof Assistant

Mon Nov 02

SecondOrder Types (Polymorphism)


 Wikipedia's
Subtype polymorphism
 Wikipedia's
Liskov substitution principle

Wed Nov 04

Recursive Types and Subtyping


 Wadler's Theorems for free!

Mon Nov 09

Dependant Types and
Data Abstraction


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

Wed Nov 11

Communication and Concurrency


Required:

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

Attend the Fireside Chat with Jason
and abhi after class in Thornton D 221

Mon Nov 16

Machine Learning and Programming Languages


 Hooimeijer and Weimer's Modeling Bug Report Quality

Wed Nov 18

Fault Localization and
Cooperative Bug Isolation



Liblit et al.'s Bug
Isolation via Remote Program Sampling

Jones and Harrold's
Empirical evaluation of the Tarantula automatic faultlocalization
technique

Mon Nov 23

Guest Lecture: The RAPID Programming Language (Kevin Angstadt)


 Reading Guide For Lecture
 Angstadt et al.'s
RAPID Programming of PatternRecognition Processors
 Frigo et al.'s The Implementation
of the Cilk5 Multithreaded Language
 Hnat et al.'s A VectorBased
Macroprogramming Framework for CyberPhysical Systems

Wed Nov 25 Thanksgiving Break

No Lecture — Thanksgiving Recess


Optional:
 Austen's
Pride and Prejudice
 Barzun's
From Dawn To Decadence
 Diamond's
Guns, Germs, and Steel
 Goldman's
The Princess Bride

Mon Nov 30

Automated Program Repair



Weimer
et al.'s Automatically Finding Patches Using Genetic Programming

Wed Dec 02

Program Repair "is" Program Reachability



Mon Dec 07

Grad PL vs. the World
 Projects Due


Mon Dec 07 5pm Room 340

10Minute Student Presentations
3Minute Questions
2Minute Setup and Forms
(show up on time)
(special meeting time)


Speech Evaluation Form
 5:15  5:30 Alex Thomas (joint)
 5:30  5:50 Ben Lowman (joint)
 5:50  6:10 Hannah Li
 6:10  6:25 Soheil Nematihaji
 6:25  6:40 Hao Bai
