Syllabus
515 Compiler Design
Spring 2007



Instructor: Tyson Henry

OCNL 224, 898-5709, tyson@ecst.csuchico.edu
See my schedule for my office hours.



Prerequisite: CSCI 311 (formerly 151)

The programming assignments will be difficult. You need strong programming and debugging skills to complete them.  It is a helpful to take Theory of Computing (CSCI 550, formerly 256) before taking this class.  However,  it is also helpful to take 515 before taking 550.



Required Textbook:

Compilers : Principles, Techniques, and Tools
by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman
(November 1988) Addison-Wesley Pub Co; ISBN: 0201100886

NOTE: This is an older edition that was replaced last year after 20 years.  It is widely available on-line for around $20 compared to $100 for the new edition.  You are welcome to buy the new addition if you would prefer to have a new book. 


Optional Textbook:

Lex & Yacc by John R. Levine, Tony Mason, Doug Brown 2nd/update edition   
(October 1992) O'Reilly & Associates; ISBN: 1565920007

Note: It is very helpful to own this book, however it is available on-line to Chico students.



Attendance:

Attendance of lectures is not required, but is highly recommended. You will be responsible for all material covered during lecture. Missing class can make the projects especially difficult. If I verbally change the requirements of a project during lecture, you are responsible for meeting the new requirements. If you miss a class make sure you get notes from another student.



Grading:

Grading is relative. The students that do the best work will get an A , the students who don’t do as well will get a B, and so on. I do not follow the traditional percentage grades of 90% = A, 80% = B, etc., and I do not grade on a curve that defines how many students will receive each grade.

Students will receive a letter grade A-F (4.0 – 0.0) for each category (1 for exams, 1 for projects). The course grade will be a weighted average of the individual letter grades (see category percentages below). This mechanism allows for relative grading of each category (e.g., if the best score on the exams is a 60%, that student will probably receive an A for the exams, thus an A (not the 60%) will be averaged with the student’s other grades).

I will routinely post the grading spreadsheet on the class webpage. If I make a mistake in the posted grades, talk to me immediately. If you do not talk to me within a week of the posting of a grade, I will assume you think the grade is correct and fair, and you will lose your right to dispute the grade.

I expect excellent work on the exams and the project for an A in the class.  If everyone does excellent work, then everyone will get an A.

Grade category percentages

1 Midterm exam 20 %

Final exam 25 %

Programming Projects 55 %


The final will be cumulative. Both exams will cover material from the lecture, the textbook and the programming projects.

The programming project will be broken into several components. Each component will receive a numerical grade. The entire project will receive a letter grade based on the numerical average of the individual grades.


Honesty:

I expect all students to understand and follow the University’s honesty policies (http://www.csuchico.edu/prs/EMs/EM04/em04_36.htm). I will fail students who do not follow these policies, even if they don’t understand them. It is your responsibility to understand these policies.  If you are planning on cheating you might want to read my cheating policy.


Project:

The project will be to build an interpreter for a gaming language using the tools lex and yacc. The details will follow. You may work individually or with one other student. Rules for working in a group will be distributed with the project. The project will be very difficult, I recommend you work in a group. However, you must be careful to choose someone that wants to work as hard as you.


Course Goals: