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