Princeton University
|
Computer Science 320
|
|
Understand the design and construction of compilers. Concepts include syntactical analysis, semantics, code generation, optimization, and run-time systems. Problems in processing imperative languages, such as C and Pascal, as well as functional languages such as ML, will be examined. A complete compiler for a small language will be implemented in ML.
In as much as time allows at the end of the semester, this course will explore a recent trend in uniprocessor computing - increased reliance on sophisticated back-end compilation. The compiler, no longer just a consideration in instruction-set architecture design, has become the driving factor behind many architectural innovations. These include explicit ILP, predication, speculation, and various forms of prediction.
Prerequisites: 217 and 226.
Computers
You will be using Sparc machines:
Software
Documentation:
Source code useful for the programming assignments is
available on the Web.
set path=(. /u/cos320/ml ....)
The final exam is worth twice as much as the midterm.
The late policy is to encourage submissions that are on-time. Any project can be late for up to 3 days without penalty. Up to 7 days total may be used during the semester, so use your late days wisely. After 3 days, zero credit is given for the assignment.
There will be no extensions due to scheduling conflicts, computer downtime, or other such factors, except under truly extraordinary circumstances. Extensions will be granted only for university-sanctioned excuses such as illness, and then only with the proper documentation. You are responsible for planning ahead and managing your time so that you can complete the assignments on time. You must either finish on time or accept the consequences of doing otherwise.
Penalties are waived only for unforeseen circumstances, like illness, and then only with an appropriate written excuse.
Programming, like composition, is an individual creative process. Individuals must reach their own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write the code that solves the problem, such discussions are no longer appropriate - the program must be your own work (although you may ask teaching assistants for help in debugging). If you have a question about how to use some feature of C, UNIX, ML, etc., then you can certainly ask your friends or the teaching assistants.
Do not, under any circumstances, copy another person's program. Writing code for use by another or using another code in any form violates the University's academic regulations.
/u/cos320/bin/submit number filesnumber is the assignment number and files is the list of files for that assignment. For example,
/u/cos320/bin/submit 12 README regalloc.smlsubmits the files README, and regalloc.sml for the assignment described in chapter 12.
The submit command copies your files to the directory /u/cos320/submit/login/number and lists all the files that you have submitted for assignment number. login is your user account name. If you execute submit after the assignment deadline, your files are placed in directory number-late. You can run submit more than once, and you can submit partial lists of files.
There's also unsubmit, which allows you to `unsubmit' one or more
files. For example,
/u/cos320/bin/unsubmit 31 main.cwould remove your main.c from the submission directory.
You can omit the /u/cos320/bin/ prefix if you add /u/cos320/bin/ to your PATH variable.