COMP8712

Compiler Construction

Credit
6 units
Catalogue year
2027
Recorded offerings
None recorded

Course information

Compiler Construction provides an in-depth treatment of programming language translation, compilation, and run-time systems, organized 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 covered 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 coloring register allocation. Supplemental topics may include garbage collection, object-oriented languages, higher-order languages, dataflow analysis, optimization, 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.

Requisite and Incompatibility

To enrol in this course you must have completed COMP6442 AND COMP6310. Students who have previously completed COMP3710 or COMP6470 - please contact CSS Student Services for a Permission Code.

Learning Outcomes

Upon successful completion, students will have the knowledge and skills to:

Explain how programs that process other programs treat the other programs as their input data, and describe the benefits of having program representations other than source code.

Distinguish a language definition (syntax and semantics) from a particular language implementation (evaluation by interpreter or by compilation).

Use formal grammars to specify the syntax of languages, and understand key issues of ambiguity, associativity and precedence.

Sketch a low-level run-time representation of core language constructs, such as objects or closures.

Identify and implement essential steps for automatically converting source code into assembly or other low-level languages.

Define useful static analyses in terms of a conceptual framework such as data-flow analysis and use the results of a static analysis for program optimization.

Critique language designs and implications for language implementation.

Saved ANU Programs & Courses information, 2027. Future offerings are indicative. Checks use the saved requirements and your fictional academic record.

Saved requirements encoded for automatic checks. See your requirement checks for what can be decided.

Course library: sources, offering dates and related entries

Read the full published course information ↗

Who reviews permission requests?

Dr Leo Brandt is the fictional reviewer assigned to COMP8712 in this prototype. The selected course determines where a request goes.

The saved page explicitly lists no current offerings. You can still read the course information.