CIT 594 Assignment 5: Comments on grading
Spring 2004, David Matuszek

Assignment 5, the Interpreter, combines all the parts we have done so far. It will be, for the first time, a "complete" and "useful" program. Grading will be somewhat different. We will look at how your program runs. Although we will look at your code and your comments, the most important thing will be to have a clean, working program.

You should turn in all your previously-defined unit tests. They should be up to date--your code should pass all the tests. You should have an "AllTests" class to run them.

It is not required to write unit tests for the Interpreter class.

In the assignment I mentioned a number of Buttons you should have. It is not required that you have these exact buttons with these exact names. It is required that you have all the requested functionality. For example, you might have a Pause button that changes to a Resume button when clicked (instead of using the Start button). You might have Load and Save menu items, rather than buttons.)

It is required that, whatever you do, your GUI should be easy to figure out. Very basic user testing consists of asking a friend to try out your program, and watching what they do (without helping them any more than absolutely necessary). Then fix the things they had trouble with.

In my starter code I have a button named Interpret. It should have been named Start.

It is OK for your turtle to go outside the bounds of the DrawingCanvas. Java's awt handles this perfectly well. Please don't try to check for this.

I've specified in the assignment what each of the Logo commands should do, and how they should work. It is required that you implement these commands to do exactly what I said they should do (unless and until someone presents a really compelling reason that this is impossible or seriously undesirable). If I haven't made the semantics clear, ask about them.

Arguments to the right and left commands are in degrees. The argument to forward is in pixels.

I did not define what should happen if you call a procedure with the wrong number of parameters. Therefore, this is undefined, and you can do whatever seems most appropriate. My program currently produces an error message in this situation.

Up until now we have been strict about what is public and what is not public. This time we will be less strict, but you should continue to be careful about visibility (and fix your old classes). If your class is useful for a wide range of projects (such as your BinaryTree class), it makes more sense to have public methods; if your class is very specific for this one program, you probably should use default (package) visibility for methods accessed by other classes.

I will provide one or more Logo test programs for you to try out. As always, these will be samples, and you should not assume your program is perfect if it runs a few sample programs correctly.

Things you will be graded on:

Turn in a zip archive of all .java files needed to make your program work (not including junit.jar or anything supplied by Sun). Include one or more Logo test programs you have written. If you had to use some of my posted code for previous assignments, make sure the correct @author tags are in it. You can include a readme.txt file if you like. Name your file according to the naming conventions requested by my TA.

The program is due Tuesday, March 2, before midnight (this is not a change). Due to the upcoming Spring Break, late points will be assessed as follows:

Wednesday, March 3 -- 5 points
Thursday, March 4 -- 10 points
Friday, March 5 through Monday, March 15 -- 15 points
Tuesday, March 16 -- 20 points
Wednesday, March 17 -- 25 points
Thursday, March 18 -- 30 points
Friday, March 19 -- 35 points
After March 19 -- programs no longer accepted.