The marking scheme is based on a number of criteria, all of which are important aspects of any real software application. The final mark is intended to reflect how well the overall assignment meets these criteria. In general:

A number of staff will be involved in the marking process, and the final mark is based on their academic judgement. Reviewing individual marks would be unfair, and marks are not negotiable (unless of course, there is clear evidence of some procedural error).

The Common Marking Scheme

University regulations require us to use the Common marking scheme. This is a frequent source of grievance for students who are used to a different scheme: an excellent (first-class) solution to the assignment will normally be awarded a mark of around 80%. Marks higher than this are rare and can only be awarded for work which is (for example) "beyond the expected level", "demonstrates professional scholarship" or "significant personal insight".

Students with some previous programming experience, spending the recommended amount of time on the course should expect a mark in the 60-69 range. In the past, more than half of the students have received marks in this range. Students with more or less experience or effort typically receive marks in the 50-59 or 70-79 range. A very small number of students receive marks which are higher or lower than this.

Marking Criteria

The assessment is based on the following criteria:

Completion

Those with less previous experience may have difficulty completing all of the assignment tasks. It is possible to pass without attempting the more advanced tasks - and a good solution to some of the tasks is much better than a poor solution to all of them. The assignment sheet will indicate which tasks are essential.

Readability & Code Structure

Code is a language for expressing your ideas - both to the computer, and to other humans. Code which is not clear to read is not useful - so this is an essential part of the course. See the tips on code readability.

Correctness & robustness

Good code will produce "correct" results, for all meaningful input. But, it will also behave reasonably when it receives unexpected input.

Use of the Java language

Appropriate use of specific features of the Java language will make the code more readable and robust. This includes, for example: iterators, container classes, enum types, etc. But the structure of the code, including the control flow, and the choice of methods, is equally important.

Design

The design of the class model for the second assignment is perhaps the most important aspect of the course - it is not possible to pass without producing a reasonable design. This must be clearly explained and justified on the worksheet, as well as implemented in the code.

Interface

The design of the user interface for the second assignment should be intuitive and robust.

Marking Scheme

The following scheme shows broadly what is expected for the various mark ranges. There may be some trade-off between various critera, but in general, all of the specified criteria are necessary for each grade:

Pass (Diploma only): 40-49%

Good: 50-59%

In addition to the above ...

Very Good: 60-69%

In addition to the above ...

Excellent: 70-79%

In addition to the above ...

Exceptional: 80-100%

As noted above, marks in this range are rare. This requires faultless, professional-quality design and implementation, in addition to well-reasoned answers to all of the worksheet questions. A significant insight into the design problems is necessary for higher marks in this range.