Link

Rubric

Assessment evaluation rubric.

Assessments are evaluated on four dimensions.

Behavior

Does the input and output functionality of the submission conform to the specification?

Exemplary
Exhibits correct behavior in all cases, including edge, corner, and error cases
Satisfactory
Exhibits correct behavior in all common cases
Throws expected exceptions in all cases
Not yet
Exhibits incorrect behavior in some common cases
Lacks some required functionality
Does not throw expected exceptions in some cases
Unassessable
Behavior does not resemble specification
Lacks significant portions of required functionality

Abstraction and Design

Are data structures, methods, and classes chosen, designed, and implemented according to best practices?

Exemplary
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
Satisfactory
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
Not yet
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
Unassessable
Not enough code present to evaluate effectively
Required methods or constructors missing
No fields present

Use of Concepts

Are all language features and course concepts used appropriately, effectively, and efficiently?

Exemplary
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
Satisfactory
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
Not yet
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
Unassessable
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

Is the code well-written and well-documented, and does it conform to all code quality and other related guidelines?

Exemplary
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
Satisfactory
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
Not yet
Header comments missing on some classes and/or methods
Entire code blocks are indented or spaced incorrectly
Unassessable
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