 |
CS 374 - Compilers Course Information |
Course Overview
A compiler translates a program from a higher level language to a lower level
language which is executable. In this course, the basic theory and
application of compilation is taught through a semester-long project: a compiler
of a subset of the Java programming language to the MIPS assembly language.
The project will be implemented using the Java language. The structure of
the program is linear, following the presentation of key topics: lexical
analysis, parsing, abstract syntax, semantic analysis, activation records, and
code generation. The student will gain not only
an understanding of how to construct a compiler, but also the fundamental skills
for interpreter writing as well. Further, compiler writing presents one of
computer science's most beautiful bridges between fundamental theory and useful
practice.
Text
Instructor
Todd Neller
Lecture: TTh 8:30-9:45AM, Glatfelter 112
Office: Glatfelter 209
Office
Hours: MWF 10AM-12PM or by appointment.
Note:
Generally, feel free to drop in if my office door is open. If it
is closed, I'm desperately seeking to keep on top of things and rabid attack
ferrets may drop from the ceiling in my defense.
Phone: 337-6643
E-mail:
Grading
80% Assignments
20% Oral/Written Quizzes, Attendance
You are responsible to know the material from each lecture and reading
assignment before the start of the next class. We may have some
unannounced quizzes to maintain accountability.
Homework is due at the beginning of lecture on the due date.
Late homework will not necessarily be accepted. Code must be a legal
program in the relevant language in order to be graded. (It need
not be free from logic errors.) For compiled languages, this means
that the program must compile without error. For interpreted languages,
this means it must be interpretable without error.
Class attendance and participation is required. If you attend
all classes and are willing to participate, you'll get 100% for this part
of your grade. Even if you know enough to give a particular lecture,
please consider the value of helping your peers during in-class exercises.
Honor Code
Honesty, Integrity, Honor. These are more important than any computer
science concepts you will learn this class. Students can and are encouraged to help
each other understand course concepts, but all graded work must be done
independently unless otherwise specified. The work you submit (including both code and problem solving
ideas expressed in the code) should be your independent work. For
detailed information about the honor code, see
http://www.gettysburg.edu/college_life/orgs/honor_code/index.html.