Skip to main content
 

COMP3637: Compiler Design

Please ensure you check the module availability box for each module outline, as not all modules will run in each academic year. Each module description relates to the year indicated in the module availability box, and this may change from year to year, due to, for example: changing staff expertise, disciplinary developments, the requirements of external bodies and partners, and student feedback. Current modules are subject to change in light of the ongoing disruption caused by Covid-19.

Type Open
Level 3
Credits 10
Availability Not available in 2023/24
Module Cap None.
Location Durham
Department Computer Science

Prerequisites

  • COMP1071 Computer Systems AND COMP2181 Theory of Computation AND COMP2221 Programming Paradigms

Corequisites

  • None

Excluded Combinations of Modules

  • None

Aims

  • To understand how a compiler for a high-level programming language works.
  • Develop implementation skills for writing practical components of a compiler, including parsing, analysis, code generation, and optimisation.
  • Appreciate how the design of programming languages is affected by compiler considerations.
  • Implement a compiler for a high-level programming language.

Content

  • Compiler frontend: Foundations of compiler theory and techniques for lexical analysis, syntax analysis and semantic analysis.
  • Compiler backend: Intermediate representations (IRs), optimisation on IRs, machine code generation and register allocation.

Learning Outcomes

Subject-specific Knowledge:

  • An understanding of the theory and practice of compiler design.

Subject-specific Skills:

  • The ability to work with and reason about abstract theoretical computer science problems and to apply them to practical aspects of compiler design.
  • Recognition and appreciation of appropriate design patterns in the implementation of compiler components.

Key Skills:

  • An ability to communicate technical information in a scientific fashion.
  • An understanding of theoretical concepts of compiler design and their practical use.

Modes of Teaching, Learning and Assessment and how these contribute to the learning outcomes of the module

  • Lectures enable the students to learn new material related to the above content.
  • Formative exercises enable students to apply the material from lectures and enhance their understanding.
  • A summative assignment assesses the application of methods and techniques and the synthesis of the core concepts of the course.

Teaching Methods and Learning Hours

ActivityNumberFrequencyDurationTotalMonitored
lectures201 per week1 hour20 
preparation and reading80 
total100 

Summative Assessment

Component: CourseworkComponent Weighting: 100%
ElementLength / DurationElement WeightingResit Opportunity
Summative Assignment 100No

Formative Assessment

Through example exercises and problem sheets during the course.

More information

If you have a question about Durham's modular degree programmes, please visit our FAQ webpages, Help page or our glossary of terms. If you have a question about modular programmes that is not covered by the FAQ, or a query about the on-line Undergraduate Module Handbook, please contact us.

Prospective Students: If you have a query about a specific module or degree programme, please Ask Us.

Current Students: Please contact your department.