CSCI 310 - Compiler Construction

MWF 12:30-1:20, Alter 213


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)


Course Description

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.


Grading

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. 


Projects

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.

Academic Integrity

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.