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.
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.
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