Skip to content

Commit

Permalink
[COURSE] Add PKU Software Analysis (PKUFlyingPig#520)
Browse files Browse the repository at this point in the history
  • Loading branch information
Qi-Zhan authored Oct 12, 2023
1 parent c8747e7 commit 3673c71
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
25 changes: 25 additions & 0 deletions docs/编译原理/PKU-SoftwareAnalysis.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# PKU Software Analysis

## Descriptions

- Offered by: Peking University
- Prerequisite: Data Structures and Algorithms, familiar with at least one programming language
- Programming Languages: Java, Python
- Difficulty: 🌟🌟🌟🌟
- Learning Hours: 60 hours

Software Analysis is a course offered by Prof. Yingfei Xiong from Peking University. The course mainly covers the following topics:

1. Program analysis based on abstract interpretation (data flow analysis, inter-procedural analysis, pointer analysis, abstract interpretation, etc.)
2. Program analysis based on constraint solving (SAT, SMT, symbolic execution, etc.)
3. Software analysis applications (program synthesis, bug localization, bug repair, etc.)

Compared with the [Software Analysis course of Nanjing University](./NJU-SoftwareAnalysis.en.md), this course covers **more comprehensive** theoretical and practical content of program analysis, and is more difficult. My main way of learning this course is to listen to the course. Prof. Xiong's lectures are very interesting. In addition to the theoretical content, he occasionally tells some academic related stories :)

The course project of this experiment is to implement a pointer analysis system on Java and a program synthesis tool, which is also a very interesting practice.

## Resources

- Course Website: [Homepage](https://xiongyingfei.github.io/SA/2020/main.htm) This is the course homepage of 2020. More course content can be found on [Prof. Xiong's homepage](https://xiongyingfei.github.io/).
- Course Video: [2020](https://liveclass.org.cn/cloudCourse/#/courseDetail/8mI06L2eRqk8GcsW)
- Course Textbook: None
25 changes: 25 additions & 0 deletions docs/编译原理/PKU-SoftwareAnalysis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 北京大学 软件分析技术

## 课程简介

- 所属大学:北京大学
- 先修要求:数据结构与算法,至少熟悉一门编程语言
- 编程语言: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)
- 课程教材:无
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ nav:
- 编译原理:
- "Stanford CS143: Compilers": "编译原理/CS143.md"
- "NJU 软件分析": "编译原理/NJU-SoftwareAnalysis.md"
- "PKU 软件分析": "编译原理/PKU-SoftwareAnalysis.md"
- 程序语言设计:
- "Stanford CS242: Programming Languages": "程序语言设计/CS242.md"
- 计算机图形学:
Expand Down

0 comments on commit 3673c71

Please sign in to comment.