Semi-automated grading of programming assignments
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
external
gradefast
images
shells
utilities
.gitignore
.gitmodules
LICENSE
README.md
STYLE.md
TODO.txt
package.json
run_gradefast.py
webpack.config.js

README.md

GradeFast

Automate and speed up your grading

GradeFast is a Python program (with an HTML/JavaScript UI) that eliminates the repetitive parts of grading programming assignments and lets you focus on what's important: helping students learn from their mistakes. Best of all, it lets you help them without putting much time into it!

GradeFast has 2 components that work together: a command-line application that runs commands and executes student assignments, and a web-based UI for entering grades and feedback.

GIF demo

Dependencies

Python

GradeFast requires Python 3.5 or later! (We use type hints.)

NOTE: All the command line examples below use python3 as the python executable. Depending on your platform, you may need to use python or python.exe instead (just make sure it's at least Python version 3.5!)

Additionally, these packages are required:

  • YAML to... I don't know... parse the input files, or something silly like that
  • Flask because... what doesn't ship with a web server these days?

Optional (but recommended) dependencies:

  • Colorama to make the CLI look pretty
  • Mistune to parse Markdown in comments and feedback

You can install all these dependencies with:

python3 -m pip install pyyaml flask colorama mistune

It's recommended that you do this in a virtualenv, especially if you don't have root privileges.

Additionally, some Python dependencies are included in the repository as git submodules. To get these, after cloning, run:

git submodule update --init

JavaScript

The GradeBook user interface is browser-based (HTML/JavaScript). If you change any of the JavaScript files, you will need to recompile them.

To install the Node dependencies and compile the JavaScript files, make sure you have a working install of Node.js and NPM, and then run:

npm install
npm run build

If you modify the JavaScript source, make sure you recompile and include your changes in the pull request! This allows people to use GradeFast without having to install Node.js and NPM.

Usage

Before running GradeFast, you need to compile the JavaScript components (see the JavaScript dependencies above).

Then, to start GradeFast, run:

python3 -m gradefast [OPTIONS] YAML-FILE

or, for more detailed usage:

python3 -m gradefast --help

But... how do I use this thing?

See the GradeFast wiki.

tl;dr: First, you must make a YAML-formatted configuration file the assignment that you want to grade. This file includes the structure of the grades and the commands to run on each submission. For more info, see the YAML Configuration Format page on the GradeFast wiki.

There are also some utility scripts in the utilities folder that may be useful.

Contributing to GradeFast

Want to delve deeper and contribute to GradeFast, or use individual parts of GradeFast as part of your larger, superior project? Check out the Developer Documentation on the wiki for more information on the GradeFast internals.

If you find a bug or want to add a (reasonable) feature, fork the repository and submit a pull request on GitHub. Be sure to follow the code style.

License

Licensed under the MIT License. For more, see the LICENSE file.

Contact

Questions? Bugs? Concerns? Feedback? Contact Jake Hartz.