Date

Topic (and notes, when available)

Homework

Reading For This Class

Tue Aug 23

Welcome To Wonderland

All homeworks are posted.
Start early!

None! (First class.)

Thu Aug 25

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)

Tue Aug 30

Program Verification Using
Counterexampleguided
Abstraction Refinement


Required:

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

Thu Sep 01

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

Tue Sep 06

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)

Thu Sep 08

Machine Learning 1
(Guest Lecture:
Pieter Hooimeijer)


 Hooimeijer and Weimer's Modeling Bug Report Quality

Tue Sep 13

Machine Learning 2
(Guest Lecture:
Ray Buse)

HW 1 Due

 Buse and Weimer's A Metric for Software Readability

Thu Sep 15

Proof Techniques For Operational Semantics; Structural Induction


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)

Tue Sep 20

Whirlwind Denotation Semantics
 HW 2 Due

Required:

Kapitel Fünf Winskel: The denotational semantics of IMP
Optional:

Capitolo Otto di Winskel: Introduction to domain theory
(read for general concepts, not details)

Lee's A Denotational Semantics for
Dataflow with Firing (skim up to and including section 2.4 for an
alternative presentation of partial orders, least upper bounds, monotonic
and continuous functions, and least fixed points)

Thu Sep 22

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
Optional:
 Attend the
CS Department Fireside Chat with Malathi Veeraraghavan and
Mark Sherriff. Free food!

Tue Sep 27

Axiomatic Semantics 2: With A Vengeance

Project Proposal 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)

Thu Sep 29

Symbolic Execution

HW 3 Due
(not accepted late)

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

Buse and Weimer's Automatically Documenting Program Changes

Tue Oct 04

Abstract Interpretation


Required:

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

Wikipedia's
Abstract Interpretation

Thu Oct 06

Abstract Interpretation 2:
The Wrath of Cousot

HW 4 Due
(not accepted late)


Cousot and Cousot's Abstract
Interpretation

Tue Oct 11

No Lecture — Reading Day (Oct 11)

Thu Oct 13

Lambda Calculus And Functional Programming



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

Tue Oct 18

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)

Thu Oct 20

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)

Tue Oct 25

Monomorphic Type Systems

HW 5 Due

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

Thu Oct 27

Exceptions and Continuations

Project Status Update Due

Required:

Weimer and Necula's Finding And Preventing RunTime Error Handling
Mistakes
Optional:

John Goodenough's Exception
Handling: Issues and a Proposed Notation (1975, this is
the canonical paper on exception handling)

Tue Nov 01

SecondOrder Types (Polymorphism)


 Wikipedia's
Subtype polymorphism
 Wikipedia's
Liskov substitution principle

Thu Nov 03

Recursive Types and Subtyping


 Wadler's Theorems for free!

Tue Nov 08

Cooperative Bug Isolation
(Guest Lecture:
Ray Buse)



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

Thu Nov 10

Automated Theorem Proving and Proof Checking



Nelson and Oppen's Fast
Decision Procedures Based On Congruence Closure

Dawson Engler et al.'s Automatically
Generating Malicious Disks Using Symbolic Execution (uses
symex and theorem proving)

Tue Nov 15

Dependant Types and
Data Abstraction


 Microsoft's
Source Annotation Language (pay special attention to the
extent option)

Thu Nov 17

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

Tue Nov 22

Automated Program Repair



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

Thu Nov 24

No Lecture — Thanksgiving Recess
(Nov 23  Nov 27)


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

Tue Nov 29

Grad PL vs. the World
 Projects Due


Thu Dec 01

5Minute Student Presentations
1Minute Questions, 1Minute Setup
(show up on time)
(class goes until 5:15)

Presentation Signup Reminder & Hints

Speech Evaluation Form
 Chapman, Peter Marc
 Wang, Xiaoyuan
 DiLorenzo, Jonathan
 Brunelle, Nathan James
 McDowell, Kaitlyn Ann
 Xiang, Jian
 Huang, Yan
 Mohan Ganesh, Ashwin Raghav
 Wadden, John Pierson
 Dorn, Jonathan Andrew
 Landau, Bryan Alexander

Tue Dec 06

5Minute Student Presentations
In MEC 205
1Minute Questions, 1Minute Setup
(show up on time)
(class goes until 5:15)


Speech Evaluation Form
 Al Islam, Samee Zahur
 Zhou, Yuchen
 Braley, Colin Andrew
 Brady, Adam M
 Miller, Katherine Elizabeth
 Yu, Matthew KinMo
 DeweyVogt, Michael Kevin
 Wang, Yajun
 Liu, Liu
 Tong, Tianhao
 Park, Shirley Marie
 Cha, Sahnghyun
 Yanhaona, Muhammad Nur
 Dao, Tung Huy
