CS 480 -- Translators
General Information -- Winter Term 2011

Oregon State University
School of Electrial Enginering and Computer Science (SEECS)



See also the detailed timetable at end of this web page
Week Monday Wednesday Friday
Week 1
Jan 3-7

Due: Homework Zero
Week 2
Jan 10-14

Due: Homework One
Due: Prog One

Week 3
Jan 17-21
no class
Due: Prog Two
Due: Homework Two
Week 4
Jan 24-28

Due: Homework Three
Week 5
Jan 31-Feb 4

Due: Prog Three
Week 6
Feb 7-11

Week 7
Feb 14-18
Due: Prog Four
Week 8
Feb 21-25
Week 9
Feb 28-Mar 4
Due: Prog Five Midterm
Week 10
Mar 7-11

Due: Prog Six


Lectures: Prof. Timothy Budd, Office: Kelly Engineering (KEC) 3049, Phone: 737-5581, E-mail: budd@eecs.oregonstate.edu
TA: Rahul Gopinath

Office Hours

My office hours (Professor Budd) will be MWF 1:30-3:00, in my office (KEC 3049).
TA office hours: thursday 12:00-2:00 PM KEC attrium

Important Dates and Times

(see also the more detailed schedule).
Class Time
MWF 3:00 - 3:50 GLSN 200
Monday, January 17, no class
Midterm 1
Wednesday, Feb 9, in class.
Midterm 2
Friday, Mar 4, in class.

Purpose of this Course

Introduction to translators (specifically compilers, but the techniques apply to other types of translators), development of large software projects, working in programming teams.


The textbook we will use this term is Compilers, Principles, Techniques and Tools, 2nd Edition. It is considered to be the definitive text on this topic, and covers much more than we will be able to explore in the ten week period. You can often still find copies of the first edition, which can also be used.

I will also distribute my lecture notes, which are very rough.  These should be considered the starting point for your lecture notes, not a replacement for notetaking.

Since you will be doing your programming assignments in Java, you may want to pick up a java tutorial as an optional text. I'll give you some names if you ask.

Course Learning Objectives

On completion of the course, students must demonstrate the ability to:

  1. Describe a wide variety of different forms of translators (XML->html, Tex->dvi, hardware description languages, and so on)
  2. Describe the various phases of a compiler
  3. Explain the difference between the compile time and run time representation of a program, and the structures appropriate to each
  4. Use regular expressions and context free languages to define a language.
  5. Create a grammar for a simple context free language
  6. Implement a lexical analyser to recognise tokens defined by regular expressions
  7. Implement a parser, using either top down (recursive descent) or bottom up (LR) techniques
  8. Generate working target language for simple programming constructs.


There will be six graded homeworks, and as many programming assignments. I have scheduled the dates for these already. There will be two midterms. Grading will be based on a weighted formula which results in the programming assignments and homework being given roughly the same weight as the two exams. I will periodically post class standings and averages.

Completing all work correctly is sufficient to obtain a grade of B. The A grade will be reserved for work that is above average in creativity or completness. A grade of C or below is given for work that is below standard.

If you are taking the classs S/U, be aware that this fact is not reported to me by the administration. A grade of C- or better is necessary to obtain the grade of S.

Grades (including class standings) are posted on-line

Old Exams

I have placed a number of old exams on-line, in both postscript and pdf format:

Languages and Machines

You will be doing your programming assignments in the language Java.

Because we are using Java, you hava a wide flexibility in the range of machines you can use. There are free Java systems for the mac, PC's, and on the HP machines. I personally do all my development on my mac at home.

You will be GRADED on the College of Engineering systems. It would therefore be prudent to make sure everything you hand in will run on those systems.

You can request a unix group be created for you. Send me e-mail with the names of the members of your group. This will allow all group members to have access to your files without compromising security.

I will distribute a lot of source code from the web. You are welcome to copy these files to your own machine. Note that the compiled programs are applications, not applets, so you cannot run them from your web browser.

Programming Assignments

There are six programming assignments, on the following topics:

You are encouraged to work in programming teams of up to four people, and hand in team solutions. When you work in a team, put the names of all team members in your source code, as well as in the message box provided on the web-based submission form. Groups are encouraged to contact me for a group directory. This will allow members of the group to work together, without exposing your work to other students. You can make a symbolic link to the group directory to make it appear as if it is part of your own area.

The following links provide access to web-based copies of the assignments:

Late Assignments

I will generally hand out a working solution to the programming assignments a day or two after the due date. Because of this, under no circumstances will assignments be accepted that are more than one week late. Assignments that are past the due date, but less than a week late, will be accepted if previous arrangements have been agreed upon, and if you can produce a listing showing the state of the solution prior to the due date. However I reserve the right to deduct points for being late.


You are encouraged to discuss problems and programming assignments with each other. Helping others learn is often the most powerful way of mastering material yourself. However, taking somebody elses solution without their knowledge or consent is cheating and will be punished. Do not leave copies of the programming assignments in the trash can in a public place -- throw them away at home or some other private place. Also do not leave your directories unprotected. (Last year we had several situations where students were completing their programming assignments using the trash can rather than the computer, or were taking assignments from unprotected directories). The College rules on this issue are harsh and are enforced.

Departmental Policy on Dishonesty

Students with Disabilities

It is the policy of Oregon State University to comply with Section 504 of the Rehabilitation Act of 1973, the Americans with Disabilities Act of 1990, and other applicable federal and state regulations that prohibit discrimination on the basis of disability. The Rehabilitation Act and the ADA require that no qualified person shall, solely by reason of disability, be denied access to, participation in, or the benefits of, any program or activity provided by the University. Each qualified person shall receive the reasonable accommodations needed to ensure equal access to employment, educational opportunities, programs and activities in the most integrated setting

Please see me with any issues regarding accomodation for students with disabilities.

Mail List

We will be using a mail list for this course. The web page for the mail list is here. From the web page you can access an archive, as well as make various modifications to your subscription.

You are allowed, even encouraged, to post message to the mail list if you think they will be of iterest to the rest of the class. I will also often post information to the mail list. Otherwise, please use e-mail to communicate directly with the professor or the TA.

Information that is longer than a paragraph or two I'll probably type up as a web page, adding the links here:

Detailed Schedule

Prepared by Tim Budd, budd@eecs.oregonstate.edu.