Compiler Design
Course Objectives
Compilers translate programs written by humans in high-level languages to programs which can be executed by machines. They are very important, heavily used and at the same time one of the most complex pieces of software. A whole range of techniques and ideas from Automata Theory, Algorithm Design, Computer Organization and Architecture, etc. are cleverly applied to create a compiler. In this course, students will learn in depth the various phases involved in the compilation process. The course will also involve implementing an actual compiler for a subset of the Java language.
Goal of the course: At the end of the course, students will have a fair understanding of some standard passes in a general purpose compiler. Students will have hands on experience on implementing a compiler for a subset of Java.
Essential Details
- Instructor: KC Sivaramakrishnan, who goes by “KC”.
- Where: Lectures in CS15; labs in DCF.
- When:
- Lectures: B Slot: M 09:00 to 09:50, Tu 08:00 to 08:50, W 13:00 to 13:50, F 11:00 to 11:50.
- Lab: Q slot: Tu 14:00 to 16:45.
- Slack: Join the course workspace.
Sign up with your IITM smail address (
@smail.iitm.ac.in); signup is restricted to smail, so a personal address will not work. Announcements and questions go here. - Moodle: courses.iitm.ac.in. Assignment bundles are released here, and all submissions go through it.
- TAs: TBA
Textbooks
Primarily,
- Compilers: Principles, Techniques, and Tools, Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey D. Ullman. Addison-Wesley, 2007 [The Dragon Book].
Reference,
- Modern compiler implementation in Java, Second Edition, Andrew W. Appel, Jens Palsberg. Cambridge University Press, 2002.
Grading
| Item | Weightage (%) |
|---|---|
| Assignments | 40% |
| Short quizzes (3 x 3%) | 9% |
| Quiz1 | 12% |
| Quiz2 | 12% |
| EndSem | 27% |
| Extra: Class Participation | Upto 5% |
The three short quizzes are 15 minutes each, held in class, and are multiple choice or one-line answers. They fall roughly midway between the start of the course and Quiz 1, between Quiz 1 and Quiz 2, and between Quiz 2 and the end semester exam. Dates are announced in class.
Acknowledgements
The course builds upon materials from Kartik Nagar (IITM), V Krishna Nandivada (IITM), Tony Hosking (ANU), Jens Palsberg (UCLA) and Alex Aiken (MIT).