CS325 Compiler Design
CS325 15 CATS (7.5 ECTS) Term 1
Availability
Option - CS, CSys, DM and Mathematics.
Prerequisites
CS126, CS245, CS246
Academic Aims
The module will provide a through introduction to the principles of compiler design, with an emphasis on general solutions to common problems as well as techniques for putting the extensive theory into practice.
Learning Outcomes
A successful student will have acquired the skills to understand, develop, and analyze recognizers for programming languages. The student will also be able to deploy efficient and methodical techniques for integrating semantic analysis into the afore-mentioned recognizers, and generate low-level code for most constructs that characterise imperative and functional programming languages.
Content
- Languages and Grammars: regular expressions, context-free grammars, BNF.
- Parsing: top-down and bottom-up techniques.
- Semantic Analysis: attribute grammars, translation schemes, type inference, symbol tables.
- Code Generation: run-time environment, intermediate code, register allocation, optimization.
- Programming Paradigms: issues in the compilation of imperative, functional, and object-oriented languages.
Books
- Appell, Modern Compiler Implementation in Java, Cambridge University Press, 2003
- Watt and Brown, Programming Language Processors in Java, Prentice Hall, 2000
- Grune, Bal, Jacobs, and Langendoen, Modern Compiler Design, Wiley, 2000.
- Aho, Sethi and Ullman, Compilers Principles, Techniques and Tools, Addison-Wesley.
Assessment
Three-hour examination
Teaching
30 one-hour lectures
