MEng Software Engineering
Year of entry: 2020
Course unit details:
|Unit level||Level 3|
|Teaching period(s)||Semester 2|
|Offered by||Department of Computer Science|
|Available as a free choice unit?||Yes|
|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|
To enrol students are required to have taken COMP11120 or one of the following: COMP11111, MATH10111, MATH10131, MATH10212, MATH10232, MATH10662, MATH10672
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.
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.
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.
Context-sensitive analysis, Attribute Grammars, Symbol Tables, Type Checking.
Properties, taxonomy, Graphical IRs, Linear IRs.
The Procedure Abstraction, Linkage convention, Run-time storage organisation.
Code Shape, Instruction Selection, Register Allocation, Instruction Scheduling.
Topics in Compiler Construction
Code Optimisation, JIT Compilation.
Teaching and learning methods
- Analytical skills
- Problem solving
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.
COMP36512 reading list can be found on the School of Computer Science website for current students.
|Scheduled activity hours|
|Independent study hours|
|Rizos Sakellariou||Unit coordinator|
Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.