CS335 Compiler Design (2018-19 IInd Semester)



This course aims to teach various phases of Compiler Design.


Code of Ethics

Any report/program/assignment you submit must clearly distinguish your contribution from others (webpages, softwares, report, discussions with other students). The penalty for copying in any form will be severe.


Announcements


Topics Covered and Slides

The slides are not suitable for taking prints as there is a lot of redundancy due to overlays. Print only the pages that you really require.

Note that [DragonBook] refers to Compilers: Principles, Techniques, and Tools, Second edition, 2006. by Alfred V. Aho , Monica S. Lam , Ravi Sethi , Jeffrey D. Ullman. Almost all the content we cover in the class is also available in the older edition of the book [OldDragonBook], but the chapters/sections could be different.

# Description (# of Lectures) Slides References
1. Introduction (1) [slides]
2. Overview of Compilation (2) [slides] Chapter 1 and 2 of the [OldDragonBook]
3. Lexical Analysis (2) [slides] Chapter 3 of the [DragonBook]
4. Syntax Analysis (1) [slides] Chapter 4 (4.1 - 4.3) of the [DragonBook]
5. Top Down Parsing (Self Study) [slides] Chapter 4 (4.4) of the [DragonBook]
6. Bottom Up Parsing (4) [slides] Chapter 4 (4.5 - 4.9) of the [DragonBook]
7. Lex/Yacc tutorial (1) [By Saumya Debray][By David Beazley]
8. Semantic Analysis (1.5) [slides] Chapter 5 (5.1) of the [OldDragonBook]
9. Syntax Directed Translation (3.5) [slides] Chapter 5 (5.2 - 5.6, 5.8) of the [OldDragonBook]
10. Type Checking (2) [slides] Chapter 6 (6.1 - 6.6) of the [OldDragonBook]
11. IR and Symbol Table (2) [slides] Sections 7.6 & 8.1 of the [OldDragonBook]
12. Intermediate Code Generation (4) [slides] Chapter 8 of the [OldDragonBook]
13. Run-time Systems (6) [slides] Chapter 7 (7.1 - 7.5) of the [OldDragonBook]
14. Code Generation (1.5) [slides] Chapter 9 of the [OldDragonBook]
15. Code Gen: Sethi Ullman (1.5) [slides] Section 9.10 of the [OldDragonBook]
16. Code Gen: Aho Johnson (3) [slides] Section 9.10 of the [OldDragonBook]
17. Code Gen: Tree Walking (1.5) [slides] Paper

Assignments

There will be short assignments to give you a chance to apply the lecture material. Assignments will have some written and some programming tasks.


Course Project

The course project gives you a chance to apply the concepts learnt in the class to build a prototype compiler. You will be required to implement various phases of a compiler, and perform an experimental evaluation of your implementation.


Course Outline

The course will mainly cover topics from the following list (not necessarily in the same order).


Evaluation Scheme

(Tentative)

Assignments/Quizzes 10%
Mid semester exam 20%
End semester exam 35%
Course Project 35%

Supporting Material


Take me to the Top