课程项目

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:约束求解算法的经典教材。

其他课程

往年课程材料可从课程主页的历史课件访问。