| Name | Swarnendu Biswas |
| swarnendu AT cse.iitk.ac.in | |
| Class hours | MonWedFri 9:00-10:00 AM in RM 101 |
| Office hours | WedFri 10-11 AM in KD 302 |
| Name | Email (AT cse.iitk.ac.in) |
| Abhishek Revskar | abhishekdr |
| Akash Panzade | akashp |
| Arpan Kapoor | arpank |
| Ashutosh Patel | ashutoshp |
| Deepak Raj | deepakr |
| Dinkar Tewari | dinkart |
| Mayank Solanki | smayank |
| Siddhartha Bura | siddhab |
| Vikas | vikasv |
| Vipin Patel | vipinpat |
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 learned 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. The 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. Feel free to provide suggestions for improvements.
| Assignments | 15% |
| Midsem | 20% |
| Endsem | 30% |
| Project | 35% |
| Date | Topic | Resources | Recommended Reading |
|---|---|---|---|
| First Course Handout | |||
| 06/01, 09/01 | Overview of Compilation | Slides |
DRAGv1 Chapter 1 DRAGv2 Chapter 1 EaC Chapter 1 |
| 11/01, 13/01, 16/01, 18/01 | Lexical Analysis | Slides |
DRAGv1 2.6-2.7, 3.1-3.4, 3.6-3.8 DRAGv2 2.6-2.7, 3.1-3.4, 3.6-3.8 EaC 2.1-2.5 |
| Lex/Flex |
Manual flex In A Nutshell An Overview of flex, with Examples |
DRAGv1 3.5 DRAGv2 3.5 |
|
| 20/01 | Syntax Analysis | Slides |
DRAGv1 2.2, 4.1-4.3 DRAGv2 2.2, 4.1-4.3 EaC 3.1-3.2 |
| 23/01, 25/01, 27/01 | Top-down Parsing | Slides |
DRAGv1 2.4, 4.2-4.4 DRAGv2 2.4, 4.2-4.4 EaC 3.3 |
| 30/01, 01/02, 03/02, 06/02, 08/02 | Bottom-up Parsing | Slides |
DRAGv1 4.5, 4.7 DRAGv2 4.5-4.7 EaC 3.4 |
| Yacc/Bison | Manual |
DRAGv1 4.9 DRAGv2 4.9 |
|
| 10/02, 13/02, 15/02 | Semantic Analysis | Slides |
DRAGv1 2.3, Chapter 5 DRAGv2 2.3, 5.1-5.4 EaC 4.1, 4.3, 4.4 |
| 17/02, 27/02 | Type Systems | Slides |
DRAGv1 Chapter 6 DRAGv2 6.3, 6.5 EaC 4.2 |
| 01/03, 03/03, 13/03, 15/03, 17/03, 20/03 | Intermediate Representations | Slides |
DRAGv1 8.2 DRAGv2 2.7, 6.1-6.2, 6.4, 6.6-6.8 EaC Chapter 5 |
| 22/03, 27/03, 29/03, 31/03 | Runtime Environments |
Slides
Notes |
DRAGv1 Chapter 7 DRAGv2 7.1-7.4 EaC Chapters 6, 7.1-7.2 |
| 01/04, 03/04, 05/04, 10/04, 12/04, 14/04 | Code Generation | Slides |
DRAGv1 Chapter 9.1-9.8, 9.10, 9.11 DRAGv2 8.1-8.6, 8.9, 8.10 EaC Chapter 11 |
| 17/04, 21/04 | Register Allocation | Slides |
DRAGv1 9.7 DRAGv2 8.8 EaC Chapter 13 |