A collection of tools for grading homework automatically
Project description
Otter-Autograder
An autograding system for teaching, primarily focused on Canvas LMS integration. Supports automated grading of programming assignments (via Docker), text submissions (like learning logs), quizzes, and manual exam grading with AI assistance.
Installation
pip install Otter-Autograder
Quick Start
1. Set up Canvas API credentials
Create a .env file in your working directory:
CANVAS_API_KEY=your_canvas_api_key_here
CANVAS_API_URL=https://your-institution.instructure.com
2. Create a grading configuration
Create a YAML file (e.g., assignments.yaml) defining your courses and assignments:
assignment_types:
programming:
kind: ProgrammingAssignment
grader: template-grader
settings:
base_image_name: "your-docker-image"
courses:
- name: "Your Course"
id: 12345
assignment_groups:
- type: programming
assignments:
- id: 67890
repo_path: "PA1"
3. Run the grader
grade-assignments --yaml assignments.yaml
Features
Supported Assignment Types
- Programming Assignments: Docker-based grading with template matching and test execution
- Text Submissions: AI-powered grading with rubric generation and clustering analysis
- Quizzes: Canvas quiz grading support
- Exams: Manual grading with AI-assisted name extraction and handwriting recognition
- Web-based Grading UI: Modern interface for problem-first exam grading
Key Capabilities
- Parallel execution with configurable worker threads
- Automatic score scaling to Canvas points
- Slack notifications for grading errors
- Record retention for audit trails
- Regrade support for existing submissions
- Test mode for validation before full grading runs
Usage Examples
Grade with limited submissions (testing)
grade-assignments --yaml config.yaml --limit 5
Regrade existing submissions
grade-assignments --yaml config.yaml --regrade
Test submissions without pushing grades
grade-assignments --yaml config.yaml --test
Control parallelism
grade-assignments --yaml config.yaml --max_workers 2
Configuration
See the example_files/ directory for complete configuration examples:
example-programming_assignments.yaml: Docker-based gradingjournal_assignments.yaml: Text submission gradingexample-exams.yaml: Exam grading setupexample-template.yaml: All available options
Requirements
- Python >= 3.12
- Docker (for programming assignment grading)
- Canvas API access
- Optional: OpenAI or Anthropic API keys for AI-powered features
Documentation
For detailed documentation, see the documentation directory.
License
This project is licensed under the GPL-3.0-or-later license. See the LICENSE file for details.
Contributing
Contributions are welcome! Please open an issue or pull request on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file otter_autograder-0.1.5.tar.gz.
File metadata
- Download URL: otter_autograder-0.1.5.tar.gz
- Upload date:
- Size: 878.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
017cf093f4a3fd7dde5db8803a7a425a798f53de2f717668c908f3e002c8aab5
|
|
| MD5 |
8218a11351161db5d69acb7481f7a104
|
|
| BLAKE2b-256 |
c100dcf4133ad0be7b0bd4786b6a5f6000ca14ae4a804f901d9ebc6dd3659e7a
|
File details
Details for the file otter_autograder-0.1.5-py3-none-any.whl.
File metadata
- Download URL: otter_autograder-0.1.5-py3-none-any.whl
- Upload date:
- Size: 92.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af9e9214adeb256d2b59cd13aaa7f771ac02ab08b583795d7c1c300b0fc70542
|
|
| MD5 |
ea823b154c82cbdb749a2d6faef1189f
|
|
| BLAKE2b-256 |
2aed807508927906ac33d6cc8d95ddce0c4c7da21e8460cc84c6b24a773c04f9
|