Keystone course. A continuation of CSC 450. Compilers, data structures, control structures, and the runtime environment. Emphasis on implementation issues. (Prerequesites: CSC 345, CSC/PHI 385, and CSC 450.)
|   |   Instructor:   |   James Moen   |
|   |   Email:   |   moen@augsburg.edu   |
|   |   Phone:   |   612 330-1142   |
|   |   Office:   |   Sverdrup 203F   |
|   |   Office Hours:   |   2:00 PM-3:00 PM Tuesday, Thursday   |
|   |   Classroom:   |   Sverdrup 202   |
|   |   Classroom Hours:   |   1:00 PM-5:00 PM Saturday   |
I'm often in my office at other times during the day, not just during my regular office hours. You may visit my office (almost) any time I am there. You may also telephone or send email at any time. After the Spring Day term is over, I will be in my office much less often, and I will hold office hours by appointment only.
Kenneth C. Louden. Compiler Construction: Principles and Practice. PWS Publishing Company. Boston, Massachusetts. 1997. (ISBN 0-534-93972-4)
(This is the same textbook that was required for CSC 450 in Winter 2007.)
Your grade will be based on one large programming project, and on eight short writing assignments. You should expect to devote considerable time to this course.
For the programming project, you must write and document a compiler (in Java) for the programming language Snarl that was introduced in CSC 450. Your compiler will be graded both on style (is it easy to understand?) and on correctness (does it work properly?). Internal comments and external documentation will be graded according to the usual requirements for technical prose in Standard English. The programming project will be due on the last day of class. I will not accept late projects.
For the keystone component of this course, you must attend talks by four guest speakers. For each talk, you must do all of the following.
Your essays must reflect on how the issues discussed affect you and the rest of society. They must not simply summarize the talks and discussions. Essays will be graded on how well they accomplish this, according to the usual requirements for expository prose in Standard English. I will not accept late essays.
Both the programming project and the essays must be submitted on paper. I will not accept projects or essays submitted by email, except in case of emergency.
There will be no examinations in this course.
I'll assign points for the programminng project for each essay. Your final grade will be based on the number of points you get during the term. About 70% of your grade will be determined by your score on the project, and about 30% by your scores on the essays. You must turn in all eight essays to pass the course.
Students are expected to be familiar with Augsburg College's policies on academic honesty. You will be required to sign a statement indicating that you understand these policies. Although you may exchange ideas with other students, everything you turn in must be your own work. Copying assignments, or parts of assignments, is not permitted!
This schedule is approximate. I may change it during the term. Chapter numbers refer to the Louden text. I won't always follow the textbook exactly. Instead, I'll use it as outside reading to supplement the lectures. The schedule for the guest speakers, class discussions of the speakers, and due dates for the essays will be announced on the first day of class.
|   |   Mar 31   |   Chapter 6   |   Register allocation.   |
|   |   Apr 14   |   Chapter 6   |   Stack management.   |
|   |   Apr 28   |   Chapter 6   |   Code generation.   |
|   |   May 12   |   Chapter 7   |   Code generation. Writing documentation.   |
|   |   May 19   |   |   Work on final project.   |
|   |   June 2   |   |   Work on final project.   |
|   |   June 15   |   |   Final project due at the beginning of class.   |