This course covers the design and implementation of compiler and runtime systems for high-level languages, and examines the interaction between language design, compiler design, and runtime organization. Topics covered include lexical and syntactic analysis, semantic analysis, type-checking, program analysis, code generation and optimization, memory management, and runtime organization.
Compilers and principles of compiling are one fundamental core aspect of computer science. Compilers and several other parts of compiler technology (especially parsing, transformation, analysis, and optimization) play important roles in many systems built every day. The knowledge gained in this course should be broad enough that if you are confronted with the task of contributing to the implementation of a real compiler in the field or similar technology, you should be able to do so confidently and quickly.
15-213 Introduction to Computer Systems
Students are expected to have significant experience in a high-level programming language
- TEXT: (optional)
Andrew W. Appel,
Modern Compiler Implementation in ML.
Cambridge University Press, 2004.
William M. Waite and Gerhard Goos.
© 1995 Springer.
© 1996 William M. Waite and Gerhard Goos.
The content of Compiler Construction is made available via the Web by permission of the authors as a service to the community and only for educational purposes.
- METHOD OF EVALUATION:
- Grading will be based on a set of homework assignments (30%) and labs (70%). There are 6 labs worth a total of 700 points. Labs can be done individually or in pairs. There are 5 written assignments worth a total of 300 points. Written assignments must be done individually. There will be no midterm or final exams.