nbgrader in CoCalc

149 views
Skip to first unread message

William Stein

unread,
Jan 25, 2020, 3:01:00 PM1/25/20
to Teaching with Jupyter Notebooks, CoCalc
Hello Jupyter-education mailing list,

For a very long time people having been asking me to integrate
nbgrader with CoCalc's version of Jupyter notebooks, since we have
realtime collaboration and course management.
I finally bit the bullet and spent about two months doing this and the
result is now live. Here are the docs:

https://doc.cocalc.com/teaching-nbgrader.html

Questions and comments are very welcome. In particular, we use
exactly the same file format as nbgrader, and studied the source code
of nbgrader in order to make the behavior
very similar. However, it didn't make sense to actually use the
nbgrader code, since it overlaps a lot with our course management (and
provides much functionality we don't need, and is
in Python, whereas CoCalc is written in Typescript). We try hard to
clarify the relationship between our implementation of "nbgrader" and
the official upstream version here:

https://doc.cocalc.com/teaching-nbgrader.html#purpose-of-nbgrader

I hope it is OK that we're using the name "nbgrader" to refer to what
we're doing, since it has the exact same file format and fits into the
ecosystem (e.g., you could make problems using
official nbgrader, then assign them through cocalc, and vice versa).
Personally, like with Jupyter notebook itself, I think it's overall
very good for the ecosystem that there is more than one client
that implements the spec. Note also that CoCalc is open source,
despite it being primarily used via https://cocalc.com.

Thanks,

-- William

--
William (http://wstein.org)

Greg Werner

unread,
Jan 25, 2020, 4:01:45 PM1/25/20
to William Stein, Teaching with Jupyter Notebooks
Hi William that’s great to hear. IllumiDesk also integrates nbgrader into the service (albeit with the standard version - https://www.illumidesk.com).

Perhaps this is a good time to join forces and push a common Jupyter Notebook grading standard?

There are a few out there that we have seen, such as Berkley’s okgrade Gofer Grader, it would be amazing to have one standard for all clients.

--
You received this message because you are subscribed to the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-educat...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter-education/CACLE5GDtLJ2PXTspo-D7m39uVmAp4BPnmBOyYWavCwuZXxf-zA%40mail.gmail.com.

Gary Steele

unread,
Jan 25, 2020, 4:20:24 PM1/25/20
to Greg Werner, William Stein, Teaching with Jupyter Notebooks
Hi all,

I've also been working with Vocareum (well, will be working with Vocareum starting Feb), they also use NBgrader as the "input format" (and also partially on the backend, albeit with different management than the formgrader)

Standardisation to a common input format is a great idea if possible, as it reduces the chance of vendor-lock-in and it makes sharing / exchanging example code easier. Definitely something we should support!

Cheers,
Gary



--
Prof. Gary Steele
Quantum Nanoscience Department, Room D103
Kavli Institute of Nanoscience
Delft University of Technology
Lorentzweg 1, 2628 CJ Delft
The Netherlands
Office: +31-15-278-3402
Email: g.a.s...@tudelft.nl
Website: http://steelelab.tudelft.nl

William Stein

unread,
Jan 25, 2020, 5:44:05 PM1/25/20
to Gary Steele, Greg Werner, Teaching with Jupyter Notebooks
Hi,

Thanks for mentioning all of this other software that uses nbgrader.
It would be nice if the nbgrader devs would accept a PR adding a list
of
"other software that supports nbgrader" to their docs [1], and we
would list all these there. Where should this go? Is there anything
else out
there, or on the horizon?

Regarding a standard, so far I didn't run into any cases where I
wanted to change the official nbgrader spec. I think the actual
documentation of
the nbgrader metadata at [2] wasn't sufficiently precise to actually
implement things, so I had to try out examples in the nbgrader
extension and
read source code. There is documentation of the .ipynb file format at
[3] (called nbformat) which is quite good, and nbgrader could have
something
similar.

[1] https://nbgrader.readthedocs.io/en/stable/

[2] https://nbgrader.readthedocs.io/en/stable/contributor_guide/metadata.html

[3] https://nbformat.readthedocs.io/en/latest/
--
William (http://wstein.org)

Greg Werner

unread,
Jan 25, 2020, 8:51:28 PM1/25/20
to William Stein, Gary Steele, Teaching with Jupyter Notebooks
Perhaps we could approach IMS Global (https://www.imsglobal.org/) about the JN grader schema standard. I'll ask them on Mon if they are interested in pursuing this.

Chris Holdgraf

unread,
Jan 26, 2020, 11:21:20 AM1/26/20
to Greg Werner, William Stein, Gary Steele, Teaching with Jupyter Notebooks
Hey all - it sounds like some folks have noticed things that could be improved in the nbgrader documentation, or in the codebase. It's awesome to see people using nbgrader as a part of their products or in their classes - just a reminder that as you see places for improvement, it would be great if you made some pull-requests yourselves. Nbgrader is a fully volunteer-run project, so in many cases "the nbgrader devs" could be anybody on this list :-)

Chris

Wes Turner

unread,
Jan 26, 2020, 5:40:10 PM1/26/20
to Chris Holdgraf, Greg Werner, William Stein, Gary Steele, Teaching with Jupyter Notebooks
Here's the JSONschema and the reference Python implementation of nbgraderformat v3:



Are these the sources of the CoCalc 
implementation of nbgrader in TypeScript with React:





Re: EdTech Standards and submitting grades (and/or activity metrics) to LMS systems:

> "nbgrader and LMS / LRS; LTI, xAPI" on the jupyter-education mailing list


Eric Van Dusen

unread,
Jan 29, 2020, 7:31:42 PM1/29/20
to Wes Turner, Christopher Pyles, Prachi Khandekar, Chris Holdgraf, Greg Werner, William Stein, Gary Steele, Teaching with Jupyter Notebooks
Hi Everyone

Great discussion on Autograding format. I am also working with a student team developing and trying out solutions in this area.  These are smaller and lighter implementations than NBgrader or OKpy. 

We are still following a pathway of using the okpy structure for tests.  Chris Pyles made up a Heroku for making easy autograder tests.  https://oktests.herokuapp.com/

The vision is gofer grader as a simpler and lighter server based implementation of okpy. It was engineered for a large Mooc implementation: Data8x.    Anyone can install it as admin of a Jupyterhub https://github.com/data-8/Gofer-Grader

There is a newer project that is server independent.   otter-grader as a tool that grading can be done on a local machine, on a VM, and importantly, run as a service on Gradescope.https://pypi.org/project/otter-grader/
There is a demo notebook to follow along.

We would look forward to getting feedback on these projects, and potentially engaging on if there is a discussion on test standardization. 

Thanks
Eric Van Dusen
UC Berkeley Data Science 

Reply all
Reply to author
Forward
0 new messages