材料
课程项目
2026 年课程项目将全面革新。以下为《课程介绍》第 52 页中的目前计划,具体项目说明、代码包、提交要求及截止时间将随课程公布。
命题项目(20 分)
通过多个小项目逐步完成软件分析工具,覆盖过程内分析、过程间分析、指针分析、控制流分析和符号执行。
自选项目(20 分)
利用所学知识完成具有一定实用价值的程序分析工具,助教根据代码和文档质量评分。可选择参加项目现场汇报,限 20 人报名;根据汇报质量给予附加分,最高 5 分。
按目前的教学计划,10 月 13 日介绍课程项目,12 月 22 日、12 月 24 日安排课程项目报告。
参考书与讲义
- 《编译原理》,Aho 等:适合作为基础参考,涉及本课程的内容较少。
- Lecture Notes on Static Analysis,Moller、Schwartzbach:易懂且持续更新,主要覆盖基于抽象解释的分析。
- Program Analysis,Aldrich、Le Goues、Padhye:覆盖范围与本课程接近,可配合课程学习。
- 《Introduction to Static Analysis》,Rival、Yi:更系统地介绍抽象解释,推荐给希望深入学习的同学。
- Program Analysis: An Appetizer,Nielson 等;同一批作者另著有《Principles of Program Analysis》,后者不建议作为初学入门材料。
- 《Principles of Abstract Interpretation》,Cousot:全面介绍抽象解释,数学要求较高,不建议作为初学入门材料。
- 《Decision Procedures: An Algorithmic Point of View》,Daniel Kroening、Ofer Strichman:约束求解算法的经典教材。
其他课程
- 南京大学《软件分析》:提供视频与课件,可辅助理解基于抽象解释的分析技术。Tai-e 框架来自南大团队。
- 国防科技大学《程序分析》:陈立前老师讲授,与上一门课的内容互补。
往年课程材料可从课程主页的历史课件访问。
