Software Analysis or Static Program Analysis is a course of Nanjing University developed by Tian Tan and Yue Li in Spring 2020. In this course, we will learn about static program analysis, a useful technique for improving the reliability, security and performance of software, and it becomes increasingly impactful in industries nowadays. The course covers two parts: theory and practice. In theory, various materials will be introduced: from the foundations of classical data-flow and pointer analyses to some advanced topics such as security analysis and soundiness. In practice, a brand new static program analysis framework called Tai-e was designed, on top of which we'll implement a series of assignments including live variable analysis, constant propagation, dead code detection, CHA call graph construction, context-insensitive and context-sensitive pointer analyses, and taint analysis.
- 1. Course Introduction2024-04-03
- 2. Intermediate Representation2024-04-10
- 3. Data Flow Analysis - Applications I2024-04-17
- 4. Data Flow Analysis - Applications II2024-04-24
- 5. Data Flow Analysis - Foundations I2024-05-01
- 6. Data Flow Analysis - Foundations II2024-05-08
- 7. Interprocedural Analysis2024-05-15
- 8. Pointer Analysis2024-05-22
- 9. Pointer Analysis - Foundations I2024-05-29
- 10. Pointer Analysis - Foundations II2024-06-05
- 13. Static Analysis for Security2024-06-26
- 14. Datalog-Based Program Analysis2024-07-03
- 15. CFL-Reachability and IFDS2024-07-10
- 16. Soundness and Soundiness2024-07-17