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 behaviour that has not been verified against a primary source. Check with us before relying on anything here.

Choosing a Grading Tool & Interface

Three grading tools are in use for Datahub courses, and they differ less in what they can grade than in where the work happens — on our platform, or on Gradescope's.

IT Services can talk the choice through and put course staff in touch with instructors who have used each one.Getting Help

The Three Options


nbgrader is the in-platform tool. Assignments are created, distributed, collected, autograded and manually graded inside Datahub, through the Formgrader interface. IT Services supports it, and students never leave the platform. → The Notebook Grading Workflow

Otter-Grader, run on the Gradescope autograder, grades Jupyter notebooks submitted through Gradescope. It generates the notebook tests, and it produces PDFs for manual grading. Support comes from Gradescope and the wider community rather than from us.

The Gradescope autograder on its own is the general-purpose option: it has native support for languages beyond Python — C, C#, Java, MySQL and others — which neither of the others offers.

Choosing Between Them


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

Four questions settle it in practice:

  • Does the work have to happen on Datahub? If the course depends on the course image, its datasets or its GPUs, nbgrader keeps everything in one place. If students mostly work locally, a Gradescope route fits better.
  • Is it a notebook course? Vanilla Gradescope does not unit-test notebooks.
  • Does the course need a language other than Python? Only vanilla Gradescope offers that natively.
  • How are grades to reach Canvas? The Gradescope routes carry grades to Canvas themselves; nbgrader does not, and course staff upload a CSV. → Exporting the Grades

What nbgrader Assumes


A shared grader account. Each Datahub course is issued one, and nbgrader works only from it — not from an instructor's or a TA's own account. Everyone who grades shares it. → Managing a Group

Students see feedback through the notebook. Before submitting they can run Validate against the visible test cells; after grades are released they see a score breakdown for those cells and any feedback course staff generate.

Everything is in the Jupyter interface, which means the interface a grader or student is using matters. → Which Interface Supports Grading

Which Interface Supports Grading


Interface nbgrader Notes
JupyterLab Yes The default since our 2024.4 images, and the one to use
Notebook 7 Yes Most of JupyterLab's features in a Notebook-style layout; we consider it experimental
NBClassic No Extensions such as nbgrader are not supported here, and we cannot guarantee long-term support for the view itself
RStudio No A separate IDE, reached from the JupyterLab launcher; grading happens on the Jupyter side

JupyterLab is the default and the supported path for grading, and everything below assumes it.

Where the Controls Are in JupyterLab


Graders reach the grading interface at Nbgrader → Formgrader.

To mark up cells while editing an assignment notebook, use Nbgrader → Create Assignment, or the panel that sits on the right-hand side of the notebook. Both open the same per-cell grading controls. → The Notebook Grading Workflow

Students fetch and submit at Nbgrader → Assignment List. The list itself is near enough 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 gives JupyterLab and /tree gives 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. It is a safe first step when a grading control is missing.

Older Screenshots


Upstream nbgrader documentation shows Formgrader running in JupyterLab, which matches the current interface. Our own older material, and any course handout written before the 2024.4 images, shows Notebook 6 — the classic interface, without the JupyterLab panel down the left-hand side. The buttons and the workflow are the same in both.

Caveats & Limitations


Notebook 7 and NBClassic are experimental. If something misbehaves in either, please fall back to JupyterLab and tell us what happened.

Interface choice is per person, not per course. A student who has switched views privately will not see what a course handout describes.

None of this changes the account rule. Formgrader appears only for the shared course grader account, in any interface.

Support follows the tool, not the course. We support nbgrader. Questions about Gradescope or Otter behaviour go to Gradescope or the Otter community, even for a course hosted here. We can still help with the Datahub side — the image, the data, the environment students build in.

Switching mid-term is expensive. Assignment structure, test authoring and student instructions all differ between the tools. Please settle the choice before the quarter starts, during the setup window. → When Access Starts & Ends

Grading is coursework data. Other students' grades and academic records are protected information, and the platform's data rules apply to them like anything else. → Policy


If you still have questions or need additional assistance, email us at datahub@ucsd.edu or submit a ticket to the ITS Service Desk.