School of Computing · ANU College of Systems and Society
Compiler Construction provides an in-depth treatment of programming language translation, compilation, and run-time systems, organised around a significant programming project to build a compiler for a simple, but non-trivial core programming language. The course integrates both theory and practice. Topics include data structures for tree languages; lexical analysis, syntax analysis and abstract syntax; symbol tables and semantic analysis; translation, intermediate code, basic blocks and traces; machine targets and instruction selection; liveness analysis and graph colouring register allocation. Supplemental topics may include garbage collection, object-oriented languages, higher-order languages, dataflow analysis, optimisation, polymorphism, dynamic compilation, scheduling, pipelining and memory hierarchies. Upon completion of the course, students will understand how programs map to execution on modern processors, and the impact of language design on language implementation.
Programming Assignments
Learning outcomes 3, 5, 6
Quizzes and mid-semester tests
Learning outcomes 1, 2, 3, 4, 5, 6
Final Exam
Learning outcomes 1, 2, 3, 4, 5, 6
Lectures, labs, assignments and self-study for a combined total of 130 hours.
Recommended: Modern Compiler Implementation in Java, second edition, Andrew W. Appel with Jens Palsberg, Cambridge University Press, 2002, 978-0521820608 Suggested: Engineering a Compiler, third edition, Keith D. Cooper and Linda Torczon, Elsevier, 2022, 978-0128154120 Supplementary: Compilers: Principles, Techniques, and Tools, Aho, Lam, Sethi, and Ullman, Addison-Wesley, 2007, 978-0133002140