cs-self-learning/docs/编译原理/CS143.en.md
2024-11-02 16:37:49 +08:00

24 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Stanford CS143: Compilers
## Descriptions
- Offered by: Stanford University
- Prerequisite: Computer Architecture
- Programming Languages: Java or C++
- Difficulty: 🌟🌟🌟🌟🌟
- Learning Hours: 150
This course aims to impart the principles of compiler construction for programming languages to students. The instructors have designed a “COOL language”, namely Classroom-Object-Oriented-Language. By study and practice, you will design and implement a compiler, which can translate the human-readable COOL language into machine-readable MIPS assembly which can be run on the SPIM emulator.
Following the Dragon Book, the theoretical part of the course covers lexical analysis, syntax analysis, semantics analysis, runtime environments, register allocation, optimization, and code generation. The practical part, accordingly, is divided into 4 steps: 3 for the frontend and 1 for the backend. The difficulty is considered gradual, increasing at a proper rate. Should you have enough time and interest even after completing all the required work, theres a huge room left for you to do optimization.
## Course Resources
- Course Website: <http://web.stanford.edu/class/cs143/>
- Recordings: <https://www.bilibili.com/video/BV17K4y147Bz>
- Textbook: Compilers: Principles, Techniques and Tools (Dragon Book)
- Assignments: 5 written assignments + 5 programming labs
## Collection of Course Resources
@skyzluo has been maintaining a repo of course resources used and reference implementations of programming labs: [skyzluo/CS143-Compilers-Stanford - GitHub](https://github.com/skyzluo/CS143-Compilers-Stanford).