Skip to content

Grading (for humans)

Michael Wisely edited this page Dec 13, 2015 · 6 revisions

The whole point of grader is to make the burden of grading easier on human graders.

Example Usage

Let's say a human grader (you, perhaps) is preparing to evaluate a new assignment. Their interaction with grader will be something like the following:

Initialize a new course

Sets up the grader by creating a grader.yml at the root of the grader directory.

grader.py init course_name

Initialize a new assignment

Initializing an assignment prepares a place in grader's folder structure for a new assignment. Refer to the [[ page on grader's folder structure | Folder-Structure ]] for details on how that is laid out. The main idea is that initializing a new assignment should prepare places for files relevant to a new assignment. This includes configuration files that specify how to grade assignments. There are a couple of different ways to initialize an assignment...

Create a blank assignment with simple configuration files:

grader.py new new_assignment

Create an assignment whose configuration is backed by a git repository

grader.py new [email protected].../new_assignment.git

Retrieving student assignments

After creating a place to drop assignments, we need to fetch those assignments. This can be done a couple of different ways:

Use SSH to copy all relevant files into new_assignment's folder structure

grader.py fetch new_assignment ssh://..../course/8/*.tar.gz

Use git to clone all forks of a repo (may require extra thought)

grader.py fetch new_assignment git@.../forked_assignment.git

Grade the assignments

Grade 'em.

grader.py grade new_assignment

View results

View the outcome by printing grades to stdout. This should make it trivial to copy grades into Blackboard/Canvas/Whatever.

grader.py results --sort-by=last_name new_assignment
Clone this wiki locally