| 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.