Take-home assessments will be graded on four dimensions:

Behavior
Does the input and output functionality of the submission conform to the specification?
Abstraction and Design
Are data structures, methods, and classes chosen, designed, and implemented according to best practices?
Use of Concepts
Are all language features and course concepts used appropriately, effectively, and efficiently?
Documentation and Readability
Is the code well-written and well-documented, and does it conform to all code quality and other related guidelines?

Work will be assigned a grade on each dimension using the ESNU scale, resulting in four ESNU grades per assessment. The table below summarizes the expectations for each grade in each dimension.

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
  • Exhibits incorrect behavior in some common cases
  • Lacks some required functionality
  • 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