Computer Systems Engineering (3 Years) [BEng]

Compilers


Unit code: COMP36512
Credit Rating: 10
Unit level: Level 3
Teaching period(s): Semester 2
Offered by School of Computer Science
Available as a free choice unit?: Y

Requisites

None

Additional Requirements

Students who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.

Pre-requisites

To enrol students are required to have taken COMP11120 or one of the following:  COMP11111, MATH10111, MATH10131, MATH10212, MATH10232, MATH10662, MATH10672

Aims

Any program written in a programming language must be translated before it can be executed. This translation is typically accomplished by a software system called compiler. This module aims to introduce students to the principles and techniques used to perform this translation and the issues that arise in the construction of a compiler.

Overview

Any program written in any programming language must be translated before it can be executed on a certain piece of hardware. This translation is typically accomplished by a software system called compiler. This module aims to introduce students to the principles and techniques used to perform this translation and the key issues that arise in the construction of modern compilers.

Teaching and learning methods

Lectures

22

Learning outcomes

Learning outcomes are detailed on the COMP36512 course unit syllabus page on the School of Computer Science's website for current students.

Employability skills

  • Analytical skills
  • Problem solving
  • Research

Assessment methods

  • Written exam - 100%

Syllabus

Introduction

What is a compiler? A high-level view of compilation. General structure of a compiler. An overview of compilation technology.

Lexical Analysis (Scanning)

Regular languages/expressions, finite state machines, building regular expressions from a finite automaton.

Syntax Analysis (Parsing)

Expressing Syntax, Context Free Grammars, Top-Down Parsing, Bottom-Up parsing.

Semantic Analysis

Context-sensitive analysis, Attribute Grammars, Symbol Tables, Type Checking.

Intermediate Representations

Properties, taxonomy, Graphical IRs, Linear IRs.

Storage Management

The Procedure Abstraction, Linkage convention, Run-time storage organisation.

Code Generation

Code Shape, Instruction Selection, Register Allocation, Instruction Scheduling.

Topics in Compiler Construction

Code Optimisation, JIT Compilation.

Conclusions

Recommended reading

COMP36512 reading list can be found on the School of Computer Science website for current students.

Feedback methods

Written formative feedback is provided on student solutions of a set of problems which are commonly met when designing and building compilers; there are three such sets presented during the course.

Study hours

  • Lectures - 24 hours
  • Independent study hours - 76 hours

Teaching staff

Rizos Sakellariou - Unit coordinator

▲ Up to the top