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
Counterexample-Guided
Abstraction Refinement
|
|
Required:
- Henzinger
et al.'s Lazy Abstraction
Optional:
- Henzinger
et al.'s Thread-modular 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 object-oriented
languages
(recent paper -- POPL 2005, 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 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 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 Sep 28
|
Axiomatic Semantics 2: With A Vengeance
|
Project Proposal Due
HW 3 Due
(not accepted late)
|
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 Sep 30
|
Symbolic Execution
|
|
- Manuvir Das et al.'s ESP:
path-sensitive 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 1-10)
|
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 non-interference using the
lambda calculus)
|
Mon Oct 26
|
Simply-Typed 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 Back-end or: Programming a Compiler with a Proof Assistant
|
Mon Nov 02
|
Second-Order 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 fault-localization
technique
|
Mon Nov 23
|
Guest Lecture: The RAPID Programming Language (Kevin Angstadt)
|
|
- Reading Guide For Lecture
- Angstadt et al.'s
RAPID Programming of Pattern-Recognition Processors
- Frigo et al.'s The Implementation
of the Cilk-5 Multithreaded Language
- Hnat et al.'s A Vector-Based
Macroprogramming Framework for Cyber-Physical 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
|
10-Minute Student Presentations
3-Minute Questions
2-Minute 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
|