The Compilers course is taught jointly by Paul Kelly, Jamie Willis and Hongxiang Fan. This web page describes Paul Kelly’s parts of the course, which are primarily on code generation and optimisation.

This page provides your guide to how the course is structured and delivered. It is your first stop for understanding what you need to do to succeed as a student.

For 2024-25 the course will be delivered as a combination of the following elements:

  • Pre-recorded lectures for Paul's part of the course (based on these slides. The slides (but not all the videos) are updated to reflect changes in the course in 2024-25.

  • Tutorial problems: come to the live class having already completed, or at least attempted, the relevant tutorial

  • Live classes, timetabled for up to two hours per week. Lectures from Paul, Jamie and Hongxiang will be interleaved to cover the necessary topics.

  • One short assessed coursework exercise on code generation

Much of Paul's material is presented in "flipped" form - based on pre-recorded video lectures. For Paul's lectures you should budget 2-4 hours per week to watch the videos, study the associated slides, and complete the related tutorial exercises.

Where prerecorded lectures are used, the timetabled live classes will be used for:

  • Q&A on the prerecorded material. It would be helpful if you would post your questions on EdStem the day before the class.

  • Tutorial problems

  • Exam preparation

Resources:

  • Lecture slides and other course materials will be posted on Scientia, which will also serve as your guide for what to do when. A complete set of slides for Paul's part of the course (initially from 2023-4) are also available here.

  • Prerecorded lecture videos are available on Panopto here

  • Recorded timetabled classes will probably be also be posted on Panopto here, though there is no guarantee that every session will successfully be recorded.

  • The primary vehicle for your questions will be EdStem here

What to do when:

  • A schedule of what you need to do in preparation for each of Paul's lectures is provided on the DoC “Scientia” website here.

Course structure


Paul's side of the course will include:

  • Ch1: Introduction
  • Ch2: Introduction to syntax analysis – and a complete toy compiler
  • Ch3: Code generation
  • Ch4: Generating better code by using registers
  • Ch5: Register allocation
  • Ch6: Optimisation and data flow analysis
  • Ch7: Loop optimisations

Jamie and Hongxiang will cover the following topics. The teaching for the two halves will be interleaved:

  • Syntax analysis
  • Semantic analysis and type checking
  • Runtime Organisation

Students from other departments at Imperial College:

  • If you are a a visiting, external or exchange student, or based in another department at Imperial, it is essential that you register as early as possible for the course via this link.

The course catalogue entry for this course is 50006.