Mon Oct 02
|
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 Oct 04
|
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 Oct 09
|
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 Oct 11
|
Symbolic Execution
|
|
Required:
- Manuvir Das et al.'s ESP:
path-sensitive program verification in polynomial time
-
Buse and Weimer's Automatically Documenting Program Changes
|
Mon Oct 16 Fall Study Break
|
No Lecture — Fall Study Break
(Oct 16)
|
|
Optional:
- Austen's
Pride and Prejudice
- Barzun's
From Dawn To Decadence
- Diamond's
Guns, Germs, and Steel
- Goldman's
The Princess Bride
|
Wed Oct 18
|
Invariant Detection
|
HW 4 Due
|
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
|
Mon Oct 23
|
Abstract Interpretation
|
|
Required:
-
Abramski's An introduction to abstract
interpretation
- Thompson's
Reflections on Trusting Trust
Optional:
-
Wikipedia's
Abstract Interpretation
|
Wed Oct 25
|
Abstract Interpretation 2:
The Wrath of Cousot
|
|
Required:
-
Cousot and Cousot's Abstract
Interpretation
|
Mon Oct 30
|
Lambda Calculus And Functional Programming
|
|
Required:
-
Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
|
Wed Nov 01
|
Lambda Two: Electric Boogaloo
|
|
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 Nov 06
|
Simply-Typed Lambda Calculus
|
|
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 Nov 08
|
Monomorphic Type Systems
|
HW 5 Due
Project Status Update Due
|
Required:
- Xavier Leroy's Formal Certification
of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
|
Mon Nov 13
|
Second-Order Types (Polymorphism)
|
|
Required:
- Wikipedia's
Subtype polymorphism
- Wikipedia's
Liskov substitution principle
|
Wed Nov 15
|
Recursive Types and Subtyping
|
|
Required:
- Wadler's Theorems for free!
|
Mon Nov 20
|
Dependant Types and
Data Abstraction
|
|
Required:
- Microsoft's
Source Annotation Language (pay special attention to annotations
describing field or structure sizes)
|
Wed Nov 22
|
Communication and Concurrency
|
|
Required:
-
Benjamin Pierce's Foundational Calculi for Programming Languages (this time, pages 10–end)
Discussion:
-
Slides for Game Theory discussion
(no need to look in advance)
Mon Nov 27
|
Designing
and Presenting Programming Languages
in the Broader Research Community:
A Case Study of Three Domain-Specific Languages Languages
(Kevin Angstadt)
Weimer at NSF Panel
|
|
Required:
- Angstadt et al.'s
RAPID Programming of Pattern-Recognition Processors
- Ragan-Kelley et al.'s Decoupling
Algorithms from Schedules for Easy Optimization of Image Processing
Pipelines
- Hnat et al.'s MacroLab: A Vector-Based
Macroprogramming Framework for Cyber-Physical Systems
| Wed Nov 29
|
Fault Localization and
Cooperative Bug Isolation
|
|
Required:
-
Liblit et al.'s Bug
Isolation via Remote Program Sampling
-
Jones and Harrold's
Empirical evaluation of the Tarantula automatic fault-localization
technique
| Mon Dec 04
|
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
Discussion:
-
Slides for Coq discussion
(no need to look in advance)
Wed Dec 06
|
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 Dec 11
|
Grad PL vs. the World
| Projects 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
-
Weimer's Consciousness and Time as Research Problems
| | |