17-355/17-665/17-819 Program Analysis

Note: This site is still under construction and the schedule below is not yet finalized. Details are subject to change as we finalize course plans for Fall 2026.

Course Description

This course covers both foundations and practical aspects of the automated analysis of programs, which is becoming increasingly critical to find software errors and assure program correctness. The theory of abstract interpretation captures the essence of a broad range of program analyses and supports reasoning about their correctness. Building on this foundation, the course will describe program representations, data flow analysis, alias analysis, interprocedural analysis, dynamic analysis, and symbolic execution. Through assignments and projects, students will design and implement practical analysis tools that find bugs and verify properties of software.

This course fulfills the Logic and Languages constrained elective category for the Computer Science major as well as the Theoretical Foundations requirement of the Computer Science master's degree.

Why take this course?

Logistics and People

Class: Tue/Thu 11:00 a.m. — 12:20 p.m. in WEH 5328
Recitation: Fri 10:00 a.m. — 10:50 a.m. in WEH 5320
Fall 2026
12 units

Professor Fraser Brown
CIC 2218
Office hours: TBD
Email: fraserb@andrew.cmu.edu
Headshot of Professor Fraser Brown
TA: Yiliang Liang
Office hours: TBD
Email: yiliangl@andrew.cmu.edu
Headshot of teaching assistant Yiliang Liang

Course Syllabus and Policies

The syllabus covers course learning objectives, supplemental textbooks, assessments, late work policy, and policies. Consult Canvas and especially Piazza for up-to-date announcements and discussion (links in header).

Schedule

We are still working to finalize the schedule for Fall 2026. The schedule below is a draft and is subject to significant change.

Date Topic Reading/Material HW Due Optional Reading
Aug 25 Introduction, Program Representation, and Syntactic Analysis Text ch. 1 & 2 PPA ch. 1
Aug 27 Program Semantics Text ch. 3
Aug 28 recitation CodeQL
Sep 1 Program Semantics (cont.)
Sep 3 Program Semantics (cont.) hw1 PPA ch. 2 & 6
Sep 4 recitation Semantics ex1, ex2
Sep 8 Dataflow Analysis & Abstract Interpretation Framework Text ch. 4 PPA ch. 2.1
Sep 10 Dataflow Analysis examples Text ch. 5 hw2 pdf mathpartir PPA ch. 2
Sep 11 recitation Specifying/Implementing Dataflow Analysis
Sep 15 Dataflow Analysis examples (cont.) PPA ch. 2.2—2.3
Sep 17 Termination and Correctness Text ch. 6 hw3 pdf PPA ch. 2.3—2.4
Sep 18 recitation Data-Flow Analysis Correctness notes, sol2, sol2det, sol3
Sep 22 Termination and Correctness PPA ch. 2.5
Sep 24 Precision and Widening Text ch. 7 hw4 pdf (due 9/30) PPA ch. 2.5
Sep 25 recitation repo
Sep 29 Interprocedural analysis Text ch. 8
Oct 1 Context-Sensitive Analysis Text ch. 8 & ch. 10.2
Oct 2 recitation Midterm review Midterm Study Guide
Oct 6 Pointer Analysis + Call Graphs for Object-Oriented Languages Text ch. 10 hw5 checkpoint pdf PPA ch. 3
Oct 8 Midterm exam 1 midterm
Oct 9 no recitation
Oct 12-16 Fall Break; no classes
Oct 20 Intro to Hoare Logic Text ch. 11
Oct 22 Verification using Hoare Logic Text ch. 11 hw5
Oct 23 recitation Hoare Logic Proofs using Axiomatic Semantics notes, solutions
Oct 27 Symbolic Execution Text ch. 13
Oct 29 Concolic Testing Text ch. 14 hw6 pdf
Oct 30 recitation Midterm 1 review
Nov 3 Democracy Day; no class
Nov 5 Satisfiability Modulo Theories Text ch. 12 hw7 pdf (due 11/11)
Nov 6 recitation Intro to Z3 repo
Nov 10 Satisfiability Modulo Theories (cont.)
Nov 12 Program Synthesis Text ch. 15 project proposal
project instructions
Nov 13 recitation Simple synthesis using Z3 repo ex2-sol (w/bug) ex2-synth
Nov 17 Program Repair (guest lecture by Claire Le Goues)
Nov 19 Temporal Logic and Model Checking (guest lecture by Ian) supplementary reading hw8 pdf
Nov 20 recitation Midterm review
Nov 24 Midterm exam 2 midterm
Nov 26 Thanksgiving Break; no class
Nov 27 No recitation
Dec 1 Dynamic Analysis (Fuzz Testing, Invariant Generation) Text ch. 16
Dec 3 Review and Project Discussions project checkpoint
Dec 4 recitation Dynamic analysis on stack machine bytecode repo
TBD Project Presentations (Time & Location TBD) project final report