CS 6340
Software Analysis and Test
Fall 2021


Announcements:


Instructor:
Qirun Zhang,
Office: 2324 Klaus
Office Hours: Tue/Thu 3:15 - 4:00 PM
Email: qrzhang@gatech.edu

Teaching Assistant:
Camille Bossut,
Office: By appointment
Office Hours: Mon 4:00PM - 5:00PM
Email: cbossut21@gatech.edu

Lectures:
Time: Tue/Thu 2:00 PM - 3:15 PM
Location: Bunger-Henry 380*
Bluejeans link: Click to join.

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: by 10:00 pm EST the night before the class.

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

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

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

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
8/24 Introduction
8/26 Fundamentals
8/31 Fundamentals
  • Type analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 3.
9/2 Range analysis
  • [PLDI'20] Towards a verified range analysis for JavaScript JITs
  • Ryan
9/7 Fundamentals
  • Flow-sensitive analyses
  • Qirun
  • Readings:
    • [MS18] Chapters 4 and 5.
9/9 Graph reachability
  • [POPL'95] Precise Interprocedural Dataflow Analysis via Graph Reachability
  • Yifan
9/14 Value-flow analysis
  • SVF: interprocedural static value-flow analysis in LLVM
  • Camille
9/16 Value-flow analysis application
  • [TSE'14] Detecting Memory Leaks Statically with Full-Sparse Value-Flow Analysis
  • Idel
9/21 Symbolic Execution
  • Notes
  • Qirun
9/23 Translation Validation
  • [PLDI'21] Alive2: Bounded Translation Validation for LLVM
  • Ruikai
9/28 Taint analysis
  • Notes
  • Qirun
9/30 Floating-point safety
    [PLDI'21] High Performance Correctly Rounded Math Libraries for 32-bit Floating Point Representations
  • Ben
10/5 Project Proposal
  • All
10/7 Compiler testing
  • [PLDI'17] Skeletal Program Enumeration for Rigorous Compiler Testing
  • Christopher
10/12 No class
10/14 SMT solvers
  • [PLDI'21] Boosting SMT Solver Performance on Mixed-Bitwise-Arithmetic Expressions
  • Yu-Fu
10/19 Fundamentals
  • Path sensitivity and relational analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 7.
10/21 Path-sensitive analysis
  • [PLDI'21] Path-Sensitive Sparse Analysis without Path Conditions
  • Shuo
10/26 Fundamentals
  • Interprocedural and context sensitive analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 8.
10/28 Binary code analysis
  • [PLDI'21] Unleashing the Hidden Power of Compiler Optimization on Binary Code Difference: An Empirical Study
  • Sunny
11/2 Fundamentals
  • Pointer analysis
  • Qirun
  • Readings:
    • [MS18] Chapter 10.
11/4 Program equivalence
  • [POPL'21] egg: Fast and Extensible Equality Saturation
  • Yuanbo
11/9 Random Testing
  • Notes
  • Qirun
11/11 Parallelism
  • [POPL'21] Provably Space Efficient Parallel Functional Programming
  • Sean
11/16 Delta debugging
  • Notes
  • Qirun
11/18 Test-case reduction
  • [PLDI'21]Test-Case Reduction and Deduplication Almost for Free with Transformation-Based Compiler Testing
  • Rishabh
11/23 Bounded model checking
  • [CAV'14] Bounded Model Checking of Multi-threaded C Programs via Lazy Sequentialization
  • Feiyang
11/25 No class
11/30 Final Presentation
  • All
12/2 Final Presentation
  • All

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. We will record each lecture. The recorded video will be shared on Bluejeans.