APPROXIMATE GRADE BREAKDOWN --------------------------- Program correctness, compilation -- 40% of total grade Architecture/design, style, commenting, documentation -- 30% Writeup/README -- 30% The reason why "so few" points are allocated towards program correctness and error-free compilation is because students who have gotten past 143 are smart enough to know how to get their code to compile and run against the general input (although testing "boundary conditions" is a skill which students should aim for), so program correctness and error-free compilation is neither a fair nor discriminating measurement of project quality. The two biggest discriminating factors among 326 students are program design (such as style and architecture) and analysis (the README/writeup), which is why these factors are weighed little heavily. Also, 326 is a course about data structures and the tradeoffs made during algorithm/data structure design, so putting additional weight program design, and questions about program analysis and weighing tradeoffs is more in keeping with the course goals. Putting weight on the design and writeup aspects for projects is also useful because it doesn't penalize students who "have the right idea" but couldn't get their code to compile because of a last-minute code change. POINT ALLOCATION ---------------- For each of the above categories, we have the following point allocation: 6 pts -- "Above and Beyond" (this category is for the one or two "superstars" in every class. This category is used so rarely that we can pretty much treat the grading scale as a 5-pt scale) 5 pts -- "Excellent": no errors, hiccups, or conceptual misunderstandings whatsoever. 4 pts -- "Very good": one (or two) minor error(s) or misunderstanding(s). Most grades should fall in this category. 3 pts -- "Good": three or four minor errors or misunderstandings, or perhaps one major misunderstanding. 2 pts -- "Fair": two or three major misunderstandings 1 pt -- "Poor": major misunderstanding of underlying principles, or complete misunderstanding but significant effort. 0 pts -- "Very Poor": Complete misunderstanding of underlying principles, and little to no effort.