Hand marking scheme for Assignment 2 ------------------------------------- There are 6 sections, each out of 2 marks. Generally, 2 indicates that the section is fine, 1 indicates a few problems but overall pretty good, and 0 indicates it's terrible and/or worthless. Note that hand marking doesn't assess whether the code works or not, rather, how "good" the code is. "Good" here means clarity, readability, extensibility, maintainability, etc. The machine marking assesses how correct the code is. The mark for each section is independant of the actual programming language(s) used. READABILITY This is things such as indenting, whitespace, bracketing, identifiers, comments, etc. 2/2: Code is all easily readable at a glance. 1/2: ... 0/2: Code is hard to read at a glance. DESIGN To get 2/2, the code must exhibit the following properties. Code which meets only some of them, or not all of them throughout all of the code, gets 1/2 or 0/2 depending on the degree to which the properties are not met. * Good separation of atomic tasks into functions and/or programs * Information is not passed between these functions/programs is not done unecessarily. CODE REPETITION To get 2/2, the code must exhibit the following properties. Code which meets only some of them, or not all of them throughout all of the code, gets 1/2 or 0/2 depending on the degree to which the properties are not met. * Code is never unecessarily repeated. COMPLEXITY To get 2/2, the code must exhibit the following properties. Code which meets only some of them, or not all of them throughout all of the code, gets 1/2 or 0/2 depending on the degree to which the properties are not met. * Code is as straightforward and elegant as possible. A poor choice of language for a particular task can increase the complexity of the code (since some tasks are easier to do in some languages than other), but this is not necessarily the case, as this section is relative to the language used. That is, it is easy to get marks here when the language used is appropriate to the task, but it is still possible to get 2/2 if, that's not the case. The code may be more volumous in that particular language, but as long as tasks are done in normal ways and aren't unnecessarily complicated, then it's okay. IDIOMS To get 2/2, the code must exhibit the following properties. Code which meets only some of them, or not all of them throughout all of the code, gets 1/2 or 0/2 depending on the degree to which the properties are not met. * Code follows idiomatic style and use for the language(s) used. FILE FORMAT 2/2: File format is good and prevents processing as much as possible. 1/2: File format is okay but causes extra or duplicate processing. For example, the format is line-based, but stores the date in a hard-to-read format causing it to have to be parsed all over again when the file is read in. 0/2: File format is bad, does not make sense, is not appropriate or otherwise makes life hard.