Grading

Choosing a Grading Tool & Interface

Draft

This documentation is in draft and under active review. Figures for the Fall 2026 GPU reservation system are not yet published, and some pages describe behavior that has not been verified against a primary source. Confirm any figure with parasol@ucsd.edu before relying on it.

Choose a grading tool for your course before the quarter starts: nbgrader runs inside Datahub, while Otter-Grader and the Gradescope autograder run on Gradescope. If you choose nbgrader, grade in JupyterLab, the supported interface.

Grading Tools

nbgrader

nbgrader is the in-platform tool. Assignments are created, distributed, collected, autograded, and manually graded inside Datahub, through the Formgrader interface. Students complete and submit their work without leaving the platform. Notebook Grading Workflow describes the workflow.

Otter-Grader

Otter-Grader runs on the Gradescope autograder and grades Jupyter notebooks submitted through Gradescope. It generates the notebook tests and produces PDFs for manual grading.

Gradescope Autograder

The Gradescope autograder, used without Otter-Grader, is the general-purpose option. It has native support for languages beyond Python, including C, C#, Java, and MySQL. Neither nbgrader nor Otter-Grader offers this.

Support for Each Tool

IT Services supports nbgrader. Questions about Gradescope or Otter-Grader behavior go to Gradescope or the Otter community, not to IT Services, even for a course hosted on Datahub. For a course using any of the three tools, IT Services can help with the Datahub side: the image, the data, and the environment students work in.

Comparison of Grading Tools

The tools differ mainly in where the work happens: on Datahub or on Gradescope.

Gradescope autograder Otter-Grader on Gradescope nbgrader
Supported by Gradescope Gradescope / community IT Services
Assignments created in Gradescope Gradescope Datahub
Students work Anywhere, usually locally Anywhere, locally or on Datahub On Datahub
Students submit A code artifact, via Gradescope A notebook, via Gradescope A notebook, via Datahub
Tests run on Gradescope's infrastructure Gradescope's infrastructure The Datahub cluster
Notebook unit tests No Yes, generated by Otter Yes
Other languages Yes, natively No No
Manual grading As a separate assignment Yes, from generated PDFs Yes, in the grading interface
Grades reach Canvas Through Gradescope Through Gradescope By manual CSV upload

Selection Criteria

Course requirement Effect on the choice
Work depends on the course image, its datasets, or its GPUs nbgrader keeps the work and the grading on Datahub
Students mostly work locally A Gradescope route is the better fit
Notebook assignments The Gradescope autograder on its own does not unit-test notebooks
A language other than Python Only the Gradescope autograder on its own supports other languages natively
Grades delivered to Canvas The Gradescope routes carry grades to Canvas. nbgrader does not, and course staff upload a CSV

Exporting the Grades describes the nbgrader export and CSV upload.

IT Services can advise on the choice and put course staff in touch with instructors who have used each tool. Getting Help lists contact routes.

Timing of the Choice

Assignment structure, test authoring, and student instructions all differ between the tools, so changing tools mid-term is costly. Settle the choice before the quarter starts, during the setup window. Course setup dates are on When Access Starts & Ends.

nbgrader on Datahub

nbgrader runs entirely in the Jupyter interface, so the interface a grader or student uses determines whether its controls are available. Interface Support for nbgrader lists support by interface.

Shared Grader Account

Each Datahub course is issued one shared grader account. nbgrader works only from that account, not from an instructor's or a TA's own account, and everyone who grades shares it. Formgrader appears only for the shared grader account, whichever interface is in use. Managing a Group describes the account.

Student Feedback

Before submitting, students can run Validate against the visible test cells. After grades are released, students see a score breakdown for those cells and any feedback that course staff generate.

Grades and Academic Records

Students' grades and academic records are protected information. The platform's data rules in Policy apply to them as to any other data.

Interface Support for nbgrader

Interface nbgrader Notes
JupyterLab Yes The default since the 2024.4 images, and the interface to use for grading
Notebook 7 Yes Most of JupyterLab's features in a Notebook-style layout
NBClassic No Extensions such as nbgrader are not supported, and long-term support for the view itself is not guaranteed
RStudio No A separate IDE, opened from the JupyterLab launcher. Grading takes place in a Jupyter interface

JupyterLab is the default interface and the supported interface for grading.

Experimental Interfaces

Notebook 7 and NBClassic are experimental. If either misbehaves, switch back to JupyterLab and report the problem to parasol@ucsd.edu. See Moving Between Interfaces.

Interface Choice per Person

The interface is chosen per person, not per course. A student who has switched to another interface does not see what a course handout describes.

nbgrader Controls in JupyterLab

Task Location
Opening the grading interface (graders) Nbgrader → Formgrader
Marking up cells while editing an assignment notebook Nbgrader → Create Assignment, or the panel on the right-hand side of the notebook
Fetching and submitting assignments (students) Nbgrader → Assignment List

Nbgrader → Create Assignment and the right-hand panel open the same per-cell grading controls. See Marking Up Cells.

The Assignment List is nearly identical to the one in the classic interface, so instructions written for Notebook 6 still describe it correctly.

Moving Between Interfaces

From a notebook, the Open In dropdown offers Notebook 7 and NBClassic.

From the URL, /lab opens JupyterLab and /tree opens the Notebook-style tree view:

https://datahub.ucsd.edu/user/<username>/lab
https://datahub.ucsd.edu/user/<username>/tree

Switching interfaces does not restart anything or lose work. When a grading control is missing, switching interfaces is a safe first step.

Older Screenshots

Upstream nbgrader documentation shows Formgrader running in JupyterLab, which matches the current interface. Older IT Services material, and any course handout written before the 2024.4 images, shows Notebook 6: the classic interface, without the JupyterLab panel on the left-hand side. The buttons and the workflow are the same in both.