This is just from one of the previous semesters, made by the instructor who was teaching this course as well as the graders who did the grading work. We do not guarantee the rubric we use this semester will be 100% equivalent to this one, and you should just use this as a reference.

25 pts
 - README.txt Completed (2 pts)
   - Missing student name (-1)
   - Missing # of hours (-1)
   - Missing collaborators/references (-1)
   - Collaborators too vague or not specific enough (0)
 - New Classes (5 pts)
   - Incomplete (-5)
   - Does not declare at least one new class (-5)
   - Declares some "struct"s (-2)
   - Has one or more public variables inside a class (-2)
   - Poor file organization: Does not split at least one class in to a .h and .cpp (-2)
   - Did not include header guard (-2)
   - Poor file organization: The .h and .cpp files should approximately match the class name (ignoring capitalization, underscores, etc) (-1)
   - Poor file organization: Puts more than one class in a file (okay for very small helper classes, maybe) (-1)
   - Poor file organization: Main should probably not be in a class implementation file (-1)
   - Uses friend functions to access private fields (-1)
   - No constructor (default or otherwise) (0)
 - 3rd STATISTIC DESCRIPTION (3 pts) (The README.txt file contains a clear and concise description of an interesting statistic different from the first two tables of data.)
   - Description is missing (-3)
   - Description present, indicates no custom statistic. (-2.5)
   - Description is poorly written, confusing, and/or has many typos (-2)
   - Description is too vague (i.e., does not include explanation of the sorting process). (-2)
   - Statistic description is too simple (-1)
   - No sample output for statistic (stipulated last sentence of para. 3 in section on handout) (0)
   - Statistic seems useless, and no explanation or motivation is given (-3)
 - 3rd STATISTIC IMPLEMENTATION (8 pts) (The implementation of the statistic is complete and the output looks correct.  The statistic output is well-formatted and easy to read.)
   - Not implemented (-8)
   - Autograding output of 3rd statistic is missing or very broken (-4)
   - Autograding output is largely okay, but buggy or not what is described as intented functionality (-3)
   - Output is poorly formatted or difficult to understand (-2)
   - The custom statistic function is too simple (-3)
 - OVERALL PROGRAM STRUCTURE AND CODING STYLE (7 pts)
   - Incomplete (-7)
   - All code in a single function, main (-7)
   - Uses data structures not yet covered in class (maps, sets, etc) (-5)
   - Total or near-total lack of helpful comments (-3)
   - Includes repetitive codes (-3)
   - Too much code in main. Must split sub tasks into functions. (-3)
   - Functions too long or with heavy code nesting (-2)
   - Const and ref are not used appropriately. Objects, designated to be modified, should be passed as ref. While objects, designated to not be modified, should be passed as const ref or just const depending whether if they are rvalues or lvalues. (-1)
   - Poor indentation/spacing (-1)
   - Long lines exceeding 80-90 characters (-1)
   - Helpful comments are sparse (has some, but could use more) (-1)
   - Code is overly commented, impacting readability (-1)
   - Undescriptive or confusing variable/function names (-1)
   - Lots of commented out code left in the program (-1)
   - Excessive or not enough whitespace (-1)
   - "using namespace std" is bad practice. (0)

Extra Credit (+3 pts) (Awarded for an interesting 3rd statistic that requires clever or more extensive implementation.)
   - The custom statistic is complex and very creative. (3)
   - The custom statistic is very creative. (2)
   - The custom statistic is creative. (1)

