Computer Science 398: Compilers

Spring 1997

Syllabus

Instructor:
Brian L. Stuart
Office:
Math 419
Office Phone:
843-3725
Office Hours:
8:00-10:00 Monday; 8:00-10:00 and 1:30-3:30 Wednesday; 8:00-9:30 Thursday; 8:00-9:00 Friday, You are free to drop in any time to discuss the class (or anything else for that matter).
Text:
Compilers: Principles, Techniques and Tools by A. V. Aho, R. Sethi and J. D. Ullman
Objectives:
In this class, you will develop a compiler for a programming language of your design/choice. Your compiler will generate code to run on the Sun SPARC architecture under the UNIX operating system. During this development project, you will attain a significant understanding of many of the techniques and tools used in compiler development. Among these will be Lex and YACC which you are encouraged to use for your compiler. You will not only learn how to use these tools; we will also study how they work. In addition to these, some of the other general software development tools that you will have available are make and dbx/gdb.
Approximate Schedule of Topics:
Below is a list of topics to be covered during this course. Section and chapter numbers refer to the course text. The material of Chapter 5 and some additional material on some more advanced/modern techniques may be covered if time permits.
Grading:
The compiler development project will be broken down into 6 phases totaling 70% of your grade. A mid-term and a final exam will comprise the remaining 30%. The exact breakdown is as follows:
Mid-Term Exam                 10%
Final Exam                    20%
Language Design               10%
Lexical Analyzer              10%
Parser                        12%
Symbol Table                  10%
Intermediate Code Generation  13%
Code Generation               15%
All work will be conducted according to Rhodes' Honor Code.