CS6383: Introduction to Compiler Engineering
August 2017 - November 2017
Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in
Office:
TAs (IITH email-IDs: <ID> AT iith DOT ac DOT in) : Utpal Bora (cs14mtech11017/cs14m15p100001), Dangeti Tharun Kumar
(cs15mtech11002), Santanu Das (cs15mtech11018), Shalini Jain (cs15resch11010), Gayatri PK (cs15resch11003)
Discussion Google-group: CompilerEngg-Aug17 AT iith DOT ac DOT in
Join Group (only with IITH email-IDs)
Classes: Mon: 11:00am-12:00noon, Wed: 10:00noon-11:00am (C slot); Room: CL#317
Credits: 2 credit in 16 segments.
Prerequisites: CS6383: A grade of "A-" or better in CS3320 for 3rd year B.Techs; An aptitude for engineering aspects of large software.
Course Description
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.
Lecture Schedule
In Google Drive.
Book References:
- [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:
Suggested readings:
Grading (CS6383) (Tentative)
Activity | Weight |
Class Participation | 10% |
Mini Prog. Assignments | 10%+20%+25% |
Project | 35% |