Name | Swarnendu Biswas |
swarnendu AT cse.iitk.ac.in | |
Class hours | MonWedFri 9:00-9:50 AM in RM 101 |
Office hours | TueThurs 4-5 PM in KD 302 |
Name | Email (AT cse.iitk.ac.in) |
Nimisha Agarwal | nimisha |
Manish Kumar Bera | mkbera |
K Karthikeyan | kkarthi |
Anuj Mishra | anujmi |
Vipin Patel | vipinpat |
Bidya Sarkar | bidya |
Prafulla Saxena | prafulla |
Krishna Kumar Tayal | ktayal |
Nilesh Vasita | nilesh |
The objective of the course is to learn concepts that are useful to understand, design, and modify compilers for programming languages.
This course will involve both pen-paper and programming assignments.
The course project will require you 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. Project will be done in groups.
Prerequisites |
|
The course may also involve reading related research papers.
I am open to constructive feedback about the course content and presentation. I may distribute unofficial feedback forms a few weeks into the semester, and you will have the choice of remaining anonymous.
Date | Topic | Resources | Recommended Reading |
---|---|---|---|
03/01, 06/01 | Course Overview, Overview of Compilation |
Course
Overview
Compiler Overview |
DRAG Chapter 1
EaC Chapter 1 |
08/01, 10/01, 13/01 | Lexical Analysis, Lex/Flex |
Lexical
Analysis
Lex/Flex |
DRAG 2.6-2.7, 3.1-3.4, 3.6-3.8
EaC 2.1-2.5 |
13/01, 15/01 | Syntax Analysis | Slides |
DRAG 2.2, 4.1-4.3
EaC 3.1-3.2 |
15/01, 17/01, 20/01 | Top-down Parsing | Slides |
DRAG 2.4, 4.2-4.4
EaC 3.3 |
20/01, 22/01, 24/01, 27/01 | Bottom-up Parsing | Slides |
DRAG 4.5-4.7
EaC 3.4 |
29/01, 31/01, 03/02 | Semantic Analysis | Slides |
DRAG 2.3, 5.1-5.3
EaC Chapter 4 PLP Chapter 4 |
05/02, 07/02, 10/02 | Type Systems | Slides |
EaC Chapter 4.2
PLP Chapters 7-8 |
12/02, 14/02, 24/02, 26/02, 28/02, 29/02 | Intermediate Representations | Slides |
DRAG 2.7, 6.1-6.2, 6.4, 6.6-6.8
EaC Chapter 5 |
02/03, 04/03, 06/03 | Runtime Environments | Slides |
DRAG 7.1-7.4
EaC Chapters 6, 7.1-7.2 |
TBD | Code Generation | Slides |
DRAG 8.1-8.6, 8.9
EaC Chapter 11 |
TBD | Instruction Scheduling | Slides | EaC Chapter 12 |
TBD | Register Allocation | Slides |
EaC Chapter 13
DRAG 8.8 |