CSCI 6480 Compiler Design: Syllabus
Spring 2012
Instructor: M. S. Krishnamoorthy (moorthy)
Prerequisites:
Models of Computation and Programming Languages
You must be familiar with a high level block-structured language.
If you are not proficient in C or C++ or Java 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:
- Engineering a Compiler by Keith Cooper and Linda Torczon
Morgan Kauffman Publishers - Required text book
- Compilers: Principles, Techniques, and Tools (2nd Edition)
Alfred V. Aho , Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
ISBN-10: 0321547985
ISBN-13: 9780321547989
Publisher: Prentice Hall - Recommended Text Book
Extra references:
- Andrew W. Appel, Modern Compiler Implementation in Java,
Cambridge University Press,2002.
- A Retargetable C Compiler: Design and Implementation Fraser and Hansen, Benjamin-Cummings, 1995.
- Advanced Compiler Design and Implementation, Muchnick, Morgan and Kaufmann, 1998.
- Crafting a Compiler, Fischer and LeBlanc, Benjamin-Cummings, 1988.
- Compilers: Principles, Techniques and Tools, Aho, Sethi, and Ullman, Addison-Wesley, 1986.
- Compiler Design in C, Holub, Prentice-Hall, 1990.
- Recent Research Papers.
Grading:
Projects (3) 75%
Paper Presentation 25%
92-100 is an A, 90-92 A-, 85-89 is a B+, 82-85 B, 80-81 B-, 75-79 is a C+, 72-74 C, 70-71 C-, 60-69 is a D,
< 60 is an F
Topics:
Chapter Numbers(of Engineering a Compiler) are given with in parantheses - roughly covers the topics.
- Week 1 - Jan 23 Overview (compiler tools), Lexical Analyser (1,2)
- Week 2 - Jan 30 Lexical Analyzer (tools), Parser - project 1 Out (2,3)
- Week 3 - Feb 6 Parser Generator (tools), Parser (3)
- Week 4 - Feb 13 Context Sensitive Analysis, Intermediate Representation (4,5)
- Week 5 - Feb 20 Intermediate Representation, Procedure Abstraction (5,6) Project 2 out Project 1 is due
- Week 6 - Feb 27 Code Generation (7)
- Week 7 - Mar 5 Introduction to Optimization (8)
- Week 8 - Mar 19 Date Flow Analysis (9) Project 3 out Project 2 is due
- Week 9 - Mar 26 Scalar Optimization (10)
- Week 10 - Apr 2 Instruction Selection (11)
- Week 11 - Apr 9 Instruction Scheduling (12) Start working on Individual projectsPapers Project 3 is due
- Week 12 - Apr 16 Register Allocation (13)
- Week 13 - Apr 23 Just in Time Compilation and interpreters (papers)
- Week 14 - Apr 30 Projects Presentation Term Paper due
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 Java or C or C++. A number of compiler generator tools will be used.
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.
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.