Syllabus
515 Compiler Design
Spring 2008



Instructor: Tyson Henry
OCNL 224, 898-5709
trhenry@csuchico.edu
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.


Registraiton:

Send me e-mail with your ECST username, e-mail, and PIN.


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 1995) O'Reilly & Associates; ISBN: 978-1565920002

Note: It is very helpful to own this book.  Sometimes this book is available on-line via the CSU library's subscription to Safari.  However, this semester it does not appear to be in the Safari collection.

If you don't want to buy the O'Reilly book, as an alternative you can use the on-line GNU bison and flex manuals.



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.  In order to view your grade you will need to e-mail a PIN to me.

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 flex and bison. 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: