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 a 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, Second Edition, Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey D. Ullman, January 2013. ISBN-978-9332518667.
  2. Modern Compiler Implementation in Java. Andrew W Appel, Jens Paisberg. Cambridge University Press, January 2002. ISBN-978-0521820608
  3. Modern Compiler Implementation in ML, Andrew W Appel, Cambridge University Press, December 1997. ISBN-0 521 58274 1 (hardback) ISBN 0521582741
  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

Past Offerings

  • Offered in Jan-May, 2024 by Unnikrishnan Cheramangalath
  • Offered in Jan-May, 2023 by Unnikrishnan C
  • Offered in Jan-May, 2022 by Piyush Kurur
  • Offered in Jan-May, 2021 by Piyush
  • Offered in Jan-May, 2020 by Unnikrishnan
  • Offered in Jan-May, 2019 by Piyush

Course Metadata

Item Details
Course Title Compiler Design
Course Code CS3040
Course Credits 3-0-0-3
Course Category PMP
Proposing Faculty Piyush P Kurur & Unnikrishnan C
Approved on Senate 20 of IIT Palakkad
Course prerequisites Foundations of Computing Systems, Data structures and Algorithms, Data Structures and Algorithms Lab, Theory of Computation, Compiler Design Lab (prerequisite & corequisite)
Course status revised
Course revision information CS3040 Compiler Design