Help Setting Up JupyterHub / NBGrader for Courses

780 views
Skip to first unread message

lewa...@colorado.edu

unread,
May 14, 2018, 12:13:43 PM5/14/18
to Teaching with Jupyter Notebooks
HI All!
I work at Earth Lab at the University of Colorado, Boulder. i'm currently building classes in Python and would like to setup a JupyterHub / NBGrader framework to grade homeworks and also provide students with a working environment when their own laptops don't suffice. I'm interested in a few things

1. i'm interested in better understanding what a system  looks like that includes:
  • an online cloud jupyter envt that students can use to complete homeworks,
  • nb grader / auto grading functionality
  • then how does this (or could it) integrate with an LMS like Canvas
2. I'm also looking for someone who has set something up like this before to work with us as a contractor.

If anyone has any feedback on either what system they are using and/or is interested or knows of someone who has time to help us set this up please respond here or get in touch with me!

All the best.
Leah

ps. as our courses out build they are all fully online and open!
Look here so see my R course: https://earthdatascience.org

Jessica B. Hamrick

unread,
May 19, 2018, 9:23:13 AM5/19/18
to lewa...@colorado.edu, Teaching with Jupyter Notebooks
Hi Leah,

The JupyterHub teaching reference deployment is a good resource: https://github.com/jupyterhub/jupyterhub-deploy-teaching

This is a deployment that would satisfy your first two bullet points.

nbgrader doesn't have sophisticated ways of handling integration with LMS's, though it's on the radar: https://github.com/jupyter/nbgrader/issues/530

The main way you would get grades out of nbgrader and into your LMS would be by using the export plugin: http://nbgrader.readthedocs.io/en/stable/plugins/export-plugin.html?highlight=lms

Hope that helps!

Cheers,
Jess


--
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-education+unsubscribe@googlegroups.com.
To post to this group, send email to jupyter-education@googlegroups.com.
Visit this group at https://groups.google.com/group/jupyter-education.
To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter-education/2894bf88-a1c5-4131-bb55-40b0a7b6ccfe%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Lorena Barba

unread,
May 19, 2018, 9:38:06 PM5/19/18
to Teaching with Jupyter Notebooks
Hi Leah,

We have been working on the following integration of Jupyter with Open edX. I know you mentioned Canvas, but I use Open edX — the open-source learning platform developed by edX with contributions from Stanford and powering many MOOC sites around the world.

1. Jupyter Viewer XBlock

The idea is that an instructor (like me) writes the course first on Jupyter notebooks. These are like a computable textbook, and of course all openly licensed and available on GitHub. Then she wants to make an online course or MOOC. But she is not planning on making a video-based MOOC, of course. She will integrate the content from the notebooks, and then add assessments, discussions, etc., to craft the learning sequences.

The Jupyter viewer permits adding the content into the course with simply the URL to the public notebook. You can add a whole notebook, or sections of it, using `start` and `end` tags.

Here's a demo showing how it's used to add content into a course: https://youtu.be/K8jhWgQnxvI

My latest course, “Get Data Off the Ground with Python,”  is using the new XBlock
I added the second half of this course using the XBlock, and it took me less than an hour.
You’ll have to enroll to see it, but it’s worth it.

In Open edX, each Section of the course corresponds to one notebook (one full “lesson”).
The notebook content is broken down in Sub-Sections and Units within the online course, forming a learning sequence after adding in topic discussions, quiz questions and other assessments, (a few!) short videos…

To provide a way to interact with the notebooks fully, I'm embedding Binder buttons within the course. 


2. Graded Jupyter Notebook XBlock

This is the Graded Jupyter Notebook XBlock, allowing an instructor to create a graded sub-section in Open edX based on an nbgrader-instrumented Jupyter notebook. The instructor uploads the assignment notebook (instructor version after setting auto-graded cells with their score values), uploads a `requirements.txt` file with needed libraries, and sets the number of allowed tries and a couple of other parameters. The student downloads the notebook and solves the assignment in their local Jupyter or a cloud service (JupyterHub, Azure Notebooks, CoCalc, etc.). When the student uploads their solved assignment, it gets immediately auto-graded by nbgrader in a container—the score gets sent back to the XBlock and gets displayed to the student (detail by graded cell), and gets automatically added to their progress in the Open edX gradebook.

Here is a demo of the XBlock usage: https://youtu.be/SwRAs8_FIdo

and here is a post on the blog of or tech partners.

I'm so excited about this and I can't wait to create more courses with it!

Announcements:

Cheers,
Lorena

lewa...@colorado.edu

unread,
May 21, 2018, 6:51:01 PM5/21/18
to Teaching with Jupyter Notebooks
Thank you so much, Jess! i've been meaning to reach out to you about this as well.

Currently one challenge we are having with nbgrader is that a given cell gets a binary value of 0 or 1. I just wondered- if we want to have partial credit based upon a series of tests or a test suite, is that possible with nbgrader? or would it be difficult to add that type of functionality to it?
Thank you so much for the reply!!
Leah

On Saturday, May 19, 2018 at 7:23:13 AM UTC-6, Jess Hamrick wrote:
Hi Leah,

The JupyterHub teaching reference deployment is a good resource: https://github.com/jupyterhub/jupyterhub-deploy-teaching

This is a deployment that would satisfy your first two bullet points.

nbgrader doesn't have sophisticated ways of handling integration with LMS's, though it's on the radar: https://github.com/jupyter/nbgrader/issues/530

The main way you would get grades out of nbgrader and into your LMS would be by using the export plugin: http://nbgrader.readthedocs.io/en/stable/plugins/export-plugin.html?highlight=lms

Hope that helps!

Cheers,
Jess

On Mon, May 14, 2018 at 5:13 PM, <lewa...@colorado.edu> wrote:
HI All!
I work at Earth Lab at the University of Colorado, Boulder. i'm currently building classes in Python and would like to setup a JupyterHub / NBGrader framework to grade homeworks and also provide students with a working environment when their own laptops don't suffice. I'm interested in a few things

1. i'm interested in better understanding what a system  looks like that includes:
  • an online cloud jupyter envt that students can use to complete homeworks,
  • nb grader / auto grading functionality
  • then how does this (or could it) integrate with an LMS like Canvas
2. I'm also looking for someone who has set something up like this before to work with us as a contractor.

If anyone has any feedback on either what system they are using and/or is interested or knows of someone who has time to help us set this up please respond here or get in touch with me!

All the best.
Leah

ps. as our courses out build they are all fully online and open!
Look here so see my R course: https://earthdatascience.org

--
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 post to this group, send email to jupyter-...@googlegroups.com.

lewa...@colorado.edu

unread,
May 21, 2018, 6:52:34 PM5/21/18
to Teaching with Jupyter Notebooks
wow! thank you, Lorena. I'm going to check this out. we have canvas at my university but I don't have to use it if i don't want to!
Excited to see what you guys have built.
Leah

Erik Sundell

unread,
May 22, 2018, 3:57:16 AM5/22/18
to Teaching with Jupyter Notebooks
Wow thank you for sharing this Lorena!
I sadly can't come to the openedx2018 conference in Montreal but was excited to see there was youtube videos of previous conference talks and hope to be able to listen in online after the conference.
This looks great, I'm very happy about the videos you have made to make the xblock's more accessible for other users!

Loads of appreciation
/ erik

Jessica B. Hamrick

unread,
Jun 2, 2018, 10:01:56 AM6/2/18
to lewa...@colorado.edu, Teaching with Jupyter Notebooks
Hi Leah, 

Currently one challenge we are having with nbgrader is that a given cell gets a binary value of 0 or 1. I just wondered- if we want to have partial credit based upon a series of tests or a test suite, is that possible with nbgrader? or would it be difficult to add that type of functionality to it?

You can definitely assign partial credit manually through the formgrader, but unfortunately there isn't a way to do this with the autograder currently. My current suggestion is to break up your test cell into multiple test cells, so you can have some pass and some not, but I realize that doesn't exactly provide all the functionality you'd like. I've opened an issue on the nbgrader repo to track the feature request for true partial credit: https://github.com/jupyter/nbgrader/issues/974

Cheers,
Jess


To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-education+unsubscribe@googlegroups.com.
To post to this group, send email to jupyter-education@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages