javadoc comments for each methods (@return and @param, as needed.) You can also check this a bit by looking at their documentation: set the "interface/implementation view" button in BlueJ's upper-right to be "interface".
getBalance/setBalance correctly implemented.
a method addToBalance (make sure it adds to the balance,
and doesn't just set the balance).
methods work(..), tip(..) and spend(..) should all call addToBalance.
NOT actually required: test cases; the asString and makeClone bits.
They don't need to use exactly the method names I do,
but they should have functions which do exactly what was asked
(no less, no more). The names should be self-documenting.
Guidelines on how to check:
√++: Rare. If things look immaculate, or mabye have one minor
indentation/misspelling/whatever imperfection.
A function which runs test cases.
Has implement the makeClone and asString directly.
√+: Only a few minor problems.
Good javadoc, plausible variable names, code all works
(hopefully w/ test cases to show that).
I expect about half to get this.
√: The fundamentals good, but could use improvement.
Could include any of the following:
Variable/method names which aren't descriptive,
Magic numbers.
missing some (not all) of their javadoc,
some bad/inconsistent indentation.
Maybe a third of the students here?
√-:
Major mess. Any of the following:
not having other methods calling addToBalance;
Compiles but doesn't work (e.g. if addToBalance just sets the
balance and doesn't actually add to it. The real problem with
this is it indicates they didn't actually do significant testing.)
Indentation which is distracting, or variable names which
are downright misleading.
Prints to screen instead-of/in-addition-to returning values,
or reads inputs from keyboard instead of passing into the functions.
(I don't mind if they have a driver program which prompts for
values interactively and then calls the methods above,
but the above methods themselves have nothing to do with I/O.)
√--:
Not compiling, serious problems. They should see me.