CS3300 - Compiler Design
Course Timings
Slot B (Mon 9 AM, Wed 1 PM, Fri 11 AM). Online.
Course Overview
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.
Course Contents
- Lexical Analysis and Parsing
- Type checking
- Intermediate Code Generation
- Register Allocation
- Code Generation
- Overview of advanced topics
Grading Policy
- Theory: 60%, Lab: 40%
- Theory
- Quiz 1 (Sep 7): 14%
- Quiz 2 (Oct 12): 14%
- Endsem (Nov 17): 30%
- Class Participation: 2%
- Lab
- 5 Assignments
- More details on the lab webpage: https://sites.google.com/smail.iitm.ac.in/cs3300-aug-nov-2021
Course Textbooks
- Compilers: Principles, Techniques, and Tools, Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey D. Ullman. Addison-Wesley, 2007
- Modern compiler implementation in Java, Second Edition, Andrew W. Appel, Jens Palsberg. Cambridge University Press, 2002.