For a hypothetical assignment: "Implement a simple command-line utility to process a CSV file, calculate statistics (mean, median), and output results to a new file."
Rubric: CSV Data Processing Utility
| Criteria | Exemplary (4 points) | Proficient (3 points) | Developing (2 points) | Beginning (1 point) | | :------------- | :----------------------------------------------------- | :---------------------------------------------------------- | :-------------------------------------------------------- | :---------------------------------------------------------- | | Correctness | All specified functional requirements are met; handles all expected inputs, edge cases, and error conditions gracefully. Outputs are consistently accurate and formatted as specified. | Most functional requirements are met; handles typical inputs and some edge cases, but may have minor issues with complex scenarios or specific error conditions. Outputs are largely accurate. | Several functional requirements are met, but significant errors exist in handling typical inputs or producing accurate outputs. Fails to address most edge cases or error conditions. | Few functional requirements are met; code produces incorrect outputs for typical inputs or fails to run without significant intervention. Does not handle any edge cases or errors. | | Student-Work Indicators | - Program executes without errors for all test cases, including valid, invalid, and edge-case inputs. - Statistical calculations (mean, median) are consistently correct. - Output file format precisely matches specifications. | - Program executes with minor, non-blocking errors for some edge cases. - Statistical calculations are mostly correct, with minor discrepancies. - Output file format has minor deviations from specifications. | - Program crashes or produces incorrect results for typical valid inputs. - Significant errors in statistical calculations. - Output file format is inconsistent or incorrect. | - Program fails to compile or run. - Calculations are consistently incorrect or missing. - Output file is not generated or is entirely malformed. | | Code Quality | Code is exceptionally clear, concise, and well-structured. Follows established conventions consistently. Excellent use of meaningful variable names, functions, and comments. Highly maintainable and readable. | Code is generally clear, readable, and follows conventions. Good use of meaningful names and comments. Structure is logical, making it reasonably maintainable. | Code is difficult to read due to inconsistent formatting, poor naming conventions, or lack of logical structure. Comments are sparse or unhelpful. Minor refactoring would be required for maintenance. | Code is poorly organized, highly redundant, or excessively complex, making it very difficult to understand or modify. No consistent conventions, poor naming, and inadequate comments. | | Student-Work Indicators | - Code adheres to a consistent style guide (e.g., PEP 8 for Python). - Functions are small, single-purpose, and well-named. - Minimal code duplication. - Comprehensive and accurate inline comments explain complex logic. | - Code mostly adheres to style conventions. - Functions are generally well-defined, though some could be refactored. - Some minor code duplication present. - Comments are present for key sections but may lack detail. | - Inconsistent indentation or spacing. - Functions are overly long or handle multiple responsibilities. - Frequent code duplication. - Comments are missing in critical sections or are generic. | - Random indentation, inconsistent naming. - Monolithic functions or 'spaghetti code'. - Extensive copy-pasting of code. - No comments or comments that are misleading. | | Test Coverage | Comprehensive unit tests cover all critical functions and edge cases. Tests are well-organized, readable, and effectively demonstrate correctness and robustness. All tests pass successfully. | Good unit test coverage for most critical functions. Tests are generally well-written and pass, demonstrating functionality for typical cases. Some edge cases may be missed. | Limited unit tests, covering only basic functionality or a few positive cases. Tests may be poorly written, fail inconsistently, or not adequately verify correctness. | No unit tests provided, or tests are incomplete, fail consistently, or do not reflect the program's functionality. | | Student-Work Indicators | - Separate test file(s) with clear test cases for each function. - Tests for valid inputs, invalid inputs, and boundary conditions. - All tests pass consistently. - pytest coverage report shows high percentage (>90%). | - Test file(s) present with tests for main functions. - Tests cover typical use cases. - Most tests pass. - pytest coverage report shows moderate percentage (60-90%). | - Test file(s) present but sparse. - Only positive test cases; no edge cases. - Some tests fail or are poorly structured. - pytest coverage report shows low percentage (<60%). | - No test files. - Test files are empty or contain only boilerplate. - Tests are entirely incorrect or do not run. | | Documentation | Comprehensive documentation includes a clear README with installation, usage instructions, examples, and detailed explanations of program logic. All functions and modules are properly documented with docstrings. | Good documentation includes a README with clear installation and usage instructions. Key functions and modules have docstrings, adequately explaining their purpose. | Basic documentation exists, but it may be incomplete, unclear, or lack essential details (e.g., missing installation steps or usage examples). Docstrings are sparse or unhelpful. | No documentation (e.g., README.md is missing or empty). No docstrings or comments explaining program functionality. | | Student-Work Indicators | - README.md includes setup, execution, example commands, and expected output. - All public functions have clear docstrings explaining parameters, return values, and purpose. - Code comments explain complex algorithms. | - README.md covers setup and basic usage. - Most public functions have docstrings. - Some complex sections have inline comments. | - README.md is present but lacks details (e.g., no installation instructions). - Only a few docstrings are present, or they are very brief. - No comments explaining logic. | - No README.md file. - No docstrings or inline comments. - Project structure is not self-explanatory. |
*Note: Criteria weighting may be adjusted based on the specific focus of the assignment. For this rubric, assume equal weighting initially.*