CU website

Software project





Supporting Material



About The Course


There is no single text for this course. Required readings for individual class periods and homework assignments are drawn from the following material on reserve in the Engineering Library:

Appel, Andrew. Modern Compiler Implementation in Java Cambridge University Press, 1998. ISBN 0-521-58388-8
An object-oriented approach to compiler design that reflects the abstractions developed over the years for describing languages. Java coding closely follows the abstract notation, and thus simplifies understanding.

Gamma, Erich et. al. Design Patterns Addison-Wesley, Reading, MA, 1995. ISBN 0-201-63361-2
Standard design rules for commonly-occurring problems. Compiuler implementation exhibits these problems, and there is no point in re-inventing solutions for them.

Humphrey, Watts S. Introduction to the Personal Software Process. Addison-Wesley, Reading, MA, 1997. ISBN 0-201-54809-7
Describes a process by which one can measure one's performance as a software developer, and provides hints to help one improve.

Kane, Gerry. MIPS RISC Architecture. Prentice-Hall, Englewood Cliffs, NJ, 1988. ISBN 0-13-584293-X
The MIPS R2000 is the target machine assumed for this course. It provides a straightforward instruction set with very few anomalies, and thus does not lead to unproductive complications.

Robson, Robert. Using the STL. Springer-Verlag, New York, 1997. ISBN 0-387-98204-3
A library of standard templates that implement common low-level operations in C++ programs. These problems arise frequently in compiler construction, and thus the STL can be used to reduce the amount of code that must be written.

Waite, William M. and Lynn Robert Carter. An Introduction to Compiler Construction. HarperCollins, New York, 1993. ISBN 0-673-39822-6
Relates the high-level design to specific implementation strategies that result in a compiler with excellent performance. These implementatin strategies are the ones generally used when a compiler must be written by hand. They are also employed by the most successful compiler construction tools.

Computer Resources

Information Technology Services have provided resources on rintintin for this class. To use these resources, you must create a rintintin account for yourself if you don't already have one:
  1. Go to
  2. Enter your CU Login Name and IdentiKey password
  3. Select the Plus tab from along the top
  4. Click E-mail & Passwords on the left of the screen
  5. Scroll down and select Specialty Accounts
  6. Validate for accounts by entering CUID and PIN
  7. Click Make account on simlab
After accepting the User Responsibilities, you must input a password of your choice. The account will usually be made in the next 5 minutes.

Grading Policy

Evaluation in this course is by means of Homework (30%), an hour-long midterm examination (30%), and a final examination (40%).

You may always submit material early. Late material will not be accepted under any circumstances. By prior arrangement, with sufficient justification, you may be excused from a homework assignment or an examination. You may also be excused after the fact due to a serious personal emergency, but such an excuse will require copious documentation.

Grades will be assigned according to the University's standardized grading system (see the University of Colorado Catalog):

B-good/better than average
D-minimum passing

A regularly-updated grade report for this course is available on the web. You are responsible for verifying that the individual grades reported for you are correct, so please check this report periodically.

Because of federal privacy regulations, we are not allowed to use any part of your student ID to identify you, nor are we allowed to present grades for individual students in alphabetical order. Thus we have used a ``Grade ID'', specifically generated for this course, to identify your grades in the report.


The general purposes of homework assignments are to focus your attention on important aspects of the material, giving you practice in applying your knowledge and exposing any areas of misunderstanding, and to help you in learning to to plan and track your performance. Each assignment specifies the areas of interest and outlines what you are expected to gain from doing it.

Homework is to be completed each week of the course except the week of the midterm examination and the week of Thanksgiving, as indicated on the schedule. At the beginning of the Monday class foloowing a week in which homework is completed, you must submit the remaining deliverables for that homework and the plan for the next homework. (Plans are always submitted by enetering them into the PE system; each homework assignment specifies how the remaining deliverables must be submitted.) You may always submit material early. Late material will not be accepted under any circumstances. By prior arrangement, with sufficient justification, you may be excused from a homework assignment or an examination. You may also be excused after the fact due to a serious personal emergency, but such an excuse will require copious documentation.

You must work in teams of 2-4 to complete each homework assignment; homework will not be accepted from individuals or larger groups. There are two reasons for this requirement:

  • Students derive significant benefits from discussing material with one another and attempting to answer each other's questions.
  • Teamwork reflect industrial practice, and experience in this area is useful both in later courses and in your career.
Each team should hand in a single solution to the homework, signed by all team members. In addition, the names of all team members must appear in comments at the beginning of each listing handed in as homework.

Teams are self-selected, and need not remain stable throughout the semester. You are strongly encouraged to seek a team whose members fill gaps in your background, rather than ones whose members are clones of yourself.

Each student must individually plan and track their effort for each assignment and enter the information into the web-based PEP system, using assignment-specific forms. (Click here for hints about planning and tracking.) Because the system is web-based, the forms can be filled out from anywhere that you have web access.

  • A time log entry must be made as soon as possible after completing each activity.
  • Deliverables must be enetered according to the requirements stated above.
The specific numbers appearing in the PEP database do not affect your grade in any way. It is in your own interest to make those records reflect your effort as accurately as possible, because otherwise they will be useless to you for planning purposes.


The dates and times of the examinations are:

MidtermFriday, October 169:00-9:50am
FinalFriday, December 117:30pm-10:30pm

Examinations are intended to measure your individual mastery of the material. They concentrate on your understanding of the important concepts, rather than your ability to memorize details. (Look at some previous examinations get an idea of the kinds of questions you might expect.)

Group discussions, in which you try to explain course material to your peers, is a good way to study for these examinations: The best way to learn something is to try to explain it to someone else. However, it is important that you limit your frustration! If the group has a question that baffles its members, it's time to see the instructor ...

Revision 2.6 (1998/08/21 19:26:44)