Course Information for CSE 443 Spring 1998


Course:

CSE 443, Compilers, Call No. 0193
MW 3-4:15, 118 DeBartolo
Final Exam 4:15-6:15pm, May 6.

Instructors:

Name: Vincent W. Freeh
Office: 354 Fitzpatrick
Email: vin@nd.edu
Phone: 631-9131
Office Hours: T 1-2pm

Name: Alexei Kudriavtsev
Office: 254 Fitzpatrick
Email: akoudria@cse.nd.edu
Phone: 631-4391
Office Hours: M 10:30-11:30am, TH 1-2pm

Course Description:

A compiler reads a program written in one language and translates it into an equivalent program in another language. This course introduces the theory and practice of compiler construction. Students will apply the theory presented when building their own compiler.

The principles and techniques of compiler writing are ubiquitous. Compiler writing spans programming languages, architecture, theory, automata algorithms, and software engineering. Therefore, the knowledge acquired in this course will be used numerous times in the career of a computer scientist.

Pre-conditions:

(Students are assumed to be familiar the following.) It is not necessary to have taken a formal course in automata (ie, CSE 411). Although a basic understanding of regular expressions and state machines is expected, this is no more than CSE students have acquired in core courses. There is significant programming requirement. The student must be proficient in C/C++ and make(1). Furthermore, the use of a symbolic debugger (such as gdb) is highly recommended.

On-line Resources:

Students are required to know all information that is presented in the above resources. It is the student's responsibility to review this information on a regular and timely basis. Resources on the course web page and in the course direectory change throughout the semester. Students are cautioned against printing out the material at the beginning of the semester and refying to it weeks later. Instead printing, if done at all, should be done on a JIT (just-in-time) basis.


Text:

text
Programming Language Pragmatics, by Michael L. Scott, Morgan-Kaufmann Publishers, ISBN 1-55860-442-1.

Grading:

Grading is based on the following items:

PercentageNotes
Exams25% Midterm 40%/Final 60%
Homework and quizzes 25% 3 quizzes = 1 HW
Programs 25%
Project 25%

In the event that the course does not progress as planned (imagine that!), this breakdown may change. Ample warning will be given in such a case.

Individual assignment grades are not curved. (Curving grades is misguided. If everyone does excellent, all should get an excellent grade; not merely the top quartile.) The final grade is determined on a normal scale (A = >93; A- = 90-93; B+ = 87-89; etc.) Although the final grade is not curved, some downward adjustment in the cutoff points may be made. That is the cutoff for an A- might end up lower than a 90, but it will not be higher.

Late assignments will be accepted only in extreme situations and with prior arrangement. In above, "extreme" usually requires a note from a doctor, and "prior" means before assignment is due (usually a day before).

Re-Grading of Programs

It is very hard (maybe impossible) to create tests that are independent or isolated, that do not overlap. Therefore, it is very easy for one error to cause more than one test to fail. Consequently, I have a re-grade policy for programs.

My policy is if one simple error caused multiple failures then I will regrade based on that. Please look into the causes of your mistakes. If it is the case that fixing a single, simple mistake makes it possible for your program to execute several tests correctly, then you should create a patch file.

A patch is a file created by diff(1) that is applied by patch(1). First, copy the original file(s) that you turned in (it is in your turnin directory) to .orig. Then, with both the original and the new files in the same directory, execute the following:

diff -c <file>.orig <file>

This re-grade policy is to grade what was turned in fairly; it is not a second chance to get the assignment right. If your patch file is more than a dozen lines or so, than this is probably not a single, simple mistake. In which case, you need go no further. However, if the patch file is short, then do the following:

  1. send the TA a patch,
  2. list which test cases you wish to have re-graded, and
  3. wait patiently for a response.

vin@cse.nd.edu
Last modified: Tue Apr 2 08:27:30 EST 2002