Skip to main content

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 grading
  • journal_assignments.yaml: Text submission grading
  • example-exams.yaml: Exam grading setup
  • example-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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

otter_autograder-0.1.5.tar.gz (878.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

otter_autograder-0.1.5-py3-none-any.whl (92.2 kB view details)

Uploaded Python 3

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

Hashes for otter_autograder-0.1.5.tar.gz
Algorithm Hash digest
SHA256 017cf093f4a3fd7dde5db8803a7a425a798f53de2f717668c908f3e002c8aab5
MD5 8218a11351161db5d69acb7481f7a104
BLAKE2b-256 c100dcf4133ad0be7b0bd4786b6a5f6000ca14ae4a804f901d9ebc6dd3659e7a

See more details on using hashes here.

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

Hashes for otter_autograder-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 af9e9214adeb256d2b59cd13aaa7f771ac02ab08b583795d7c1c300b0fc70542
MD5 ea823b154c82cbdb749a2d6faef1189f
BLAKE2b-256 2aed807508927906ac33d6cc8d95ddce0c4c7da21e8460cc84c6b24a773c04f9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page