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 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
- 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
|