Zucchini is an automatic grader tool for use in grading programming assignments.


Keywords
zucchini
License
Apache-2.0
Install
pip install zucchini==2.2.1

Documentation

Zucchini

https://travis-ci.com/zucchini/zucchini.svg?branch=master Documentation Status Updates

Zucchini is an automatic grader tool for use in grading programming assignments.

Installation

$ pip install --user zucchini
$ zucc --help

Getting Started with Development

After cloning this repo and installing virtualenv, run

$ virtualenv -p python3 venv
$ . venv/bin/activate
$ pip install -r requirements.txt
$ pip install -r requirements_dev.txt
$ zucc --help

Features

  • Unified grading infrastructure: eliminates maintenance load of ad-hoc per-assignment graders
  • Separates test results from computed grades: graders provide test results which are stored on disk, and then zucchini calculates grade based on the weight of each test. That is, graders do not perform grade calculation; they only gather information about students' work
  • Simple configuration: update one YAML file and store your graders in git repositories for all your TAs
  • Relative weighting: no more twiddling with weights to get them to add up to 100
  • Import submissions from Gradescope, Canvas Assignments, or Canvas Quizzes
  • No more copy-and-pasting grades and commments: automated upload of Canvas grades and gradelogs
  • Flatten (extract) archived submissions
  • Gradescope integration: generate a Gradescope autograder tarball for an assignment with one command

Credits

  • Austin Adams (@ausbin) for creating lc3grade, which eventually became zucchini
  • Cem Gokmen (@skyman) for suggesting converting lc3grade into a generalized autograder for more than just C and LC-3 homeworks, and creating the initial structure of zucchini
  • Patrick Tam (@pjztam) for implementing a bunch of graders, gradelogs, and gradelog upload
  • Kexin Zhang (@kexin-zhang) for exploring Canvas bulk submission downloads and for creating the demo downloader, which changed our lives
  • Travis Adams (@travis-adams) for nothing