Darren Provine at Rowan University


(Click here for text version.)

Program Evaluation Criteria

Programs will be evaluated based on the following criteria:

Correctness:
The program should give correct output for all reasonable input. Make sure that you test for `boundary' cases as well as ordinary cases.
User-friendliness:
The program should handle errors as gracefully as possible, and it should display clear instructions and prompts to assist the user in entering appropriate input.
Documentation:
Include at least the following:
  • a heading with your name and the purpose of the program.
  • for each function, a statement of what that function does.
  • any extra commentary that is needed to explain unclear parts of the program.
If your solution is complicated or unusual, feel free to include an extra sheet of paper with words or diagrams that explain what your algorithm is.
Readability:
In addition to comments, the program should use mnemonic variable names, indentation, and so on, to make it easy for a human reader to tell what the program is doing. (A readable program puts the grader in a good mood!)
Elegance and efficiency of the solution:
The program should solve the problem in a logical sequence of steps, without wasting unreasonable amounts of storage space or computing time.

A perfect score can only be earned by a perfect program, and very few programs qualify!

The course catalogue describes a grade of `A' as `excellent'; an `A' can only be earned by excellent work.

Many otherwise-good programs lose points because the students did not test adequately. Understand that I am going to test the boundary cases and invalid input cases. Examples of what I will test may include giving a mathematical program negative numbers (are you taking square roots?) or zeros (are you dividing?); giving a trigonometric program right or obtuse angles; giving a text-based program a name consisting of all spaces, or a name 43,000 characters long, or a name zero characters long. Your program will have to behave correctly in any of these cases. If it's possible to do something useful, it should be done; if the program can't continue at all, then it should warn the user about invalid input and give some kind of instructions about what to do next. Programs should not merely crash on invalid data.

Some of these considerations will be waived in certain cases, most often for lower-level classes (such as Introduction to Programming) or where we are using a language which is weak at some kinds of tests. But unless specifically stated otherwise, assume that your programs have to be robust and will lose points if they are not.

Spelling, punctuation, and grammar all count!


(US flag) This page's URI: http://elvis.rowan.edu/~kilroy/class/general/?criteria
Last modified: Monday, 9 September 2002, 4:31:35pm