Skip to navigation | Skip to main content | Skip to footer
Menu
Menu

COMP36511 Compilers syllabus 2020-2021

COMP36511 materials

COMP36511 Compilers

Level 3
Credits: 10
Enrolled students: 99

Course leader: Rizos Sakellariou


Additional staff: view all staff

Requisites

  • Pre-Requisite (Compulsory): COMP11111
  • Pre-Requisite (Compulsory): COMP11120
  • Pre-Requisite (Compulsory): MATH10111
  • Pre-Requisite (Compulsory): MATH10131
  • Pre-Requisite (Compulsory): MATH10212
  • Pre-Requisite (Compulsory): MATH10232
  • Pre-Requisite (Compulsory): MATH10662
  • Pre-Requisite (Compulsory): MATH10672

Additional requirements

  • 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

Assessment methods

  • 100% Written exam
Timetable
SemesterEventLocationDayTimeGroup
Sem 1 ONLINE Lecture Tue 15:00 - 17:00 -

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.

This course unit detail provides the framework for delivery in 20/21 and may be subject to change due to any additional Covid-19 impact.  Please see Blackboard / course unit related emails for any further updates.

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.

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 methods

Lectures
22

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)

Employability skills

  • Analytical skills
  • Problem solving
  • Research

Learning outcomes

On successful completion of this unit, a student will be able to:

  • 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.

Reading list

TitleAuthorISBNPublisherYear
Compilers principles, techniques, and tools null9781292024349Pearson2013
Engineering a compiler Cooper, Keith, active 1976.9780080916613Morgan Kaufmann©2012

Additional notes

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