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.)
- Regular expressions,
- State machines,
- Data structures (hash tables, lists, trees, etc.),
- The make(1) utility, and
- Symbolic debuggers.
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:
- Mailing list: cse443@listserv.nd.edu
Students are required to subscribe to the mailing and read this mail.
Furthermore, students are responsible for
any information posted by the instructor.
This is a good forum for asking general questions.
Any student may post to the group and can, therefore, answer the
questions.
Understand that any help you give to other students is subject to the
academic code of integrity.
Therefore, you should avoid posting some things, such as solutions to
a homework or programming assignment.
- Web Page:http://www.cse.nd.edu/courses/cse443/www/
Up-to-date course information will be available on the course web
page, such as course handouts and current grades.
- Course Directory:/afs/nd.edu/courses/cse/cse443.01
The course directory will contain electronic copies of the handouts
and other files that may be useful for programming assignments.
It also contains the directories in which student homework will be
deposited.
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:
Programming Language Pragmatics,
by Michael L. Scott,
Morgan-Kaufmann Publishers,
ISBN 1-55860-442-1.
Grading:
Grading is based on the following items:
| | Percentage | Notes |
| Exams | 25% |
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:
- send the TA a patch,
- list which test cases you wish to have re-graded, and
- wait patiently for a response.
vin@cse.nd.edu
Last modified: Tue Apr 2 08:27:30 EST 2002