Coronavirus information for applicants and offer-holders

We understand that prospective students and offer-holders may have concerns about the ongoing coronavirus outbreak. The University is following the advice from Universities UK, Public Health England and the Foreign and Commonwealth Office.

Read our latest coronavirus information

BSc Computer Science (Human Computer Interaction) / Course details

Year of entry: 2021

Course unit details:
Compilers

Unit code COMP36511
Credit rating 10
Unit level Level 3
Teaching period(s) Semester 1
Offered by Department of Computer Science
Available as a free choice unit? No

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.

Pre/co-requisites

Unit title Unit code Requirement type Description
Mathematical Techniques for Computer Science (10 credits) COMP11111 Pre-Requisite Compulsory
Mathematical Techniques for Computer Science COMP11120 Pre-Requisite Compulsory
Foundations of Pure Mathematics B MATH10111 Pre-Requisite Compulsory
Calculus and Vectors B MATH10131 Pre-Requisite Compulsory
Linear Algebra B MATH10212 Pre-Requisite Compulsory
Calculus and Applications B MATH10232 Pre-Requisite Compulsory
MATH10662 Pre-Requisite Compulsory
MATH10672 Pre-Requisite Compulsory
Students who are not from the Department 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.

Learning outcomes

  • Describe the principles governing all phases of the compilation process.    
  • Explain the role of each of the basic components of a standard compiler.    
  • Outline the problems, and discuss methods and techniques applied to each phase of the compilation process.    
  • Apply standard techniques to solve basic problems that arise in compiler construction.    
  • Identify how the compiler can take advantage of particular processor characteristics to generate good code.

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
 

Teaching and learning methods

Lectures
22

Employability skills

Analytical skills
Problem solving
Research

Assessment methods

Method Weight
Written exam 100%

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.

Recommended reading

COMP36511 reading list can be found on the Department of Computer Science website for current students.

Study hours

Scheduled activity hours
Lectures 24
Independent study hours
Independent study 76

Teaching staff

Staff member Role
Rizos Sakellariou Unit coordinator

Additional notes

Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.

Return to course details