best practices for nbgrader without shared file system?

56 views
Skip to first unread message

Zach Pincus

unread,
Sep 27, 2016, 12:00:16 PM9/27/16
to Project Jupyter
Hello all,

First, please let me know if there's a better place to direct nbgrader queries!

Anyhow, I am very excited to use nbgrader to help teach a statistics-for-biologists course I am developing for first-year PhD students. One of the goals of the course is to give the students a set of tools that they will be able to use on their own machines to solve their own problems. As such, I was thinking I would not set up a shared filesystem / jupyterhub / etc. for the homeworks, because that would seem more "magical" and farther from "something I can use on my own".

Most of the nbgrader instructions document how to manage and release assignments in the shared-filesystem configuration. Is there a straightforward way to get most of the utility of the nbgrader student tools in non-shared-filesystem setup? Any particular pitfalls to avoid? Or is this a bad idea and I should find a way to have the notebooks on a shared filesystem?

Thanks,
Zach

Zachary Pincus, PhD
Assistant Professor of Developmental Biology and Genetics
Washington University School of Medicine
http://zplab.wustl.edu

Jessica B. Hamrick

unread,
Sep 27, 2016, 3:06:56 PM9/27/16
to Project Jupyter
Hi Zach,

This is a fine place to ask questions about nbgrader! You're also welcome to ask questions through issues on the repository. There is also a list for people using Jupyter in educational contexts that you might be interested in: https://groups.google.com/forum/#!forum/jupyter-education

Unfortunately, on the student's side, if they aren't using a shared filesystem then the nbgrader tools won't apply to them. That said, you can still absolutely use nbgrader to create and grade the assignments -- it just won't help with distributing the files to students or collecting them. There is currently work-in-progress (e.g. https://github.com/jupyter/nbgrader/pull/526) for integrating nbgrader better with LMSes (like Canvas) but it isn't ready for general use yet.

Releasing assignments while not on a shared filesystem should be pretty easy -- after running 'nbgrader assign', you can zip/tar the assignment in the 'release' folder and email it to students, upload it to a LMS, etc. Collecting assignments is a bit trickier -- what we've done in the past is have students download the zipped assignment, unzip it, and then zip it back up when they're done and upload it to the LMS. After downloading the submitted assignments you would then need to write a script to put them in the directory layout that nbgrader expects (see http://nbgrader.readthedocs.io/en/stable/user_guide/philosophy.html ). After that, you should be able to run the autograder as normal.

The biggest pitfall with this approach is if students rename files. nbgrader expects the submitted files to have exactly the same names as they had when they were released, so if students rename them then that will cause issues.

Hope that helps -- let me know if you have any further questions!

Cheers,
Jess


--
You received this message because you are subscribed to the Google Groups "Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter+unsubscribe@googlegroups.com.
To post to this group, send email to jup...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/4d2b57f5-de76-4c82-96ac-65f683a73c73%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Zach Pincus

unread,
Sep 28, 2016, 4:34:24 PM9/28/16
to Project Jupyter
Thanks Jess!

Just one clarification: can any of the features of the "notebook dashboard" be used by students in a non-shared filesystem setup? Is it possible to instruct students to put the assignment folders in a specific place so that they will appear in the "downloaded assignments" list, with the "validate" buttons by each question? 

Or, failing that, are there other good ways for students not on a shared filesystem to validate their assignments? I guess just manually running the "test" cells would be sufficient.

Thanks again for your help with this, and moreover, for creating such a great teaching tool.

Zach
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter+u...@googlegroups.com.

Jessica B. Hamrick

unread,
Sep 28, 2016, 7:10:45 PM9/28/16
to Project Jupyter
Hi Zach,

At the moment, no, but that's a great idea for an additional extension for nbgrader to provide that students could install. Would you like to open an issue for that on the nbgrader repo?

Cheers,
Jess


To unsubscribe from this group and stop receiving emails from it, send an email to jupyter+unsubscribe@googlegroups.com.

To post to this group, send email to jup...@googlegroups.com.

Zach Pincus

unread,
Sep 29, 2016, 12:02:15 AM9/29/16
to Project Jupyter
Here it is: https://github.com/jupyter/nbgrader/issues/569

How does the student dashboard currently know what assignments exist and where to fetch them? Is there a shared configuration file that gets updated when new assignments are released? If so, one possibility might be to make that config file location be a URL so that it could be fetched over the network. This, plus support for assignment locations as URLs-to-zipped-directories, could simplify distribution for the non-shared-filesystem case. (Turning in assignments is still tricky, though. Except for the obvious challenge of authentication, a simple HTTP POST system could be set up easily enough.)

If you think this would be a useful set of changes that wouldn't require rearchitecting everything, I'll add that to the github issue, and consider trying my hand at implementing it as a "learning nbgrader internals" exercise.

Thanks,
Zach

Jessica B. Hamrick

unread,
Sep 29, 2016, 12:27:53 PM9/29/16
to Project Jupyter
Thanks for opening the issue! I'm going to reply to your question there and we can keep the discussion going there.

To unsubscribe from this group and stop receiving emails from it, send an email to jupyter+unsubscribe@googlegroups.com.

To post to this group, send email to jup...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages