CS 66-648 Compiler Design: Syllabus
Spring 1997
Instructor: M. S. Krishnamoorthy (moorthy)
Prerequisites:
CS 66-431 Systems Programming
You must be familiar with a high level block-structured language.
If you are not proficient in C or C++ then you must be prepared to learn it
quickly.
You should understand general programming concepts (recursion,
parameter passing). You should have experience using data structures such
as pointers, linked lists, trees, hash tables, and stacks.
Text:
- Compilers: Principles, Techniques and Tools, Aho, Sethi, and Ullman, Addison-Wesley, 1986.
Extra references:
- A Retargetable C Compiler: Design and Implementation Fraser and Hansen, Benjamin-Cummings, 1995.
- Crafting a Compiler}, Fischer and LeBlanc, Benjamin-Cummings, 1988.
- Introduction to Compiler Construction
with UNIX, Schreiner and Friedman, Prentice-Hall, 1985. (on reserve)
- Compiler Design in C, Holub, Prentice-Hall, 1990.
- Recent Research Papers.
Grading:
Projects (3) 60%
Test(1) 40%
If you cannot do the projects, because of accessability to a computer
with utilities, such as lex, yacc, then there will be around 5 homeworks.
90-100 is an A, 80-89 is a B, 70-79 is a C, 60-69 is a D,
< 60 is an F
Topics:
- The Structure of a Compiler ( 1 lecture)
- Lexical Analyzer, LEX, Design of Lex ( 3 lectures)
- Top down Parsing, LL(1) Parsers ( 3 lectures)
- Bootom up Parsing, YACC, LR parsers ( 3 lectures)
- Syntax Directed Translation ( 2 lectures)
- Types and Type Checking ( 2 lectures)
- Run-Time Storage Administration and Symbol Table Management ( 2 lectures)
- Intermediate Code and Code Generation ( 4 lectures)
- Data-Flow Analysis ( 3 lectures)
- Code Optimizations ( 2 lectures)
- Architcure and recent development on compilers ( 2 lectures)
Compiler Project:
You will do the projects on either the unix worlstations or on PC's
it is your responsibility to ensure that your program works correctly
on it.
All programming is done in C or C++. A number of tools will be used, i.e.
Lex, Yacc, Make.
Late Assignments:
Unless you make prior arrangements with the instructor or have a medical
excuse:
- Programming projects are submitted electronically
and are due at midnight (23:59:59) on the due date. If you have your
Makefile set up correctly, this will simply consist of the command
make submit.
- Programs may be submitted late for a penalty of 10% per day for up to
4 school days.
Dishonesty Policy:
On written homework assignments, you may discuss problems with other students,
but the writeup must be your own. Merely copying answers is not permitted.
On programming projects, you may discuss problems and help one another
find program bugs. You are not to write code together. All
programming code must be your own.
The penalty for cheating on homework, programming projects, quizzes, and
exams will be failure for the class.
Save all graded homework until the end of the
semester just in case something is lost or recorded incorrectly.