CS 432F: Compiler Design Principles
CS 728: Compiler Design

This page gives information about the courses ``CS 432F: Compiler Design Principles'' and ``CS 728: Compiler Design'' taught by the Department of Computer Science and Engineering at the Indian Institute of Technology Delhi. 

General information about the courses are available under the following headings:

 Overview | Objectives | Course Description | Prerequisites


The course is being taught in the Spring Semester of year 2002 by Sanjiva Prasad. Information about this course offering is available under the following headings:

 Staff | Textbooks | | Computing Resources | Administrative Information and Grading Policy

Also available are the following (at least from within IITD):


HOT NEWS

Check your PMT

Read comments about assignment 1

Read comments about assignment 2

Read comments about assignment 4


Overview

CS 432F: Compiler Design Principles is an introductory course on concepts and principles in compiler design and implementation. CS 728: Compiler Design is a graduate level version of the course with similar orientation intended for graduate students who have not taken an undergraduate Compilers course similar to CS 432F.

Objectives

The main objectives of these courses are to give students hands-on experience with crafting a simple compiler, working on a sizeable software engineering project, using modern software tools, and most importantly correlating theory with practice.

Course Description

The Courses of Study booklet has this to say:

CS 432F: Compiler Design Principles

5 Credits: 3-0-4 (3 Lectures a week, no tutorial, four practical hours)

Contents. Compilers and translators; lexical and syntactic analysis, top-down and bottom up parsing techniques, internal form of source programs; semantic analysis, symbol tables, error detection and recovery, code generation and optimization. Type checking and static analysis. Algorithms and implementation techniques for type-checking, code-generation and optimization. Students will implement static analysis type checking, and optimization.

CS 728: Compiler Design

4 Credits: 3-0-2 (3 Lectures a week, no tutorial, two practical hours)

Contents. Language processors: compilers, interpreters, Front end tools, processing syntax, abstract syntax and intermediate code; semantic analysis, symbol tables, error detection and recovery; abstract machine and code generation; type systems and static analysis; data flow analysis, optimizations; practical exercises to build language processors.

Prerequisites

For CS 432 F the prerequisite is: CS 232 F: Programming Languages.
For CS 728: A Programming Languages course similar to CS 232 F.
Other desired background: knowledge of automata theory, context free languages, computer architecture, data structures and simple graph algorithms, logic or algebra.


Staff

Instructor: Dr Sanjiva Prasad

Teaching Assistants:

Textbooks

  1. modern compiler implementation in ML by A. W. Appel. Cambridge University Press, 1997. (You are advised to buy and use the Java version of the book, which is cheaper and more easily available).
  2. Compilers: Principles, Techniques and Tools by A. V. Aho, R. Sethi, J. D. Ullman. Addison-Wesley, 1986.

Language-specific reference material (may not be affordable/available in a shop):

  1. ML for the Working Programmer by L.C. Paulson, Cambridge University Press.
  2. Online SML Tutorial by Bob Harper at CMU.
  3. SML-Resources(for locals only)
    1. Tutorial on Standard ML(ps.gz)
    2. Emacs SML mode(tar.gz)
    3. SML Basis Documentation
    4. SML compilation Manager(ps.gz)
    5. ML-lex and ML-yacc (ps.gz)


Syllabus

  1. Lecture 1: Introduction. What is a compiler? Why is the course hard?
  2. Lecture 2: Overview of SML: Polymorphism and modules
  3. Lecture 3: Overview of SML's module system: functors, abstractions.
  4. Lecture 4: Lex technology. Grammars, Context-free grammars, ambiguity, example of removing ambiguity.
  5. Lecture 5: Predictive Parsing (Recursive Descent): First and Follow, Building a LL(1) Parsing Table, problem of left recursion.
  6. Lecture 6: Eliminating left recursion, left factoring, error recovery. LR grammars.


    Computing Resources


    Administrative Information

    Schedule and Classrooms:

    G slot in the time table.

    Lectures in VI-301.
    Tue 2:00-3:30
    Fri 2:00-3:30

    Tutorials None!! .

    Laboratory hours at your convenience

    Make-up lectures, quiz hour (when announced)

    Exam Schedule:
    Minor I 2--5 February 2002 --to be ann-- --to be ann--
    Minor II 14--16 March 2002 --to be ann-- --to be ann--
    Major

     

    Marks:

    Minor, Quizzes
    Major    
    Assignments and Homework    
    Other Assessment    

    Grading Policy:

    Per Institute regulations, an ``A'' grade will be awarded only over 80% and no student with less than 30% will be given a passing grade.

    An ``I'' grade can only be awarded only in the case of a serious illness during the major exam. A make-up exam will be scheduled at the earliest, and the ``I'' grade will be converted as soon as possible. There will be no make-up tests for the minors.

    Grades may be drastically lowered if the student fails to comply with the attendance requirements, or is dishonest.

    Other policies:



    Sanjiva Prasad / Dept. Computer Science and Engineering / IIT Delhi / Hauz Khas/ New Delhi 110016 / sanjiva@cse.iitd.ernet.in