University of Arizona, Department of Computer Science

CSc 453: Programming Project: General

Overview In the course of the semester, we will implement a compiler for a subset of C called C--. The project will consist of a series of programming assignments, each of which depends on all of the previous assignments. For this reason, it is crucial that you write your code in a way that makes it easy to debug and extend.

The project (and therefore each assignment) is expected to be your own work and no one else's.

I will do my best to give you as precise specification for each programming assignment as I can. Programs are expected to meet these specifications exactly. Questions and clarifications should be settled beforehand. Programs that do not meet the stated specifications will be penalized heavily.

Time Allocation Each programming assignment will involve a time cycle of approximately three weeks: roughly two weeks will be given to complete the programming and turn in the code, and another 5-7 days (partly spanning the grading time) will be available for correcting any bugs before the next assignment is given out. Individual assignments may depart from this somewhat, depending on their level of difficulty.
Style Some suggestions on programming style
Testing Hints on Testing and test case generation

I strongly recommend giving very careful thought to your test cases. In my experience it is very useful to have (1) a large number of small test cases, each of which tests one or a few language features; and (2) a shell script driver that runs your program on all your test cases and checks whether you got the output you expected.