E
must meet all criteria
S
must meet all criteria
N
 
U
 
Behavior
  • Exhibits correct behavior in all cases, including edge, corner, and error cases
  • Exhibits correct behavior in all common cases
  • Throws expected exceptions in all cases
  • Exhibits incorrect behavior in some common cases
  • Lacks some required functionality
  • Does not throw expected exceptions in some cases
  • Behavior does not resemble specification
  • Lacks significant portions of required functionality
Abstraction and Design
  • Classes contain no redundant constructors
  • All methods are clear and concise and include no extraneous parameters
  • All methods include a proper access modifier
  • Classes contain only the most essential fields and all fields are initialized appropriately
  • All constants are declared correctly and used in all appropriate places
  • Most appropriate type, including interface types, used in all expected places
  • No redundancy exists between methods
  • All methods are clear and concise
  • Classes contain no extraneous constructors
  • Classes contain reasonable fields
  • All constants are declared correctly
  • Reasonable types used in all places
  • All public methods are specified public
  • Redundancy exists between methods
  • Some methods are overly long or complex
  • Classes contain redundant or extraneous constructors or public methods
  • Classes contain extraneous or unnecessary fields
  • Constants are declared incorrectly
  • Unreasonable or inappropriate types used in some places
  • Not enough code present to evaluate effectively
  • Required methods or constructors missing
  • No fields present
Use of Concepts
  • Most appropriate variant of all control flow constructs used and properly factored and simplified
  • Recursive methods contain no extraneous cases or calls
  • No expensive operations are unnecessarily recomputed
  • Most appropriate data structure used in all cases
  • All assignment-specific requirements met
  • Appropriate control flow constructs used
  • Recursive methods contain extraneous cases or calls
  • Does not create any unnecessary objects
  • Appropriate data structure used in all cases
  • Key assignment-specific requirements met
  • Inappropriate control flow constructs used
  • Recursive methods contain redundant cases or calls
  • Creates unnecessary objects
  • Inappropriate data structure used in some cases
  • Some assignment-specific requirements not met
  • Not enough code present to evaluate effectively
  • Required language features or concepts not used
  • Banned or inappropriate language features or concepts used
Documentation and Readability
  • Header comments on all classes and methods are well-written and contain all relevant information
  • All identifiers are meaningful and follow prescribed naming conventions
  • All code is indented and spaced consistently and cleanly
  • No lines longer than 100 characters
  • Code has no "magic numbers"
  • Exceptions thrown as soon as possible
  • Personal style choices are consistent and reasonable
  • Header comments present on all classes and methods
  • Some identifier names are not meaningful or fail to follow prescribed conventions
  • No complete blocks are indented or spaced incorrectly
  • Some lines longer than 100 characters
  • Header comments missing on some classes and/or methods
  • Entire code blocks are indented or spaced incorrectly
  • Not enough code present to evaluate effectively
  • Code shows little or no effort follow code quality guidelines
  • Code is extremely difficult to read and understand