[COURSE] Add KAIST CS420: Compiler Design

This commit is contained in:
zijian yi 2024-07-03 17:29:09 -05:00
parent 68bcd3bc58
commit 8dd268597b
3 changed files with 63 additions and 0 deletions

View file

@ -0,0 +1,32 @@
# Course Code: Course Name
## Descriptions
- Offered by:·KAIST
- Prerequisites: Data Structures, Basic Understanding of Computer Systems and Rust Programming
- Programming Languages: Rust
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 80 hours
<!--
Introduce the course in a paragraph or two, including but not limited to:
(1) The technical knowledge covered in lectures
(2) Its differences and features compared to similar courses
(3) Your personal experiences and feelings after studying this course
(4) Caveats about studying this course on your own (pitfalls, difficulty warnings, etc.)
(5) ... ...
-->
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. Compared to most 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.
- Unlike traditional compiler courses that strongly emphasize the frontend part, only the first assignment is about frontend and gets you familiar with the structure of abstract syntax tree. The course mainly focuses on IR design, generation and optimization, as well as RISC-V assembly code generation.
- 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,30 @@
# CS420: Compiler Design
## 课程简介
- 所属大学KAIST
- 先修要求数据结构、计算机系统基础、Rust 编程基础
- 编程语言Rust
- 课程难度:🌟🌟🌟🌟
- 预计学时80小时
<!-- 用一两段话介绍这门课程,内容包括但不限于:
1课程覆盖的知识点范围
2与同类课程相比它的优势与特点
3学习这门课程的体验与感受
4自学这门课的注意点踩过的坑、难度预警等等
5... ...
-->
这门课程提供了一个Rust语言编写的编译器KECC(KAIST Educational C Compiler) 框架代码,在此基础上构建编译器的一些核心部分。与大部分编译器课程相比,本课程主要有以下特点:
- 该课程面向真实的C语言而非自定义的玩具语言并且会使用C语言Fuzzing工具 (Csmith) 进行测试。
- 该课程不像传统编译器课程十分强调前端部分仅第一个作业涉及前端并带领你熟悉抽象语法树的结构。课程重点关注于IR的设计、生成和优化以及RISC-V汇编代码的生成。
- 课程配套视频有详细的代码讲解,对初学者友好。
## 课程资源
- 课程网站:<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" - "PKU 编译原理实践": "编译原理/PKU-Compilers.md"
- "Stanford CS143: Compilers": "编译原理/CS143.md" - "Stanford CS143: Compilers": "编译原理/CS143.md"
- "NJU 编译原理": "编译原理/NJU-Compilers.md" - "NJU 编译原理": "编译原理/NJU-Compilers.md"
- "KAIST CS420: Compiler Design": "编译原理/CS420.md"
- 编程语言设计与分析: - 编程语言设计与分析:
- "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md" - "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md"
- "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md" - "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md"