# 北京大学 软件分析技术

## 课程简介

- 所属大学：北京大学
- 先修要求：数据结构与算法，至少熟悉一门编程语言
- 编程语言：Java, Python
- 课程难度：🌟🌟🌟🌟
- 预计学时：60 小时

软件分析技术是由北京大学熊英飞老师开设的一门课程，主要介绍了以下内容：

1. 基于抽象解释的程序分析（数据流分析、过程间分析、指针分析、抽象解释等）
2. 基于约束求解的程序分析（SAT、SMT、符号执行等）
3. 软件分析应用（程序合成、缺陷定位、缺陷修复等）

和南京大学的[软件分析课程](./NJU-SoftwareAnalysis.md)对比，这门课程的特点是讲了**更多更全面**的程序分析的理论与实践相关内容，难度也更大。这门课程我的主要的学习途径是听课，熊老师上课十分有趣，除了理论内容讲的很好偶尔也会讲一些学术相关的小段子:)

而本实验的的课程项目是实现一个Java上的指针分析系统和一个程序合成工具，也是十分有趣的实践。

## 课程资源

- 课程网站：[主页](https://xiongyingfei.github.io/SA/2020/main.htm) 这是 2020 年的课程主页，在[熊老师的主页](https://xiongyingfei.github.io/)上可以找到更多年份的课程内容。
- 课程视频：[2020 燕云直播](https://liveclass.org.cn/cloudCourse/#/courseDetail/8mI06L2eRqk8GcsW)
- 课程教材：无
