ECS 110  -- Fall 1995
Prof. Phillip Rogaway


               -------------------------------------
               Guidelines On Grading of Assignments
               -------------------------------------

The grader is your target audience.  
Imagine your solution is the first one he's looking at. 
Assume that the grader has  read the assignment statement but that it's late 
at night and he wants to sleep.  Make your solution 
so clear and elegant that the grader will know at a glance that your
solution is an exemplary one!



Design (30 points)
=================

D1 - Your solution is well-abstracted.
D2 - Your design reflects knowledge of concepts taught in this course. 
D3 - There is a 1-2 page description of the ideas and important
     decisions underlying your design.
D4 - This writeup describes the classes you choose, the operations they 
     support, their implementation, alternatives you considered,
     and why you made the choices you did.
D5 - You made good engineering decisions for your solution.  
D6 - It is obvious you thought a good deal about HOW to solve the problem
     before you wrote your code.
D7 - You credit any people with whom you collaborated in the high-level
     design.


Correctness, testing (40 points)
================================

C1 - Your executions correctly answer the questions asked on the assignment 
     which the machine was supposed to tell you the answer to.
C2 - Your writeup correctly answers all further questions on the assignment.
C3 - Your writeup draws any conclusions which ought to be drawn.
C4 - Your executions include adequate test runs to convince the reader that 
     the program (probably) performs all tasks correctly.
C5 - Yet you don't have unnecessary runs; don't turn in in a mountain of output!
C6 - You have clearly identified any known bugs or restrictions.
C7 - You handle exceptional cases; you program won't crash.


Clarity, documentation, aesthetics (30 points)
==============================================

  How your code looks to the programmer: 
  --------------------------------------

A1 - A header describes each file and includes the file's name, purpose, 
     author, date, and credits.
A2 - Each major class is (succinctly) described.
A3 - Each important function is (succinctly) described, including what it
     returns and any side effects.
A4 - You use pictures where they are helpful.
A5 - Comments within the code are used where (and only where) they are helpful.
A6 - Variable names and class names are carefully chosen.
A7 - You have (and stick to) conventions for variable naming.
A8 - Code is nicely indented -- it looks pretty.
A9 - You avoid non-standard language features.
A10 - You have chosen a good interface for each function and class.  Side-effects 
      are used only when well justified.
A11 - In the small, your code is terse but not obscure.
A12 - You make appropriate use of C++ classes
A13 - You employ data encapsulation / information hiding
A14 - You overload operators (e.g., ostream& operator<< ), as appropriate.
A15 - You use typedef, const, enum, etc., as appropriate.

  
  How your program looks to the end-user:
  --------------------------------------

A20 - You have paid attention to your user interface: your program is
      easy to use.
A21 - You display your results clearly and understandably:
      you display neither too much nor too little output during a run.


  How your assignment looks to the reader: 
  ----------------------------------------

A40 - Your writeup is written in clear, concise English.
A41 - Your writing is legible.
A42 - You use pictures or tables where they are helpful.
A43 - You highlight, mark in color, etc, your important class names, 
A44 - at the point where they are declared/defined. 
A45 - You highlight, mark in color, etc.,  your "answers".
A46 - Your solution is neatly stapled together in order of:
      (1) writeup; (2) executions; (3) code
A47 - Your name appears conspicuously on the first page of your
      solution.




Extra Credit (5-10 points)
--------------------------

X1 - Stuff marked "extra credit") can earn you 5-10 points.  These
     points will only be given if you've done a good job on the
     rest of the assignment (typically indicated by earning at least 
     90 points).

