Oregon State University CS 480 Home Page

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

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


http://classes.engr.oregonstate.edu/eecs/winter2004/csHandouts/

Calendar

See also the detailed timetable at end of this web page
WeekMondayWednesdayFriday
Week 1
Jan 5-9
Due: Homework Zero
Week 2
Jan 12-16
Due: Homework One Due: Prog One
Week 3
Jan 19-23
No class Due: Prog Two
Due: Homework Two
Week 4
Jan 26-30
Due: Homework Three
Week 5
Feb 2-6
Due: Prog Three
Week 6
Feb 9-13
MIDTERM
Week 7
Feb 16-20
Week 8
Feb 23-27
Due: Prog Four
Week 9
Mar 1-5
Due: Prog Five
Week 10
Mar 8-12
Due: Prog Six
Finals
Tuesday, March 16, 9:30AM

Instructor

Lectures: Prof. Timothy Budd, Office: Dearborn 218, Phone: 737-5581, E-mail: budd@cs.orst.edu
TA: Dan Moffitt and Christoph Neumann E-mail: moffitt@engr.orst.edu and neumann@engr.orst.edu

Office Hours

My office hours (Professor Budd) will be MWF 11:00-12:00, in my office (Dearborn 218).
TA office hours:

Important Dates and Times

(see also the more detailed schedule).
Class Time
MWF 10:00 - 11:00 Owen 103
Holiday
Monday, January 19, no class
Midterm
Wednesday, Feb 11, in class.
Final
Tuesday, March 16, 9:30 AM.

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.

Textbooks

The textbook we will use this term is Compilers, Principles, Techniques and Tools. 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.

I will also distribute my lecture notes, which are very rough. I will be revising my lecture notes this term to deal with more modern topics, such as object-oriented programming. I've rewritten some of the lecture notes to be more Java specific, and in the process cleaned them up and put then in book format. These will be distributed with the lecture notes. If I find time, I may be writing more chapters as the term progresses.

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.

I'll also be handing out introductory java material as needed.

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. Use regular expressions and context free languages to define a language.
  4. Create a grammar for a simple context free language
  5. Implement a lexical analyser to recognise tokens defined by regular expressions
  6. Implement a parser, using either top down (recursive descent) or bottom up (LR) techniques
  7. Generate working target language for simple programming constructs.

Grading

There will be six graded homeworks, and as many programming assignments. I have scheduled the dates for these already. There will be one midterm, and the final. 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. I assume that many of you will have prior experience in Java, but I will be giving some introductory material in lectures.

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 HP systems. It would therefore be prudent to make sure everything you hand in will run on those systems.

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.

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.

Cheating

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

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@cs.orst.edu, 1/5/2004.