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.
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.
|Exams||25%||Midterm 40%/Final 60%|
|Homework and quizzes||25%||3 quizzes = 1 HW|
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).
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
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:
diff -c <file>.orig <file>
email@example.com Last modified: Tue Apr 2 08:27:30 EST 2002
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: