Official Course Description. A study of compiler design. Overview of the compilation process. Formal definition of syntax, lexical scanning, parsing including LL and LR grammars, run-time structures, intermediate code generation, and storage allocation. Students are expected to develop a compiler for a substantial subset of a high-level language using compiler tools such as lex and a compiler yacc.
Prerequisites. CS 344, CS 345 or permission of instructor.
Location and Times. Science Center 354, TuTh 9:30-10:45.
Instructor. Alexis Maciel. Science Center 379, 268-2385, firstname.lastname@example.org.
Office Hours. M 10:00-12:00, W 2:00-4:00, Th 1:00-2:00.
Teaching Assistant. Brendan Johnson. Office Hours: M 2:00-3:30, Tu 2:00-3:30, in the ITL lab (SC334).
Required Text. Modern Compiler Implementation in Java, Andrew W. Appel, 2nd edition, Cambridge University Press, 2002.
Topics to be covered. Lexical analysis, parsing, abstract syntax, semantic analysis, intermediate representations, instruction selection, dataflow analysis, register allocation, runtime systems.
Grading. Your evaluation will be based on several homework assignments, which will most likely all be programming assignments, one midterm test, a self-assessment of your performance on the test and a final exam. Your course grade will be computed using the following formula:
The final exam will be cumulative and can be used to make up for half of the test. The minimum grade you can get on the self-assessment is the grade you got on the test. The tentative date for the test is March 4. All students are required to write the final exam (no exemptions).
Policy for missed work. There will be no make-up assignments. Late assignments may be accepted if a good excuse is provided and if arrangements are made at a reasonable time, in advance, if possible. Make-up tests can be arranged under the same conditions. Other special arrangements can be made for students forced to miss more than a few days of class.