Princeton University
Computer Science Department

Computer Science 320
Compiling Techniques

David Walker

Spring 2006

 

 


Home Page                                         Notes & Assignments

Course Summary

Understand the design and construction of compilers. Concepts include syntax 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 and object-oriented languages such as Java will be examined. A complete compiler for a small language will be implemented in ML.

Prerequisites: 217 and 226.

Schedule, Notes and Assignments

As the term proceeds, you will be able to find course notes, assignments and the general schedule here.


People and Places

Lectures: TT 3:00-4:20, Room: Computer Science 302

Professor: David Walker  

Undergraduate Coordinator: Donna O'Leary - 410 CS Building - 258-1746 doleary at cs.princeton.edu

Teaching Assistants: Limin Jia & Jay Ligatti


Mailing List

All students in COS 441 are required to sign up for the class mailing list.  If you have questions about assignments or other information you can send email to cos320 "atsign" lists.cs.princeton.edu.

To subscribe to the list go to https://lists.cs.princeton.edu/mailman/listinfo/cos320.


Textbooks


Software

Most of the assignments will be programmed in SML, which has often been called "a domain specific programming language for building compilers."  If you have a PC running Linux, then you should also be able to install ML there. You can grab a copy of the compiler from the official server at Bell Labs.

You can begin to use SML by following these directions:

  1. Use CIT Sparc machines (CS 101 cluster, sunlab1-sunlab4, yuma, tucson, flagstaff). If you have a PC running Linux, then you should also be able to install ML there. You can grab a copy of the compiler from the official server at Bell Labs.
  2. Edit your .cshrc or equivalent so that your path contains /u/cos320/ml.
  3. Run sml from a shell prompt and play around or start assignment #1.

 


Homework

There will be approximately one homework every week.  Homeworks should be attempted individually.  If you cannot come up with an answer after trying for a while then you may discuss the material or the problem with a friend.  If you talk about how to solve a problem with someone then acknowledge them at the top of your homework (name and which parts you worked on together).  Any programs, proofs, or written explanations should be written up by the homework author themselves.

Take-home midterm and final must be done completely independently.

20%/day will be deducted from late homeworks (without a doctor's note).


Testing & Evaluation

There will be a take-home mid-term and a take-home final exam.

Grades will be determined by weighting homeworks, tests and exams as follows:

  • Homeworks: 40%   [weights among homeworks are not necessarily distributed evenly -- the longer and more challenging homeworks will be worth correspondingly more]
  • In-class Midterm:  25%
  • Final:  35%