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 [inclass 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  Counterexampleguided 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 bigstep operational semantics [whiteboard] 
Advised. Winskel 2.12.5


R  9/12  Canceled: Flood  
T  9/17  Foundations  A simple imperative language and bigstep operational semantics [whiteboard]  
R  9/19  Foundations  Smallstep 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 smallstep
operational semantics (where Winskel left as
an exercise).

hw1 due 9/21 
T  9/24  Foundations  Contextual smallstep operational semantics  
R  9/26  Foundations  Proof techniques: structural induction [whiteboard] 
Advised. Winskel 3.23.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.16.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.56.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:
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 