Jupyter nbgrader Hackathon Topics

The University of Edinburgh is hosting a hackathon looked at adding features and improvements to nbgrader as part of the Jupyter Community Workshop Series. We’ve collected a list of features and items that we want to work on but we also want to hear if there are any things you would like to highlight.

Here is our current list:

  • Support for Multiple course/Multiple classes. Instructors that teach multiple course using nbgrader or students enrolled on multiple course. Multiple Courses (ref: PR #1040) vs Support for multiple classes via Jupyterhub groups (PR #893)

  • Considerations for LTI use: Users/Courses not in the database at startup

  • Support for Multiple markers for one assignment (part of issue #1030, which extends #998)

  • API Tests have hard-coded file copy methods to pre-load the system to enable testing, and os.file_exists-type tests for release & submit tests

  • Generation of feedback copies for students within the formgrader UI (to mirror the existing terminal command). Also consider ability to disseminate this feedback back to students within nbgrader.

You can also find some discussion at https://github.com/jupyter/nbgrader/issues/1079

1 Like

I didn’t see https://github.com/jupyter/nbgrader/issues/1073 on the list – but it cost us a couple of hours (mainly because we assumed we’d corrupted gradebook.db before we realized it was the sqlalchemy update).

We’ve worked on the same issue here as part of our implementation on nbgrader. We are planning to release a large amount of the work that’s been done here as part of the hackathon so this issue should be addressed when it gets fed back upstream. Thanks for the input.

That’s great news, thanks for your work on this. I was going to teach myself enough sql to try to debug, happy to postpone for another time.

Here are some features we would need at Paris-Sud and I would like to discuss / collaborate on:

  • Secure execution of student code in a sandbox
  • Randomization upon generating the student notebook to limit plagiarism
  • Digital watermark / signature in the student notebook to limit plagiarism
  • Online exchange directory
  • More modularity for using only certain pieces and help integrate with local infrastructure / workflow
    E.g.: producing the student version without any configuration
  • Handling groups of students by adding the group info in addition to the student name

FYI, I’ve created the Edinburgh-Hackathon label in the nbgrader repo and will be tagging issues/PRs with that to make it easier to track what people want to work on. If you’d like me to tag an issue with it please comment here or on #1079 with the issue number and I’ll go ahead and tag it!


Things on my list include:

  • Moodle: how Moodle integration might work; how nbgrader compares with something like Moodle Code Runner;
  • extent to which elements of nbgrader can be decoupled, then used / reused / co-opted for other things.

I would like to add:

  • (ref: PR #1060) so teachers can navigate to their service with a link from their user home instead of having to manually write the path, this would provide better user experience for teachers.

A colleague has been using nbgrader here in Edinburgh on a small course and had the following issues to contribute:

  • Add a “tutorial” or “worksheet” option, to distribute notebooks which don’t necessarily need to be submitted, nor linked to another submission/assignment

  • Ability to distribute feedback files back to the students through the exchange

  • Ability to release (partial) solutions. The solutions written between the ### BEGIN/END SOLUTION tags don’t actually seem to have any use at the moment, unless I’m missing something.

  • Include student ID in the filename for the .html feedback file; ability to bulk-download .html feedback files [pending previous point]

  • Keep track of (and display) the number of attempts/submissions for each student

  • (local to Edinburgh perhaps) Make at least some configuration options available to the instructor/course organiser (e.g. changing delimiters and code stubs, timeout options…)

  • (local to Edinburgh perhaps) Populate the Learn Grade Centre with new columns when assignments are released; ability to release marks when marking complete, after which the marks would be sent to the corresponding column in the Learn Grade Centre. Alternatively, option to bulk-download all grades in a format which then can be bulk-uploaded to Learn

  • (local to Edinburgh perhaps) Change directory structure for instructors. source/ and release/ directories shouldn’t appear at the root, but inside their respective course directories. Otherwise, the assignment list in the formgrader includes all assignments for all courses at all times, and it is not clear whether releasing an assignment will release it for all courses or just one.

Hope they might be of some use.

Issues from a colleague:

  • solution/marking guide cells that are separate from the student’s answer cells. At the moment any marking guidance in the master notebook has to be put as part of the hidden tests (so that it’s stripped out to students) in comments (so that it doesn’t affect the automated tests). It’s very clunky and tutors still have to work with two notebooks (the student’s and the master) to mark. With extra cells for solution and guidance, they could be merged with the submitted student notebook, so the tutor would see the student’s answer and the sample answer, mark, and then the sample answer and guidance would be stripped again on returning the notebook.

  • configurable option whether to strip sample answer;

  • make requirements >= rather than = ? Eg when trying to install nbgrader 0.5.5 in the latest Anaconda 2019.03 distribution, install prompts downgrading several packages, including ipython from 7.4 to 5.8 (!!)

Thanks all for the great suggestions! FYI, I have created a gitter channel for nbgrader that we can use during the hackathon for discussions: https://gitter.im/jupyter/nbgrader