The following schedule lists the topics we will cover and approximately the number of meetings we will spend on each topic. The schedule is tentative. Most likely, some 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.

Readings. 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). NNH refers to Nielson et al., Principles of Program Analysis.

Date Topic Reading Assignment
1 T 1/15 Welcome [slides]
Supplemental. John Carmack. Static Code Analysis. This blog post is a famous developer's view of static analysis. John Carmack is known for his contributions to game engines (e.g., Doom).
R 1/17 Inductive Definitions and Operational Semantics [whiteboard]
Advised. Winskel, Chapter 2.
Recommended. Harper, Chapters 1-3 (i.e., Part I). These chapters are background on syntax, judgments, and inductive definitions.
Supplemental. Winskel, Chapters 3-4. These chapters are another source on judgments and inductive definitions.
2 T 1/22 Predicate Abstraction and CEGAR
Guest Lecture: Arlen Cox
Advised.E. M. Clarke, E. A. Emerson, A. P. Sistla. Automatic verification of finite-state concurrent systems using temporal logic specifications, TOPLAS, 8(2):1986.
R 1/24 Predicate Abstraction and CEGAR
Guest Lecture: Arlen Cox
Advised. Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, and Gregoire Sutre. Lazy Abstraction. POPL, 2002. Skim Section 7.
3 T 1/29 Operational Semantics [whiteboard]
R 1/31 Operational Semantics and Type Inference: Your First Static Analysis [whiteboard]
Advised. Pierce, Chapters 3 and 8.
Recommended. Harper, Chapters 6 and 7.3.
Supplemental. Rival, 3.1-3.2.
Supplemental. NNH, Chapter 1.
4 T 2/5 Type Inference: Your First Static Analysis [whiteboard]
Recommended. NNH, 5.1-5.2.
R 2/7 Denotational Semantics [whiteboard]
Advised. Winskel, Chapter 5.
Supplemental. Rival, 3.3.
5 T 2/12 Denotational Semantics [whiteboard]
Recommended. NNH, Chapter 1.
R 2/14 Collecting Semantics and Dataflow Analysis [whiteboard]
Recommended. NNH, 2.1-2.3
6 T 2/19 Collecting Semantics and Dataflow Analysis [whiteboard]
Recommended (Classic). Gary A. Kildall. A unified approach to global program optimization. POPL, 1973.
Recommended (Classic). Michael Karr. Affine relationships among variables of a program. Acta Informatica 6(2):1976.
R 2/21 Abstraction [whiteboard]
Recommended. NNH, 4.3
Supplemental. Rival, 4.1-4.2
7 T 2/26 Abstraction [whiteboard]
R 2/28 Abstract Interpretation [whiteboard]
Recommended. NNH, 4.2
Supplemental. Rival, 4.3, 5.1
8 T 3/5 Abstract Interpretation [whiteboard]
R 3/7 Abstract Interpretation [whiteboard]
9 T 3/12 Project Discussion
R 3/14 Lab 1 Discussion
10 T 3/19 Abstract Interpretation [whiteboard]
Advised. Patrick Cousot and Radhia Cousot. Static Determination of Dynamic Properties of Programs. In B. Robinet, editor, Proceedings of the second international symposium on Programming, Paris, France, pages 106—130, April 13-15 1976, Dunod, Paris.
Advised. Patrick Cousot. Semantic foundations of program analysis. In S.S. Muchnick & N.D. Jones, editors, Program Flow Analysis: Theory and Applications, Ch. 10, pages 303—342, Prentice-Hall, Inc., Englewood Cliffs, New Jersey, U.S.A., 1981.
Supplemental (Classic). Patrick Cousot and Radhia Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the Fourth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 238—252, Los Angeles, California, 1977. ACM Press, New York, NY, USA.
Supplemental (Classic). Patrick Cousot and Radhia Cousot. Systematic Design of Program Analysis Frameworks. In Conference Record of the Sixth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 269—282, San Antonio, Texas, 1979. ACM Press, New York.
R 3/21 Lab and Project Discussion [whiteboard]
11 T 3/26 No Class: Spring Break
R 3/28 No Class: Spring Break
12 T 4/2 Research Topics
R 4/4 Research Topics
13 T 4/9 Research Topics
R 4/11 Research Topics
14 T 4/16 Research Topics
R 4/18 Research Topics
15 T 4/23 Separation Logic [whiteboard]
Advised. John C. Reynolds. Separation Logic: A Logic for Shared Mutable Data Structures. LICS, 2002.
Supplemental. John C. Reynolds. Introduction to Separation Logic. An additional resource are the course notes for this class.
R 4/25 Research Topics
16 T 4/30 Project Presentations: Michael Vitousek, Hadi Ravanbakhsh, Dana Hughes
R 5/2 Project Presentations: Kira Quan, Alex Beal, Mario Barrenechea, Nick Vanderweit, Yi-Fan Tsai