Skip to content

Commit

Permalink
[COURSE] Add USTC Principles and Techniques of Compiler (#671)
Browse files Browse the repository at this point in the history
  • Loading branch information
hanquanjushi authored Oct 21, 2024
1 parent 0f98fc2 commit bc10573
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
23 changes: 23 additions & 0 deletions docs/编译原理/USTC-Compilers.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# USTC: Principles and Techniques of Compiler

## Descriptions

- Offered by: University of Science and Technology of China (USTC)
- Prerequisites:
- Programming Languages:
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 100 hours

The theoretical part of this course covers a wide range of topics, including lexical analysis, syntax analysis, syntax-directed translation, and intermediate code translation from traditional compiler principles courses, as well as runtime management and both machine-independent and machine-specific code optimization. The practical component provides C++ code for the Cminusf compiler framework, allowing students to progressively build a fully functional modern compiler over six labs. Unlike other compiler courses, this course uses a subset of modern LLVM as the intermediate code, offering a forward-looking approach and including backend code generation and intermediate code optimization, making it a world-class compiler course.

- The course labs use scripts to provide comprehensive automated testing, with complete tutorials available on the course homepage.
- The course includes a full set of open-source course materials, lab framework code, and lab tutorials, making it beginner-friendly.
- The labs progress gradually, increasing in difficulty, ensuring that students with varying levels of prior knowledge can benefit.
- In Lab 1, Flex and Bison are used to implement the compiler frontend. Lab 2 involves generating intermediate code with LightIR (a subset of LLVM). Lab 3 covers backend code generation for the Loongson assembly language. Lab 4 focuses on intermediate code optimization. Lab 5 implements machine-independent optimization, and Lab 6 deals with register allocation.

## Course Resources

- Course Website: <https://ustc-compiler-principles.github.io/2023>
- Recordings: <https://www.bilibili.com/video/BV1D7421N7c4>
- Textbook: See the course website
- Assignments: <https://ustc-compiler-principles.github.io/textbook>
23 changes: 23 additions & 0 deletions docs/编译原理/USTC-Compilers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# USTC: Principles and Techniques of Compiler

## 课程简介

- 所属大学:中国科学技术大学
- 先修要求:数据结构、计算机系统基础、C++ 编程基础
- 编程语言:C++
- 课程难度:🌟🌟🌟🌟
- 预计学时:100小时

这门课程的理论部分内容广泛,既涵盖了传统编译原理课程的词法分析、语法分析、语法制导翻译、中间代码翻译,又覆盖了运行时管理、机器无关与面向机器的代码优化。实验部分则提供了 C++ 语言编写的Cminusf编译器框架代码,于6个实验中逐步构建一个具备现代完整流程的编译器。与其他编译原理课程的实验不同的是,本课程的实验采用现代LLVM的子集作为中间代码,更具前瞻性,同时包括了后端代码的生成和中间代码优化的部分,堪称国际一流的编译原理课程。

- 课程实验使用脚本提供全面的自动化测试,并于课程主页提供了完整的教程。
- 课程包含全套开源的课件、实验框架代码、实验教程,对初学者友好。
- 课程实验循序渐进,逐渐增加难度,能让不同基础的学生都有收获。
- 课程实验中Lab1使用Flex和Bison实现编译器前端,Lab2实现LightIR(LLVM子集)中间代码生成,Lab3实现后端代码生成龙芯汇编语言,Lab4实现中间代码优化,Lab5实现机器无关优化,Lab6实现寄存器分配。

## 课程资源

- 课程网站:<https://ustc-compiler-principles.github.io/2023>
- 课程视频:<https://www.bilibili.com/video/BV1D7421N7c4>
- 课程教材:见课程网站
- 课程作业:<https://ustc-compiler-principles.github.io/textbook>
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ nav:
- "Stanford CS143: Compilers": "编译原理/CS143.md"
- "NJU 编译原理": "编译原理/NJU-Compilers.md"
- "KAIST CS420: Compiler Design": "编译原理/CS420.md"
- "USTC 编译原理与技术": "编译原理/USTC-Compilers.md"
- 编程语言设计与分析:
- "Stanford CS242: Programming Languages": "编程语言设计与分析/CS242.md"
- "NJU 软件分析": "编程语言设计与分析/NJU-SoftwareAnalysis.md"
Expand Down

0 comments on commit bc10573

Please # to comment.