CS6383: Introduction to Compiler Engineering

August 2017 - November 2017

Instructor: Ramakrishna Upadrasta (U. Ramakrishna)
Email: Ramakrishna AT iith DOT ac DOT in

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:

Some Class Links:

Suggested readings:

Grading (CS6383) (Tentative)

Activity Weight
Class Participation 10%
Mini Prog. Assignments 10%+20%+25%
Project 35%