Professor: Liz Johnson
Office: Hinkle 133
Phone: 745-3667 (has voice mail also)
Email:johnsone@xavier.edu
Office Hours: MWF 11:30-12:25, Th
11-12 and by appt.
Required Textbook: Appel, Modern Compiler Implementation in Java,
Second Edition
Home Page: http://www.cs.xu.edu/csci310/08s/ (and
some Blackboard use)
The topic of this course is compiler construction. The main goals for the course are that students: 1) understand the basic structure of a compiler, 2) develop knowledge and skills to explain, design, and implement the various parts of the compiler, 3) understand more fully how high-level languages are implemented. Specific topics will include (at minimum): lexical analysis, syntactic analysis (parsing), semantic analysis, run-time storage management, and simple code generation.
Comments from students in previous semesters have indicated that this course takes a lot of time. It is vitally important that you keep up with the work and not procrastinate on starting projects. The deadlines are tight, but doable. Comments have also indicated that students learned a lot and felt proud of their accomplishments in the course.
Your grade will be based on 3
components: 1) homework/in-class assignments (10%), 2) exams - midterm (10%)
and final (15%), and 3) projects (65%).
Project 1 is worth 5%. Projects 2-7 are worth 10% each.
Homework will be due at the
beginning of class on its due date and late homework will not be accepted
except in emergencies. You must contact the instructor on or before the due
date if an emergency arises. See the next section for late policies on the
project.
The Department of Mathematics and Computer Science follows the following grading standard:
A: Exceptional - The student's attainments are out of the normal course, unusual and special.
B: Good - The student's performance is done rightfully or skillfully and is commendable.
C: Satisfactory - The student's accomplishments are sufficient for the needs of the course.
D: Minimal passing
F: Failure
Plus/minus
modifiers on the grades will be used to distinguish efforts within a particular
category as deemed appropriate by the instructor. See http://www.xavier.edu/math_cs/grading_policy.cfm
for further clarification of the departmental grading policy.
You will be writing a compiler in
stages, broken up into projects. The projects will be written in Java and must
be runnable by me on cerebro.
You may choose to work alone or in two-person teams on the project. If you
choose to work with a partner, each person is expected to be a fully contributing
member of the team. You are expected to
work out any problems with your partner on your own so choose wisely. For the first project, you may choose a
trial partner or choose to work alone. On the day after the due date for
that project, you must choose your partner or choose to work alone for the rest
of the semester. See the separate
handout on the project grading rubric for how you will be graded for each
project.
It is essential that you keep up with the work in this class because each project builds on the previous ones. On no more than three of the projects, you will be permitted to delay turn-in up to one week without penalty. Other than this, late projects will not be accepted.
Unless otherwise indicated by the instructor, homework and exams are individual work. While you may discuss general concepts with your classmates, the work should be the result of your knowledge and skills. You are encouraged to discuss more specific concepts with me during office hours or by appointment.
The rules for discussion of the project
are more liberal. I do expect that you will discuss general concepts as well as
specific aspects of the project with your classmates, but you should not
exchange code with anyone except your partner. You may ask for debugging help
from classmates if you are stuck, but no one except you or your partner should
execute or modify your code.