No Lecture — MLK Day
Wed Jan 22
|
A Simple Imperative Language Operational Semantics
HW0 Peer Discussion
|
|
Required:
- Hoare's Hints On Programming Language
Design (shorter than it looks)
-
Spolsky's The Perils of JavaSchools
Recommended:
- Winskel Chapter Two: Introduction to operational semantics
|
Fri Jan 24
|
| HW0 Peer Review Due
|
|
Mon Jan 27
|
Contextual Operational Semantics
| HW1 Due
|
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
(example POPL paper — 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
(example POPL paper — 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)
|
Wed Jan 29
|
Proof Techniques For Operational Semantics: Structural Induction
HW1 Peer Discussion
|
|
Required:
- Wikipedia's
Natural deduction, sections 1–5 and 8 (shows judgments and
rules of inference for propositional logic; this provides another
take on derivations)
Recommended:
-
Winskel Chapter Three: Some principles of induction
Optional:
-
Phillip's Degrees of
Interpretation (Philosophy of Science; relevant if you're
interested in the basis of math or theory)
|
Mon Feb 03
|
Automated Theorem Proving,
DPLL and Simplex
| HW1 Peer Review Due
|
Required:
-
Ganziner et al.'s DPLL(T): Fast Decision
Procedures
-
Wikipedia's
Simplex Algorithm
|
Wed Feb 05
|
Automated Theorem Proving,
SMT, DPLL(T) and Proof Checking
|
|
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)
|
Fri Feb 07
|
—
| HW2 Due
|
|
Mon Feb 10
|
Intro To Axiomatic Semantics
|
|
Required:
-
Hoare's Proof of a program: FIND
Recommended:
-
Winskel Chapter 6.5 to 6.6:
Soundness and Example
-
Winskel Chapter 7.1 to 7.3:
Completeness of the Hoare rules
|
Wed Feb 12
|
Axiomatic Semantics 2: With A Vengeance
HW2 Peer Discussion
|
|
Required:
-
Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
Recommended:
-
Winskel Chapter 7.4 to 7.5:
VC Completeness and Predicates
Optional:
-
Necula's Completeness of
Axiomatic Semantics (using operational semantics)
|
Mon Feb 17
|
Symbolic Execution
| HW2 Peer Review Due
|
Required:
- Manuvir Das et al.'s ESP:
path-sensitive program verification in polynomial time
-
Buse and Weimer's Automatically Documenting Program Changes
|
Wed Feb 19
|
Invariant Detection
|
|
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
|
Fri Feb 21
|
—
| HW3 Due
|
|
Mon Feb 24
|
Abstract Interpretation
HW3 Peer Discussion
|
|
Required:
-
Abramski's An introduction to abstract
interpretation
- Thompson's
Reflections on Trusting Trust
- Wikipedia's
XcodeGhost (skim and compare to the Thopmson reading)
Optional:
-
Wikipedia's
Abstract Interpretation
|
Wed Feb 26
|
Abstract Interpretation 2:
The Wrath of Cousot
| HW3 Peer Review Due
|
Required:
-
Cousot and Cousot's Abstract
Interpretation
|
Mon Mar 03 Spring Break
|
No Lecture — Spring Break
|
|
Optional:
- Austen's
Pride and Prejudice
- Barzun's
From Dawn To Decadence
- Diamond's
Guns, Germs, and Steel
- Goldman's
The Princess Bride
|
Wed Mar 05 Spring Break
|
No Lecture — Spring Break
|
Mon Mar 10
|
Lambda Calculus And Functional Programming
|
|
Required:
-
Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
|
Wed Mar 12
|
Lambda Two: Electric Boogaloo
| HW4 Due
|
Required:
- 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 Mar 17
|
Simply-Typed Lambda Calculus
HW4 Peer Discussion
|
|
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 Mar 19
|
Monomorphic Type Systems
| HW4 Peer Review Due
|
Required:
- Xavier Leroy's Formal Certification
of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
|
Mon Mar 24
|
Second-Order Types (Polymorphism)
|
|
Required:
- Wikipedia's
Subtype polymorphism
- Wikipedia's
Liskov substitution principle
|
Wed Mar 26
|
Recursive Types and Subtyping
| HW5 Due
|
Required:
- Wadler's Theorems for free!
|
Mon Mar 31
|
Dependant Types and
Data Abstraction
HW5 Peer Discussion
|
|
Required:
- Microsoft's
Source Annotation Language (pay special attention to annotations
describing field or structure sizes)
|
Wed Apr 02
|
Communication and Concurrency
| HW5 Peer Review Due
|
Required:
-
Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
|
Mon Apr 07
|
Large Language Models and Formal Postconditions
|
Wed Apr 09
|
Neurosymbolic Approaches
|
Mon Apr 14
|
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
|
Wed Apr 16
|
Program Repair "is" Program Reachability
|
|
Required:
-
Nguyen
et al.'s Connecting Program Synthesis and Reachability: Automatic Program Repair
using Test-Input Generation
-
ibid., appendix (pp. 19-22) — read the full proofs
|
Mon Apr 21 Last Class
|
Grad PL vs. the World
| HW6 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
|