1.6 KiB
Stanford CS143: Compilers
Descriptions
- Offered by: Stanford University
- Prerequisite: Computer Architecture
- Programming Languages: Java or C++
- Difficulty: 🌟🌟🌟🌟🌟
- Learning Hours: 150
All this course intends is imparting principles of compiler construction for programming languages to students. Instructors has designed a “COOL language”, namely Class-Object-Oriented-Language, and you are expected to build a compiler for it. By study and practice, you will acquire the ability to design a appropriate compiler, which can translate human-readable COOL into “computer-readable” MIPS assembly being running on the SPIM emulator.
Following the Dragon Book, the theoretical part covers lexical analysis, syntax analysis, semantics analysis, runtime environments, register allocation, optimization and code generation. The practical part, accordingly, is divided in four modules: 3 for different steps of analysis and 1 for code generation. The difficulty is considered gradual, increasing with a proper rate. Should you have enough capacity and interest even after taking all those regular path, there’s 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 textual + 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.