The following schedule lists the topics we plan to cover and approximately the number of meetings we will spend on each topic. The schedule is tentative. Most likely, things will change during the semester, and I will revise the schedule as necessary.
The Reading column lists the assigned reading for the meeting. You should view the readings as an introduction to spark discussion in class.
The Assignment column lists the due date for each assignment.
The readings will be classified into the following order of recommendation: Advised (highest importance), Recommended (important but read after previous category), and Supplemental (additional material for a different perspective).
|T||8/27||Welcome and course overview [slides]||Get set up with Piazza and Moodle. Then, introduce yourself on Piazza.|
|R||8/29||Application||OCaml Tour [in-class code, tour code]||
Recommended. Thomas Ball and Sriram K. Rajamani. The SLAM Project: Debugging System Software via Static Analysis. Symposium on Principles of Programming Languages (POPL), 2002.
Recommended. Thomas Ball and Sriram K. Rajamani. Automatically Validating Temporal Safety Properties of Interfaces. International SPIN Workshop, 2001.
|T||9/3||Application||Model checking and SLAM [slides]||
Recommended. Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, and Gregoire Sutre. Lazy Abstraction. Symposium on Principles of Programming Languages (POPL), 2002.
|R||9/5||Application||Counterexample-guided abstraction refinement [slides]||
Recommended. Winskel Chapter 1 and 3.1 (for preliminaries and hw0)
|hw0 due 9/7|
|T||9/10||Foundations||A simple imperative language and big-step operational semantics [whiteboard]||
Advised. Winskel 2.1-2.5
|T||9/17||Foundations||A simple imperative language and big-step operational semantics [whiteboard]|
|R||9/19||Foundations||Small-step operational semantics [whiteboard]||
Advised. Winskel 2.6
Recommended. Pierce 3.5
Supplemental. Pierce, rest of Chapter 3
Supplemental. Here is essentially a textbook on operational semantics. Chapter 2 provides another take on small-step operational semantics (where Winskel left as an exercise).
|hw1 due 9/21|
|T||9/24||Foundations||Contextual small-step operational semantics|
|R||9/26||Foundations||Proof techniques: structural induction [whiteboard]||
Advised. Winskel 3.2-3.5
Recommended. Harper Chapter 2
|T||10/1||Foundations||Proof techniques: structural induction [whiteboard]||
Recommended. Winskel Chapter 4
|R||10/3||Foundations||Proof techniques: structural induction [whiteboard,hw2 notes]||hw2 due 10/5|
|T||10/8||Foundations||Proof techniques [whiteboard]|
|R||10/10||Foundations||Denotational semantics: An introduction [whiteboard]||
Advised. Winskel, Chapter 5 (up to at least 5.4)
|hw3 due 10/12|
|T||10/15||Foundations||Denotational semantics: An introduction [whiteboard]||
Advised. Winskel, Chapter 5 (finish)
Recommended. Winskel, Chapter 8 (read for the general concepts, not the details)
Recommended. David A. Schmidt. Denotational Semantics.
Supplemental (Classic). Dana Scott and Christopher Strachey. Towards a Mathematical Semantics for Computer Languages.
Supplemental. For an alternative presentation of partial orders, least upper bounds, monotonic and continuous functions, and least fixed points, take a look at the following report (up to and including Section 2.4):
|R||10/17||Foundations||Proof review [whiteboard]||hw4 due 10/19|
|R||10/24||Foundations||Axiomatic semantics [whiteboard]||
Advised. Winskel, 6.1-6.4
Recommended. C.A.R. Hoare. An Axiomatic Basis for Computer Programming. CACM 12(10), October 1969.
Recommended. Robert W. Floyd. Assigning Meanings to Programs.
|T||10/29||Application||Guest Lecture: Devin Coughlin||hw5 due 10/29|
|R||10/31||Application||Guest Lecture: Sam Blackshear|
|T||11/5||Foundations||Denotational semantics: An introduction [whiteboard]|
|R||11/7||Foundations||Axiomatic semantics [whiteboard]||
Advised. Winskel, 6.5-6.7 and Chapter 7
|T||11/12||Foundations||Axiomatic semantics: soundness and completeness||
Recommended. Edsger W. Dijkstra. Guarded Commands, Nondeterminacy and Formal Derivation of Programs.
|R||11/14||Foundations||Verification conditions and symbolic execution||
Recommended. Choose one of the following papers on using symbolic execution for automated testing:
Recommended. The following is the classic paper on symbolic execution:
|T||11/19||Foundations||Verification conditions and symbolic execution [whiteboard]|
|R||11/21||Foundations||Verification conditions and symbolic execution [whiteboard]|
|T||11/26||No class: Fall break|
|R||11/28||No class: Fall break|
|T||12/3||Foundations||Abstract interpretetation: An introduction [whiteboard]||
Advised. Patrick Cousot. Abstract Interpretation Based Formal Methods and Future Challenges. Informatics, 10 Years Back - 10 Years Ahead, 2001.
Ken Thompson. Reflections on Trusting Trust. CACM 27(8), August 1984. This is Ken Thompson's Turing Award lecture.
Recommended (classic paper). The following is the classic paper on abstract interpretation:
|R||12/5||Final exam review [whiteboard]|