CS6380: Introduction to Compiler Engineering
August 2016 - October 2016
Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in
TAs (IITH email-IDs: <ID> AT iith DOT ac DOT in) : Bhatu Pratik (CS12B1010/cs12b16m000001), Utpal Bora
Discussion Google-group: CompilerEngg-Aug16 AT iith DOT ac DOT in
Join Group (only with IITH email-IDs)
Classes: Tue: 10:00am-11:00am, Thu: 12:00noon-1:00pm (B slot); Room: CL#212
Credits: 1 credit in 14 segments.
Prerequisites: CS6380: A grade of "A-" in CS3020/CS3021 for 4th year B.Techs; A grade of "A-" in POPL courses for 3rd years; Course CS6240
at IITH or its equivalent for M.Techs and PhDs (Exceptions allowed. Please get a permission from me.) An aptitude for engineering aspects of large software.
Course Description (CS6380)
Real-world compilers have complex algorithms and optimization strategies implemented in them, along with having various implementation techniques that are language/architecture
independent as well as having language/architecture specific features. All the above makes engineering modern real-world compilers also a hard software-engineering problem.
This 1 credit course will focus on understanding these issues, taking the popular LLVM compiler as a case-study.
The following are some of the areas that we plan to study: Introduction to LLVM infrastructure; The LLVM IR; Analyses and Transformations in LLVM;
Writing Analysis/Transformation passes in LLVM; Adding new FrontEnds and BackEnds to LLVM; Pass-manager of LLVM and method of adding new passes.
In Google Drive.
- [Text Book] Compilers: Principles, Techniques, and Tools ("Dragon book") by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, 2006
- [Text Book] Advanced Compiler Design and Implementation by Steven Muchnick, 1997
- [Text Book] Optimizing Compilers for Modern Architectures: A Dependence-based Approach by Randy Allen, Ken Kennedy, 2001
Some Class Links:
| Activity || Weight |
|Class Participation ||10%
|Mini Prog. Assignments (4 of them) ||10%+20%+25%+35%