Module manager: Dr Ammar Alsalka
Email: M.A.Alsalka@leeds.ac.uk
Taught: Semester 1 (Sep to Jan) View Timetable
Year running 2026/27
COMP2932
This module is not approved as a discovery module
This module explores the art and science of building compilers and enhancing program efficiency. This module provides a comprehensive understanding of compiler design principles and explores optimisation techniques. Students embark on a hands-on journey, constructing a compiler from the ground up. Through practical projects and theoretical insights, participants master the intricacies of translating high-level programming languages into executable code, while also implementing strategies to optimise the performance of the generated programs. This module equips learners with essential skills for software development and system optimisation.
To provide students with a comprehensive understanding of compiler design principles, enabling them to construct functional compilers and implement optimisation techniques that enhance program efficiency, while developing practical skills in translating high-level programming languages into executable code.
On successful completion of the module students will be able to:
apply a comprehensive knowledge of mathematics, statistics, natural science and engineering principles to the solution of complex problems. (C1)
select and critically evaluate technical literature and other sources of information to solve complex problems. (C4)
design solutions for complex problems that evidence some originality and meet a combination of societal, user, business and customer need as appropriate. (C5)
apply an integrated or systems approach to the solution of complex problems. (C6)
select and use practical laboratory and workshop skills to investigate complex problems and be able to comment on their limitations. (C12, C13)
apply knowledge of engineering management principles, and project/change management (C15)
communicate effectively on complex engineering matters with technical and non-technical audiences, evaluating the effectiveness of the methods used. (C17)
reflect on their level of mastery of subject knowledge and skills and plan for personal development. (C18)
On successful completion of the module students will be able to:
apply structured problem-solving strategies to analyse and address complex technical challenges.
think algorithmically to optimise processes and improve efficiency in varied contexts.
design and evaluate layered systems or processes, balancing multiple constraints and requirements.
adapt knowledge and methodologies to unfamiliar problems, technologies, or environments.
manage iterative projects effectively, integrating planning, implementation, and reflective evaluation.
Introduction to Compiler Design
Overview of compiler components and phases
Understanding lexical analysis, syntax analysis, and semantic analysis
Parsing Techniques
In-depth study of parsing algorithms
Construction and analysis of syntax trees
Intermediate Code Generation
Design and implementation of intermediate representations
Translation of source code into intermediate code
Code Optimisation Techniques
Exploration of various optimisation strategies
Static and dynamic program analysis for performance enhancement
Code Generation
Generation of target code from intermediate representations
Understanding instruction selection and register allocation
Semantic Analysis and Symbol Table Management
Handling semantic errors in the source code
Efficient management of symbol tables during compilation
Compiler Project: Building from Scratch
Hands-on development of a compiler
Integration of learned concepts into a functional compiler implementation
Advanced Optimisation Strategies
Further exploration of advanced optimisation techniques
Profile-guided optimisation and feedback-directed compilation
| Delivery type | Number | Length hours | Student hours |
|---|---|---|---|
| Lectures | 22 | 2 | 44 |
| Practicals | 11 | 2 | 22 |
| Private study hours | 134 | ||
| Total Contact hours | 66 | ||
| Total hours (100hr per 10 credits) | 200 | ||
Check the module area in Minerva for your reading list
Last updated: 30/04/2026
Errors, omissions, failed links etc should be notified to the Catalogue Team