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
Counterexample-guided
Abstraction Refinement
|
|
Required:
-
Henzinger et al.'s Lazy Abstraction
Optional:
- Henzinger
et al.'s Thread-modular 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 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)
|
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 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
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.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)
|
Thu Sep 29
|
Symbolic Execution
|
HW 3 Due
(not accepted late)
|
- Manuvir Das et al.'s ESP:
path-sensitive 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 1-10)
|
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 non-interference using the
lambda calculus)
|
Thu Oct 20
|
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)
|
Tue Oct 25
|
Monomorphic Type Systems
|
HW 5 Due
|
- Xavier Leroy's Formal Certification
of a Compiler Back-end 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 Run-Time 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
|
Second-Order 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
|
5-Minute Student Presentations
1-Minute Questions, 1-Minute 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
|
5-Minute Student Presentations
In MEC 205
1-Minute Questions, 1-Minute 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 Kin-Mo
- Dewey-Vogt, Michael Kevin
- Wang, Yajun
- Liu, Liu
- Tong, Tianhao
- Park, Shirley Marie
- Cha, Sahnghyun
- Yanhaona, Muhammad Nur
- Dao, Tung Huy
|