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).

Date Part Topic Reading Assignment
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
R 9/12 Canceled: Flood
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
T 10/22 Foundations Proof review
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
R 11/14 Foundations Verification conditions and symbolic execution
Recommended. Choose one of the following papers on using symbolic execution for automated testing:
Supplemental.
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]
T 12/10 Project presentations
R 12/12 Project presentations