Best practice of delivering jupyter notebooks to students

This term I have to teach applied geophysics remotely because of the outbreak of coronavirus. The idea is to develop notebooks that are organized as 7-step worksheets to guide students through without too much lecturing and supervision from the instructor. Chance of self-learning!

Each worksheet needs to include stuff from the existing notebooks. For example, for the gravity worksheet, I will borrow sections from the sphere and dike notebooks in geosci-labs. I will create a new course-specific repo for those worksheets.

Here is the question for discussion: What is the best way of giving the notebooks to students?
Experience from last year is the students are new to python and notebook so installing and get things up and running are complicated and time consuming. Because there are so many different ways of setting up on different computers, everything was fine on my computer but the installation just didn’t work on their computers. Eventually, some students ended up using binder (cloud-based notebooks), but it was a bit slow and unstable. This year, things are more complicated because I will not use the native notebooks in geosci-labs, but only calling the functions in geosci-labs.

The goal is to get undergrad students running the notebooks as easily as possible. A platform-independent and universal one-click all-in-one solution would be ideal. Any suggestions? Thanks.

Hi @dikun, thanks for getting this started and apologies for the late reply! This will be a timely post for many. Classes are now remote in many locations around the world.

I look forward to seeing your notebooks! Would you be willing to share a link here?

As for delivering notebooks, the nicest approach is if your university has a JupyterHub that students can log in to. For example at UBC and across Canada, students have access to the Syzygy hubs. Then you can use nbgitpuller to bring your notebooks from your own github repo to the hub and their account on that hub. For example, I used this for the teaching demo I did at UBC. The “launch syzygy” button connects the UBC Hub ( with my github repo (

If you do not have a campus-accessible JupyterHub, then you still have a few other options that don’t require installing things locally.

  • you could launch your own JupyterHub following the instructions for the Littlest JupyterHub. The simplest set of instructions is for Digital Ocean
  • or there are options that include using mybinder, which has become much more reliable than when we first used it in 350
  • I know @jsun29 has relied on Azure Notebooks and so may be able to give you some tips there.

Then finally, if you do want to have them install things locally, Devin put together a nice tutorial on how to do this for the notebooks we prepped for the GWB project in Myanmar:

Hope this helps!

There is a related discussion happening also on the Jupyter discourse: