The Compilers course is taught jointly by Paul Kelly and Naranker Dulay. This web page describes Paul Kelly’s half of the course, which is 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 2020-21 the course will be delivered as a combination of the following elements:

  • Pre-recorded lectures - you should budget 3-6 hours per week to watch the videos and study the associated slides.

  • Interactive classes, timetabled for up to two hours per week (each week one hour with Paul Kelly, one hour with Naranker Dulay).

  • Tutorial problems

  • One short assessed coursework exercise on code generation

The timetabled interactive classes (on Teams unless notified otherwise) will be used for:

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

  • Tutorial problems

  • Exam preparation

Resources:

  • Slides and exercise specifications will be posted on the DoC “Materials” website here.

  • Prerecorded lecture videos will be posted 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 to be Piazza here

  • Materials for the lab-based exercises (unassessed and assessed) will be posted nearer the time.

The course materials from Spring 2020 are all available freely online here.

Course structure


  • 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

Details of Naranker Dulay’s half of the course can be found here. The teaching for the two halves will be interleaved:

  • Part 1: Lexical Analysis
  • Part 2: LR Bottom-up Parsing
  • Part 3: LL Top-down Parsing
  • Part 4: Semantics
  • Part 5: 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.