This syllabus has been revised in the recent past with the course number being the same.
Showing the latest revision in section Curriculum 2022. The earlier version is in section Curriculum 2017.

Curriculum 2022

Learning Outcomes

At the end of the course we expect the student to know enough of the theory (Parsing, Code generation, optimisation) and tools (parser generators, code generators) so that they can build a compiler that converts from a non-trivial high level language to machine code.

Syllabus

Introduction to language translators and overview of the compilation process. (5 lectures)

Lexical analysis: specification of tokens, token recognition, conflict resolution. (5 lectures)

Parsing: Overview of Context Free Grammars (CFG), Parse trees and derivations, left recursion, left factoring, top-down parsing, shift reduce parsing, conflict resolution. (10 lectures)

Syntax directed translation. Semantic analysis, Type checking, intermediate code generation. *(6 lectures) *

Runtime environments: activation records, and heap management. (6 lectures)

Code optimization: basic blocks, liveness, register allocation. (5 lectures)

Advanced topics: Overview of machine dependent and independent optimizations. (4 lectures)

Textbook(s)

  1. Compilers: Principles, Techniques, and Tools, Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey D. Ullman, Addison-Wesley, 2007
  2. Modern Compiler Implementation in ML, Andrew W Appel, Cambridge University Press. ISBN 0 521 58274 1 (hardback) ISBN 0 521 58274 1
  3. Modern Compiler Implementation in Java. Andrew W Appel, Jens Paisberg. Cambridge University Press, January 2002. ISBN-978-0521820608
  4. Compiler Construction: Principles and Practice, 1st Edition, Kenneth C. Louden, Cengage Learning; 1 edition (January 24, 1997), ISBN-13: 978-0534939724

Curriculum 2017

Learning Objectives

A compiler is a program that converts high level (human understandable) language to low level (machine understandable) code. Compilers are what makes writing modern software possible and their study has been one of the classical topics in an Undergraduate Computer Science curriculum. The objective of the course is to introduce the basic theory underlying the different components and phases of a compiler like parsing, code generation etc. Simultaneously, the students will be familiarised with the various tools that are used for building modern compilers.

Learning Outcomes

At the end of the course we expect the student to know enough of the theory (Parsing, Code generation, optimisation) and tools (parser generators, code generators) so that they can build a compiler that converts from a non-trivial high level language to machine code.

Syllabus

Introduction to language translators and overview of the compilation process.

Lexical analysis: specification of tokens, token recognition, conflict resolution.

Parsing: Overview of Context Free Grammars (CFG), Parse trees and derivations, left recursion, left factoring, top-down parsing, shift reduce parsing, conflict resolution, dangling-else.

Syntax directed translation. Semantic analysis, Type checking, intermediate code generation.

Runtime environments: activation records, heap management

Code optimization: basic blocks, liveness, register allocation.

Advanced topics: Overview of machine dependent and independent optimizations.

Textbook(s)

  1. Compilers: Principles, Techniques, and Tools, Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey D. Ullman, Addison-Wesley, 2007
  2. Modern Compiler Implementation in ML, Andrew W Appel, Cambridge University Press. ISBN 0 521 58274 1 (hardback) ISBN 0 521 58274 1
  3. Compiler Construction: Principles and Practice, 1st Edition, Kenneth C. Louden, Cengage Learning; 1 edition (January 24, 1997), ISBN-13: 978-0534939724