CS 4803/8803
Topics in Program Analysis
Fall 2020


Announcements:


Instructor:
Qirun Zhang,
Office: 2324 Klaus
Office Hours: Mon/Wed 3:30 - 4:15 PM
Email: qrzhang@gatech.edu

Lectures:
Time: Mon/Wed 2:00 PM - 3:15 PM
Location: Cherry Emerson 320*
Bluejeans link: Click to join.

Course Summary:
CS 4803/8803 is a course on static program analysis. Static analysis provides a way to reason about programs without actually running them on specific inputs. In general, static analysis model program behavior for all possible inputs. 

References:

Assignments:
  • Paper Review
    • Paper review LaTeX template.
    • Deadline: by 10:00 pm EST the night before the class.

  • Project Proposal
    • Four-Paragraph guideline for your proposal.
    • Deadline: 9/25 by 10:00 pm EST.

  • Project Report
    • Conference-paper-style report.
    • Deadline: 11/16 by 10:00 pm EST.

Grading:
Grading breakdown:
  • Paper Review: 20%
  • Presentation: 20%
  • Project: 60%

Schedule:

Date Topic Paper Presenter and Optional Reading
8/17 Introduction
8/19 Fundamentals
8/24 Fundamentals
  • Type analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 3.
8/26 Graph reachability
  • [POPL'95] Precise Interprocedural Dataflow Analysis via Graph Reachability
  • Stephen
8/31 Fundamentals
  • Lattice theory
  • Qirun
  • Readings:
    • [MS18] Chapter 4.
9/2 Concurrency
  • [CAV'14] Bounded Model Checking of Multi-threaded C Programs via Lazy Sequentialization
  • Connor
9/7 No class
9/9 Concurrency
  • [PLDI'18] CUBA: interprocedural Context-UnBounded Analysis of concurrent programs
  • Stephen
9/14 Fundamentals
  • Flow-sensitive analyses
  • Qirun
  • Readings:
    • [MS18] Chapter 5.
9/16 Javascript
  • [PLDI'20] Towards a verified range analysis for JavaScript JITs
  • Christopher
9/21 Fundamentals
  • Interval analysis, widening and narrowing
  • Qirun
  • Readings:
    • [MS18] Chapter 6.
9/23 Rust
    [PLDI'20] Understanding memory and thread safety practices and issues in real-world Rust programs
  • Mansour
9/28 Project Proposal
  • All
9/30 RSM Reachability
  • [TOPLAS'19] Faster Algorithms for Dynamic Algebraic Queries in Basic RSMs with Constant Treewidth
  • Shuo
10/5 Fundamentals
  • Path sensitivity and relational analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 7.
10/7 QuickCheck
  • [ICFP'00] QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs
  • Shuo
10/12 Fundamentals
  • Interprocedural and context sensitive analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 8.
10/14 Compiler Testing
  • [PLDI'17] Skeletal Program Enumeration for Rigorous Compiler Testing
  • Christopher
10/19 Fundamentals
  • Control flow analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 9.
10/21 Debugger Testing
  • [PLDI'20] Debug Information Validation for Optimized Code
  • Connor
10/26 Fundamentals
  • Pointer analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 10.
10/28 Memory Safety
  • [TSE'14] Detecting Memory Leaks Statically with Full-Sparse Value-Flow Analysis
  • Christopher
11/2 Static value flow analysis
  • [CC'16] SVF: interprocedural static value-flow analysis in LLVM
11/4 Fuzzing
  • [PLDI'19] Parser-Directed Fuzzing
  • Stephen
11/9 Fundamentals
  • Abstract interpretation
  • Qirun
  • Readings:
    • [MS18] Chapter 11.
11/11 Fuzzing
  • [CCS'18] Evaluating Fuzz Testing
  • Mansour
11/16 Peephole Optimization
  • [PLDI'15] Provably Correct Peephole Optimizations with Alive
  • Shuo
11/18 Final Presentation
  • All
11/23 Final Presentation
  • All

Misc:
If you have any concern, please send an email to the instructor. This link could help to send anonymous messages.


* This is a hybrid course. Check with the instructor before coming to the classroom.