[COURSE] Add KAIST CS420: Compiler Design (#632)

* [COURSE] Add KAIST CS420: Compiler Design

* fix: resolve comments
This commit is contained in:
Zijian Yi 2024-07-21 22:52:36 -05:00 committed by GitHub
parent f5d2eb89c8
commit dd23187134
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,22 @@
# CS420: Compiler Design
## Descriptions
- Offered by:·KAIST
- Prerequisites: Data Structures, Basic Understanding of Computer Systems and Rust Programming
- Programming Languages: Rust
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 80 hours
This course provides a compiler framework code called KECC(KAIST Educational C Compiler) written in Rust, based on which students build some core parts of the compiler, include AST print, SSA-based IR generation, IR optimization and RISC-V assembly generation. Compared to other compiler courses, this course has the following main characteristics:
- The course focuses on the real C language rather than a custom toy language, and uses C language fuzzing tools(Csmith) for testing.
- This course emphasizes on practicality. It does not talk much about the theory of compiler frontend and the assignments start with the traversal of AST so you do not need to build the frontend yourself. The course mainly focuses on IR design, generation and optimization, as well as RISC-V assembly code generation. This course is also helpful for understanding and learning LLVM.
- The course comes with accompanying videos that provide detailed code tours, which is beginner-friendly.
## Course Resources
- Course Website:<https://github.com/kaist-cp/cs420>
- Recordings:<https://www.youtube.com/playlist?list=PL5aMzERQ_OZ8RWqn-XiZLXm1IJuaQbXp0>
- Textbooks:<https://github.com/kaist-cp/cs420?tab=readme-ov-file#textbook>
- Assignments:<https://github.com/kaist-cp/cs420?tab=readme-ov-file#homework-60>

View File

@ -0,0 +1,22 @@
# CS420: Compiler Design
## 课程简介
- 所属大学KAIST
- 先修要求数据结构、计算机系统基础、Rust 编程基础
- 编程语言Rust
- 课程难度:🌟🌟🌟🌟
- 预计学时80小时
这门课程提供了一个 Rust 语言编写的编译器 KECC(KAIST Educational C Compiler) 框架代码在此基础上构建编译器的一些核心部分包括语法树打印、SSA中间代码生成、中间代码优化包括 CFG 简化GVN 等)以及目标代码生成。与其他编译器课程相比,本课程主要有以下特点:
- 该课程面向真实的 C 语言而非自定义的玩具语言,并且会使用 C 语言 Fuzzing 工具 (Csmith) 进行测试。
- 该课程注重实用性,对编译器前端理论涉及很少,第一个实验也是直接从抽象语法树的遍历开始,并不要求你手动完成前端。课程重点关注于 IR 的设计、生成和优化,以及 RISC-V 汇编代码生成。本课程对于理解和学习 LLVM 也很有帮助。
- 课程配套视频有详细的代码讲解,对初学者友好。
## 课程资源
- 课程网站:<https://github.com/kaist-cp/cs420>
- 课程视频:<https://www.youtube.com/playlist?list=PL5aMzERQ_OZ8RWqn-XiZLXm1IJuaQbXp0>
- 课程教材:<https://github.com/kaist-cp/cs420?tab=readme-ov-file#textbook>
- 课程作业:<https://github.com/kaist-cp/cs420?tab=readme-ov-file#homework-60>

View File

@ -234,6 +234,7 @@ nav:
- "PKU 编译原理实践": "编译原理/PKU-Compilers.md"
- "Stanford CS143: Compilers": "编译原理/CS143.md"
- "NJU 编译原理": "编译原理/NJU-Compilers.md"
- "KAIST CS420: Compiler Design": "编译原理/CS420.md"
- 编程语言设计与分析:
- "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md"
- "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md"