This document provides information and guidelines regarding the preparation, submission, marking and return of programming submissions, both for the students who must prepare and submit them, and for any marker who must evaluate them. Everyone involved with the course is expected to be familiar with the contents of this document.

Submission Guidelines (directed at students, but also for markers)

Each submission involving programming will be marked for "style" as well as "substance":

style
How good does it "look and feel"? In other words: Would the program be readable and understandable when another programmer looked at the source code, and would a user regard the program as having a pleasant "user interface" and being generally "user-friendly" when it runs?
substance
How well does it work? In other words: Does it give the required, correct results in the proper form? Of course, the real "substance" question for any program is this: Does the program satisfy its original specifications and work correctly for all valid input values, including the supplied data (if any), and does it perform any required error handling properly?

Student responsibilities for preparing MINT-condition submissions
Every student must recognize that it is his or her responsibility to prepare each programming submission according to the problem specifications, the specific instructions for that submission, and our general guidelines, and to submit it on time in the manner specified. Submissions to be marked will normally be made via the web, but this may vary from time to time. MINT is an easily-remembered acronym to help you remember what must be true about any submission before you submit it. You must make sure that each submission is in MINT condition, by which we mean:

The need to follow instructions carefully when performing any kind of programming activity cannot be overemphasized. There are general rules to follow for all submissions, and sometimes particular rules apply only to the current submission. These current-submission rules, if present, may either override, or simply augment the general rules (another example of "local taking precedence over global", if you like). Local rules for a given submission (if any) will appear in the specifications for that submission.

Study very carefully the following general guidelines for program development. Note in particular the need to properly identify both program source code and program executables.

Marking Guidelines (directed at markers, but also for students)

Markers, as well as students, should keep in mind that any submitted program must be complete, correct and understandable, if full marks are to be awarded. In other words, not only "substance" but also "style" is important in the construction of a computer program. Another thing to keep in mind is that there are always two major aspects of a computer program to consider when evaluating that program: first, the source code; and second, the output from the executable code when it runs.

From time to time students may also be required to submit additional material relevant to a submitted program, design documentation of some kind, or a help file. For more complex programs than we will be writing, a User Guide and additional "external" documentation would be necessary, and would have their own requirements.

The question of just how a submitted program should be evaluated is always a thorny one. For full credit the student's solution must, of course, conform in all details to the particular specifications of the given submission as well as the general guidelines contained herein. To make a full assessment of the submission the marker may need to consider, and will certainly find helpful, the student's own assessment of that submission, so students must not forget to include their assessments in their submissions. Your self-assessment of your submission should appear in a brief comment after the blank line following the required comments at the beginning of your file. It may simply say that you consider your submission to be complete and working as required, or outline briefly whatever problems you were unable to resolve.

When a marker begins to evaluate a student's submission, he or she expects to see something that has been produced in accordance with the general guidelines set out herein, as well as the specifications set out in the description of the given submission. It should work correctly and have a good "user interface" when it runs. And the source code should be understandable, i.e., the marker should be able to see, without difficulty, by looking at the source code, that the program does work correctly, as well as how and why it works correctly and does what it does.

If this is the case, the student can expect, and the marker should allot, full marks. If this is not the case, the student can expect to have marks deducted, and markers are obliged to deduct marks.

The difficult question is always this one: How many marks should be deducted for which omissions or which transgressions? One problem is that questions of style do not have right and wrong answers. But that is why we have gone to some trouble to make our style expectations explicit, and students should realize that if they continue to ignore these guidelines, they do so at their own peril. And it is worth pointing out as well that these are not arbitrary guidelines. For the most part, they are the condensed wisdom of several decades of programming experience in North America and elsewhere, and grew out of the hard lesson that when programmers program without such guidelines, sooner or later chaos reigns.

Consistency is a very important criterion in marking, but one that is almost impossible to achieve in the full sense of the word. All we can reasonably expect is that markers will do their best.

Finally, we point out that if a marker observes a particular student continuing to violate a particular guideline after being warned, that marker is free to increase the amount of any previous point deduction for that particular infraction.

Evaluation of program readability (i.e., program source code)
When evaluating the source code of a program, items to be considered will include, but need not be limited to, the following:

Identification
Has the program been properly identified, according to the standard method of identification established for the course?
Formatting (spacing, indentation, alignment, grouping)
Is the horizontal and vertical spacing adequate for good readability?
- By horizontal spacing we mean blank spaces, since TAB characters should never appear in source code.
- By vertical spacing we mean blank lines and/or page breaks.
Are indentation and alignment used properly and consistently?
Are logically distinct sections of code separated appropriately?
Self-documentation
Are there enough, too many, too few, inappropriate, or no comments?
Do all functions have appropriate pre-conditions and post-conditions?
Does each function parameter have an in, an out, or an inout comment?
Are the identifiers meaningful?
Does every void function name start with a verb?
Have named constants been used where appropriate?
Is capitalization ("camel-style", in general) used properly and consistently?
Program structure and overall organization
Is the program properly structured?
Is the logical flow of the program clear from its structure?
Is each class properly structured?

Evaluation of user interface and executable output
When evaluating the output when a program is executed, items to be considered will include, but need not be limited to, the following:

Identification
Does the program identify both itself and the programmer properly in the output, if and as required?
Self-description
Does the program describe itself properly in the output, if and as required?
On-line help
Does the program provide on-line help, if and as required?
Prompting for input
Does the program prompt the user properly for all required input?
Does the program make all options clear to the user?
Echoing of input in the output
Does the program echo, in the output, any input that would enable the user to verify that the program had received the correct input values, if and as required?
Organization of output
Are items in the output grouped logically and separated appropriately?
Is the order of items in the output appropriate/correct?
Formatting of output
Is the horizontal and vertical spacing adequate for good readability?
Are indentation and alignment used properly and consistently?
Correctness of output
Does the program work correctly and produce the correct output?
Has the supplied data (if any) been used?

General evaluation considerations

Is the submission simply unacceptable, or subject to particular penalties, for any reason?

Marker responsibilities
Each marker will regard it as his or her responsibility:

Due Times and Late Submissions

Due times for submissions
All submissions are due no later than 23:59:59 on the due date indicated on the submission description page.

Late submissions
Late submissions will not be accepted. Do not send e-mail or other messages requesting extensions, as they will simply be ignored. And under no circumstances are submissions (late or otherwise) to be e-mailed to your instructor or your marker. We have submission procedures that do not involve e-email.

Return of Marked Papers

Each of your marked submissions, or an evaluation sheet corresponding to your submission, will be returned to you as soon as possible in a class or recitation following the return of the evaluations to the instructor.

Posting of Marks

Marks will be recorded on-line and made available from a link on the course web site. Only you (and the instructor and marker(s), of course) will have access to your individual marks, though mark summaries of one kind or another for the class as a whole may (and likely will) also be available in the same location.

If you disagree with a mark ...

If you disagree with the mark you have received on a submission, send an e-mail message to the marker, quoting whatever relevant comments the marker has returned to you. The marker will reconsider the submission in the light of your request, and get back to you when a decision has been made.