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 (cs14mtech11017/cs14m15p100001)

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.

Lecture Schedule

In Google Drive.

Book References:

Some Class Links:

Suggested readings:

Grading (CS6380)

Activity Weight
Class Participation 10%
Mini Prog. Assignments (4 of them) 10%+20%+25%+35%