Syllabus
515 Compiler Design
Spring 2007
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:
Optional Textbook:
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.
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.
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:
Learn how compilers work (the theory).
Build intuition about programming languages, especially how compiler implementation issues guide language design.
Learn how to use the tools lex and yacc.
Improve programming skills by working on a really hard project.