CS3423: Compilers-II and CS6240: Advanced Compiler Design

August 2017 - Nov 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), GAYATRI PK (cs15resch11003), SHALINI JAIN (cs15resch11010), Abhishek Avinash Patwardhan (cs15mtech11015), Dangeti Tharun Kumar (cs15mtech11002), Santanu Das (cs15mtech11018)

Discussion Google-group: compilers2-aug17 AT iith DOT ac DOT in Join Group (only with IITH email-IDs)
Classes: Mon: 11:00am-12:00noon, Wed: 10:00am-10:30am, Thu: 9:00am-10:00am (C slot); Room: CL#119

Credits: CS3320: 1 credit, CS3423: 3 credits; CS6240: 3 credits
Prerequisites: CS3320:CS3423 3rd year B.Techs; A concurrent registration to both CS3320 and CS3423 is compulsory. CS6240: M.Techs and PhDs (Primarily 1st years: exceptions allowed. Please get a permission from me.)

Course Description (CS3320+CS3423 and CS6240)

The objective of these courses is to learn basic principles and advanced techniques of compiler design. Both the courses will focus lexical analysis, syntactic analysis, semantic analysis, abstract syntax tree and code-generation as well as basic optimizations.

The initial part of both the courses will focus on the classic techniques of lexical analysis and scanning/screening, syntactic analysis like bottom-up and top-down parsing techniques, semantic analysis, type-checking, abstract syntax tree and code generation. The latter part will focus on intermediate representations and simple optimizations like register allocation and instruction scheduling.

A significant focus of these courses would be on designing and implementing parts of compiler for a subset of C++/Java. The language of implementation would be in C/C++/Java languages. There would also be effort to study modern compilers like LLVM in the form of mini-assignments.

Course Description (CS6240)

This is a sister course to CS3320+CS3423 being offered to B.Techs. This beginning level M.Tech/PhD course would have additional project work, a paper presentation, and some research component.

Lecture Schedule

1st-Aug-2016 Organization & Logistics,
An Overview of Compilers PDF

Readings: ALSU, Ch.1
Rest of Lectures 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
  • [Ref. Book] Compiler Design "Syntactic and Semantic Analysis" by Reinhard Wilhelm, Helmut Seidl and Sebastian Hack, 2013
  • [Adv. Ref. Book] Advanced Compiler Design and Implementation by Steven Muchnick, 1997
  • [NPTEL] NPTEL course on Principles of Compiler Design by Prof. Y.N. Srikant from Indian Institute of Science, 2012-2014 IITM Link
  • [Coursera] Coursera course on Compilers by Prof. Alex Aiken at Stanford, 2012-2014 Coursera Compilers
  • [Gradiance] Gradiance System by Prof. Jeffrey D. Ullman newgradiance link
  • .....

  • Some Class Links:

  • news
  • doc
  • .....

  • Suggested readings:

  • .....

  • Grading (CS3320: 1 credit)

    Activity Weight
    Class Participation and Attendance 10%
    Gradiance 10%
    Final Exam 50%
    Project (3+5+12+10) 30%

    Grading (CS3423: 3 credits)

    Activity Weight
    Class Participation and Attendance and Gradiance 10%
    Mini Prog. Assignments (LLVM) (2) 10%
    Programming Exam 25%
    End Term Exam 25%
    Project 30%

    Grading (CS3021) (OLD)

    Activity Weight
    Programming Assignments (Project) 60%
    Mini Prog. Assignments (LLVM) 15%
    Programming Exam 25%

    Grading (CS6240) (OLD)

    Activity Weight
    Mid Term Exam 15%
    End Term Exam 25%
    Project + Mini Prog. Assignments (LLVM) 25+10=35%
    Gradiance Homeworks 10%
    Paper Presentation + Writeup 10+5=15%

    Grading (CS6240) (New)

    Activity Weight
    Mid Term Exam 15%
    End Term Exam 20%
    Project + BackEnd 20%+10%=30%
    Mini Prog. Assignments (LLVM) 10%
    Gradiance Homeworks 10%
    Paper Presentation + Writeup 10+5=15%

    Important: Plagiarism Policy of IITH-CSE Department.