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).
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.
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.
- 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.