# 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>
