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

Class Tu/Th 9:00 - 10:20 a.m. in PH A18B
Recitation F 9:30 - 10:20 a.m. in GHC 4211
Spring 2018
12 units

Professors Jonathan Aldrich and Claire Le Goues
aldrich and clegoues at cs dot cmu dot edu
WEH 4216 and 5117
Office hours to be selected (with student input) on the first day of class
For appointments outside of office hours, email the instructor.

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.

New: For 2018, this course fulfills the Logic and Languages constrained elective category for the Computer Science major.

Why take this course?

Course Syllabus and Policies

The syllabus covers course learning objectives, supplemental textbooks, assessments, late work policy, and policies.


Date Topic and Notes Additional Reading or Code Assignments Due
Jan 16 Introduction, Program Representation, and Syntactic Analysis
(notes, slides, in-class exercises)
PPA ch. 1 (optional)
Jan 18 Program Semantics
Jan 19 RecitationSyntactic Analysis in Soot 17-355-lab-1.zip
Jan 23 Dataflow Analysis and Abstract Interpretation PPA ch. 2 (optional)
Jan 25 Dataflow Analysis and Abstract Interpretation (continued) PPA ch. 6 (optional) hw1
Jan 26 RecitationSemantics
Jan 30 Dataflow Analysis examples
Feb 1 Dataflow Analysis termination and complexity PPA ch. 4 (optional) hw2
Feb 2 recitationSpecifying Dataflow Analysis
Feb 6 Widening and collecting
Feb 8 Dataflow Analysis wrap-up hw3
Feb 9 RecitationImplementing dataflow analysis
Feb 13 Interprocedural analysis
Feb 15 Control flow analysis and dynamic dispatch hw4
Feb 16 RecitationProving analyses correct
Feb 20 Context-sensitive interprocedural analysis
Feb 22 Interprocedural analysis, continued hw5
Feb 23 RecitationInterprocedural analysis in Soot
Feb 27 Pointer analysis
Mar 1 Hoare Logic hw6
Mar 2 RecitationMidterm review
Mar 6 Hoare Logic
Mar 8 Midterm Exam
Mar 9 no recitationMid-Semester Break
Mar 20 Satisfiability Modulo Theories
Mar 22 Program synthesis hw7
Mar 23 recitation
Mar 27 Program synthesis, continued
Mar 29 Symbolic execution Mixing Type Checking and Symbolic Execution Project proposal
Mar 30 Recitation
Apr 3 Concolic execution and test generation
Apr 5 Dynamic analysis hw8
Apr 6 Recitation
Apr 10 Model checking
Apr 12 Model checking hw9
Apr 13 Recitation
Apr 17 Program repair
Apr 19 No lecture: Spring Carnival
Apr 20 no recitationSpring Carnival
Apr 24 Datalog
Apr 26 Separation logic Project checkpoint 1
Apr 27 RecitationChalice list.chalice
May 1 TBA
May 3 TBA
May 4 No Recitation
Finals week Project presentations Project