Grading

All examination parts will use the full grade scale applicable, i.e. U/G/VG, U/3/4/5 or F/Fx/E/D/C/B/A

Final grade will be calculated as follows: The letter grade will be translated to numbers (A=4, B=3, C=2, D=1, E=0).

Finally, the number will be translated back to a letter grade (4=A, 3=B, 2=C, 1=D, 0=E).

Grading of the Assignments

NOTE: Grading programming is more an art than a science. In the general case, it is extremely difficult to impossible to say that one program is better than the other. For the obvious reasons, it is impossible to cover the grading criteria completely. But by now, you should have achieved a gut feeling about these things anyway, and it is only fair that that is counted in the grade. In any case, the points below are not totally black/white.

To get an A, your program must:

For every point above that is not satisfied, the program takes one step down the grade ladder from A down to Fx. Additionally:

* If your program completely fails points 1 or 4, you will be given grade F. This is the only way you can get an F.

* If your program completely fails points 2 or 3, you will be given grade Fx. This means you will be given a chance of fixing the problem and thereby get an E.

* Unless you fulfill point 1, you cannot score higher than a C.

NOTE: For the alternate programming assignment, things are a lot fussier, which means you will be cut more slack than if you did the simpler assignments. We will usually allow one iteration without affecting the grade.

NOTE 2: A student is generally cut reasonable slack if any reasonable crashes, problems, cut corners, etc. are properly documented (e.g., not buried in comments deep in the code).

NOTE 3: We are not psychic. Tell us how to run your program and how it takes its input.

CHEATING: As usual, cheating, like for example copying someone else's code (including a friend's code, any open source code and code copied from Wikipedia) without due notice, means failing (=grade F) and being reported.

NO SHOW JONES: A student that fails to, before the deadline, hand in anything that runs without crashes and/or compiles gets an F.

Clarifications

An example of not completely satisfying point 1 that is frequent is missing the assumption that the stream of numbers is unlimited in size (it is a stream!) and starting with trying to read them all into memory. Another classic here is not testing Assignment 2 against my unittest suite before handing in.

An example of unreasonable time/space complexity (point 2) from previous years on this course is trying to pass the reasonable memory requirement of assignment 3 by dumping huge memory structures to disc between numbers. Please test your programs against the BIG number sets before handing in.

An example of unreadable code (point 3) is code that is mostly driven by evalling strings so no syntax highlighting shows and bughunting is a pain, has a completely messed up indentation, or that contains unreachable code.

An example of not satisfying point 4 is equivalent to parsing the indata files of the second assignment using File.do and substring matches, doing dynamic type checking (unless required by the assignment) all over the place, implementing select_first(a) in assignment 2 as (select_all(a))[0], etc.

Grading of the exam

(when the exam is a take-home-exam)

The grade Fx will be given to a student that with a few exceptions has reached the grade E and has made no serious errors in terms of facts, typos or other language errors.

The grade E will be given to a student that has shown in his or her answers to the take-home-exam that all relevant course goals have been met and has answered all parts of the exam questions.

The grade D will be given to a student that has reached the grade E and who has also provided correct motivations to the answers and references to relevant sources in a correct way.

The grade C will be given to a student that has reached the grade D and who has shown the ability to see relevant connections and contexts relating the different course goals covered by the answers and who can also make non-trivial comparisons (if applicable).

The grade B will be given to a student that has reached the grade C and also independently, using his or her own thoughts and opinions (motivated and well underbuilt) can criticise and value facts in a relevant way.

The grade A will be given to a student that has reached the grade B and also makes nuanced analyses in his or her answers, e.g. draws parallells or makes strong connections to theory.

In addition to this list, the grad C and above will never be given to a student that has shown great sloppiness, e.g. by making serious errors when presenting facts, large language errors like many broken sentences or misspellings. The grade A will never be given to an exam containing any obvious errors presenting facts or obvious bad language.

But I should be graded U/G/VG

That's sad! This is how we roll:

		      * A or B = VG;
		      * C or D = G;
		      * E or Fx = "Rest" (you get to try again); and
		      * F = U. 
		      

But I should be graded U/D/G/3/4/5

Sigh. This is how we roll:

		      * A = 5;
		      * B = 4;
		      * C or D = 3;
		      * E = G;
		      * Fx = D; and
		      * F = U. 
		    

But I should be graded U/G

That is crazy. We are not happy with the inflation of grading systems in practice at the moment. Anyway, this is how we roll:

		      * A, B, C, D or E= G;
		      * Fx = "Rest" (you get to try again); and
		      * F = U. 
		      
		      

Addition

An elegant solution is always rewarded.

 

 
 
 
 
 
 
'