Date
|
#
|
Topic (and notes, when available)
|
Homework
|
Reading For The Next Class
|
Thu Aug 24 | 1
|
Welcome To Wonderland
|
|
Winskel Chapter Two: Introduction to operational semantics
Hoare's Hints On Programming Language
Design (shorter than it looks)
Weimer's Midterm Pi (optional,
but if you replace "Cool" with "Your Favorite Language" you should be able
to answer most of the questions in it)
Spolsky's The Perils of JavaSchools (optional, short,
controversial, relevant)
|
Tue Aug 29 | 2
|
A Simple Imperative Language Operational Semantics
| HW 1 Out
|
Choose at least one of these three:
1. Wegner's Programming Languages - The First 25 years
2. Wirth's On the Design of
Programming Languages (bonus points if you mistakenly choose this
one just because it has the lowest page count)
3. 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
(optional, 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
(optional, 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
(optional, basically a textbook, see chapter 2 for another take on what
we're covering in class)
|
Thu Aug 31 | 3
|
Contextual Operational Semantics
| HW 2 Out
| Chaptire Trois De Winskel: Some principles of induction
Wikipedia's
Natural deduction (optional, sections 1-3 show judgments and
rules of inference for a simpler system -- propositional logic, read this
if you want another take on derivations)
Phillip's Degrees of
Interpretation (optional, Philosophy of Science; if you like math
or theory this is worth it)
|
Tue Sep 05 | 4
|
Proof Techniques For Operational Semantics Structural Induction
| HW 1 Due
|
Capítulo Cinco De Winskel: The denotational semantics of IMP
Capítulo Ocho De Winskel: Introduction to domain theory
(read for general concepts, not details)
|
Thu Sep 07 | 5
|
Whirlwind Denotational Semantics
| HW 2 Due On Friday HW 3 Out
| Winskel Kapitel Sechs-Eins Bis Sechs-Vier: The axiomatic semantics
of IMP
Hoare's An Axiomatic Basis for Computer
Programming
Floyd's Assigning Meaning to Programs
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)
|
Tue Sep 12 | 6
|
Intro To Axiomatic Semantics
|
| 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
Necula's Completeness of
Axiomatic Semantics (using operational semantics)
|
Thu Sep 14 | 7
|
Axiomatic Semantics 2: With A Vengeance
Bonus Lecture #1 (6:15pm)
| HW 3 Due HW 4 Out
| Winskel Chapters 7.4-7.6: Completeness of the Hoare Rules
Dijkstra's Guarded Commands, Nondeterminancy and Formal Derivation of Programs
|
Tue Sep 19 | 8
|
Verification Conditions
|
|
Cousot and Cousot's Abstract
Interpretation
Abramski's An introduction to abstract
interpretation
|
Thu Sep 21 | 9
|
Abstract Interpretation
| HW 4 Due HW 5 Out
| Thompson's
Reflections on Trusting Trust
Wikipedia's
Abstract Interpretation (optional)
|
Tue Sep 26 | 10
|
Abstract Interpretation 2:
The Wrath of Cousot
| Project Proposal Due
|
Benjamin Pierce's Foundational Calculi for Programming Languages (pages 1-10)
|
Thu Sep 28 | 11
|
Lambda Calculus And Functional Programming
|
|
Xavier Leroy's Formal Certification
of a Compiler Back-end or: Programming a Compiler with a Proof Assistant
Li & Zdancewic's Downgrading Policies
and Relaxed Noninterference (optional, describes secure information
flow and non-interference using the lambda calculus, check out section 4)
|
Tue Oct 03 | 12
|
Lambda Two: Electric Boogaloo
|
| Luca Cardelli's Type
Systems
|
Thu Oct 05 | 13
|
Simply-Typed Lambda Calculus
|
| Andrew Wright and Matthias
Felleisen's A syntactic approach to type soundness
|
Tue Oct 10 | 14
|
Monomorphic Type Systems
|
|
John Goodenough's Exception
Handling: Issues and a Proposed Notation (optional, 1975, this is
the canonical paper on exception handling)
|
Thu Oct 12 | 15
|
Exceptions, Continuations & Recursive Types
|
|
|
Tue Oct 17 | 16
|
Subtyping
| HW 5 Due
|
Anonymous Class Survey
|
Thu Oct 19
|
|
No Lecture - UVa Football Game
|
|
|
Tue Oct 24
Double Lecture
|
17 - 18
|
5:00 - 6:15: Second-Order Types
6:30 - 7:45:
Dependant Types and
Data Abstraction
|
Project Status Update Due
|
Nelson and Oppen's Fast
Decision Procedures Based On Congruence Closure
|
Thu Oct 26 |
|
No Lecture - OOPSLA/GPCE
|
|
|
Tue Oct 31 | 19
|
Automated Theorem Proving and Proof Checking
|
| Benjamin Pierce's Foundational Calculi for Programming Languages (pages 10-end)
Dawson Engler et al.'s Automatically
Generating Malicious Disks Using Symbolic Execution (optional, uses
symex and theorem proving)
|
Thu Nov 02 | 20
|
Communication and Concurrency
|
|
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
|
Tue Nov 07 | 21
|
Model Checking
SLAM Introduction
|
|
Henzinger et al.'s Lazy Abstraction (optional)
Henzinger
et al.'s Thread-modular Abstraction Refinement (optional)
|
Thu Nov 09 | 22
|
Program Verification Using
Counterexample-guided
Abstraction Refinement
|
|
Robert DeLine and Manuel Fahndrich's Enforcing high-level protocols in low-level software
Weimer and Necula's Finding And Preventing Run-Time Error Handling
Mistakes
|
Tue Nov 14 | 23
|
Type Systems For Resource Management
|
|
|
Thu Nov 16 | 24
|
Region-Based Memory Management
|
|
|
Tue Nov 21 |
|
No Lecture - Thanksgiving Recess
|
|
Austen's
Pride and Prejudice (optional)
Barzun's
From Dawn To Decadence (optional)
|
Thu Nov 23 |
|
No Lecture - Thanksgiving Recess
|
|
Diamond's
Guns, Germs, and Steel (optional)
Goldman's
The Princess Bride (optional)
|
Tue Nov 28 | 25
|
Cooperative Bug Isolation
Bonus Lecture #2 (6:15pm)
| Projects Due
|
Speech Evaluation Form
Object-Oriented Programming Slides
(optional)
|
|
|
Course Material Summary
|
|
|
Thu Nov 30 |
|
5:00pm - 7:00pm:
Student Presentations
|
Presentation Signup Reminder & Hints
|
- Kinga Dobolyi
- Pieter Hooimeijer
- Paul Turner
- Jing Yang
- Hong Pham
|
Tue Dec 05 |
|
5:00pm - 7:30pm:
Student Presentations
|
|
- Ray Buse
- Joy Kamunyori
- Jim Apple
- Aprotim Sanyal
- Clint Smullen
- Karolina Sarnowska
|