CS 6340
Software Analysis and Test
Summer 2024


Announcements:


Instructor:
Qirun Zhang,
Office: Rm. 412
Office Hours: Mon/Wed 11:00 AM - 12:00 PM
Email: qrzhang@gatech.edu

Lectures:
Time: Mon/Wed 9:00 AM - 11:00 AM
Location: Rm 405.

Course Summary:
CS 6340 is a graduate-level course on software analysis and testing. We will cover topics such as static program analysis, random testing, dataflow analysis, type systems, test case generation, symbolic execution, and more. We will also study selected papers from PL conferences such as POPL and PLDI.

References:

Assignments:
  • Paper Review
    • Paper review LaTeX template.
    • Deadline: Every Tuesday by 10:00 pm.

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

  • Project Report
    • Conference-paper-style report.
    • Deadline: 7/20 by 10:00 pm.

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

Late assignment submission policy:
  • Within 24 hours after the assignment is due: 50% point deduction;
  • More than 24 hours late: 100% point deduction.

Schedule:

Date Topic Paper Presenter and Optional Reading
5/13 Introduction
5/15 Fundamentals
5/20 Fundamentals
  • Type analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 3.
5/22 Fundamentals
  • Lattice theory
  • Qirun
  • Readings:
    • [MS18] Chapter 4.
5/27 Fundamentals
  • Flow-sensitive analyses
  • Qirun
  • Readings:
    • [MS18] Chapters 5.
5/29 Fundamentals
  • Taint analysis
6/3 Fundamentals
  • Interval analysis, widening and narrowing
  • Qirun
  • Readings:
    • [MS18] Chapter 6.
6/5 Fundamentals
  • Path sensitivity and relational analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 7.
6/10 No class
6/12 Project proposal
  • Presentation
6/17 Fundamentals
  • Interprocedural and context sensitive analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 8.
6/19 Fundamentals
  • Control flow analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 9.
6/24 No class (travel)
6/26 No class (travel)
7/1 Fundamentals
  • Pointer analysis
  • Qirun
7/3 Fundamentals
  • Symbolic execution
  • Qirun
7/8 Paper study
  • Paper presentation
7/10 Paper study
  • Paper presentation
7/15 Fundamentals
  • Random testing
  • Qirun
7/17 Fundamentals
  • Delta debugging
  • Qirun
7/22 Final project
  • Presentation

Weekly paper reading list:
  • [PLDI'20] Towards a verified range analysis for JavaScript JITs
  • [POPL'95] Precise Interprocedural Dataflow Analysis via Graph Reachability
  • [TSE'14] Detecting Memory Leaks Statically with Full-Sparse Value-Flow Analysis
  • [PLDI'21] Alive2: Bounded Translation Validation for LLVM
  • [PLDI'17] Skeletal Program Enumeration for Rigorous Compiler Testing
  • [PLDI'22] Finding the Dwarf: Recovering Pecise Types from WebAssembly Binaries
  • [PLDI'21] Test-Case Reduction and Deduplication Almost for Free with Transformation-Based Compiler Testing
  • [PLDI'21] Path-Sensitive Sparse Analysis without Path Conditions
Misc:
If you have any concern, please send an email to the instructor. This link could help to send anonymous messages.


* In-person attendance is not enforced.