This is just from last semester, and it may be slightly different from the one we eventually will use, because before they grade the homework, our graders will discuss whether or not to add or remove some of these items. Therefore you should just use this as a reference.

20 pts
 - README.txt Completed (3 pts)
   - Missing # of hours or collaborators (-1)
   - Collaborators too vague or not specific enough (-1)
   - You did not edit README file (-3)
   - Missing your name (-1)
 - STL Vector & String (5 pts)
   - did not use STL vector (-3)
   - Uses strings ineffectively: e.g. by parsing through spaces manually (-2)
   - Poor use of vectors (-2)
   - Inefficient program: did not use const/reference where copy was not needed or used a reference on immutable primitive types like int (-2)
 - Program Structure (12 pts)
   - Contains only the main function and no other functions at all. (-4)
   - Uses multiple functions, but most alignment logic is in the main function or one function. It's better to create separate functions for flush_left, flush_right and full_justify. (-3)
   - Code contains irrelevant comments like terminal commands, large amounts of commented out code, or large amounts of TODO comments (-1)
   - Almost total lack of helpful comments. (-4)
   - Too few comments. (-2)
   - Functions aren't well-commented. Each function should explain its purpose, algorithm, inputs, and outputs. (-2)
   - Excessive comments, especially those that focus on what the code is doing rather than why (e.g. "creates a string"). (-1)
   - Many comments are on same line as code. (-1)
   - Overly long lines, in excess of 100 or so characters. It's recommended to keep all lines short and put comments on their own lines. (-1)
   - Poor program structure: overly complex nested loops and if statements (-2)
   - Code is clumped together or too dense, or has excessive whitespace. (-1)
   - Poor formatting and/or spacing (-2)
   - Poor choice of variable names: non-descriptive names (e.g. 'vec', 'str', 'var'), single-letter variable names (except single loop counter), variable shadowing, etc. (-2)
   - Lacks error checking (num of args, invalid file names, invalid width limit, etc.) (-1)
   - Redundant code: unnecessary method extracting, unused variable/method, unused value/result, unreachable code, etc (-1)
   - Duplicated code: same code fragments or code fragments with only tiny differences (-1)
   - Use of global variables (-1)

Extra Credit (3 pts) (+1-3 for new shapes (by difficulty), described in the README.txt and sample output included with submission.)
   - Non-trivial attempt made (+1)
   - Great Job! (+2)
