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
Concepts
  • Most appropriate variant of all language and library features chosen in all circumstances
  • All variables are declared in the most local scope possible
  • Code is properly factored and avoids redundancy and/or unnecessary computation
  • Uses main method pattern in all runnable files
  • All constants are declared correctly and used in all appropriate places
  • Follows assignment-specific guidelines placed on library and language usage
  • Language and library features used appropriately throughout program
  • All variables are declared in local scope
  • All required language features present and meet requirements
  • No obvious redundancy exists between functions
  • Constants used in all expected places
  • Follows assignment-specific guidelines placed on library and language usage
  • Library or language features use inappropriately
  • Any global variables used
  • Some required language features missing or do not meet requirements
  • Key language features not used
  • Not enough code or features present to evaluate effectively
  • Banned or inappropriate language features used
Quality
  • Docstring comments on modules (Python files), classes, and functions. Comments are well-written and contain all relevant information
  • All type annotations are correct and relevant
  • All identifiers and function names are descriptive and neither too long nor too short
  • Personal style choices are consistent and reasonable with the Code Quality guide
  • Code passes flake8 linter
  • Docstring comments on modules (Python files), classes, and functions. Comments are well-written and contain meaningful information
  • All identifiers and function names are meaningful and follow prescribed naming conventions
  • Code passes flake8 linter
  • Docstring comments missing on some modules, classes, and/or functions
  • Docstring comments copied directly from the spec
  • Some identifier or function names are not meaningful or fail to follow prescribed conventions
  • Indentation or spacing makes code difficult to read or follow
  • Code does not pass flake8
  • Code shows little or no effort follow code quality guidelines
  • Code is extremely difficult to read and understand
Testing
  • Test cases are well-written for testing behavior in all cases, including edge, corner, and error cases
  • Minimum redundancy between tests
  • Descriptive names for all test functions
  • Test program runs with no errrors and warnings
  • All required test cases are present
  • Testing artifacts (e.g., custom data files) are submitted and work with the test program
  • Uses main method pattern for calling each test function
  • Appropriate use of constants when necessary
  • Some test cases produce errors or warnings
  • Missing required test cases
  • Test functions called outside of main
  • Missing custom files accompanying test program
  • No tests exist