Skip to content

Instantly share code, notes, and snippets.

@westurner
Created March 20, 2020 06:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save westurner/c721e5034aca7449208bbd7d1fb4f396 to your computer and use it in GitHub Desktop.
Save westurner/c721e5034aca7449208bbd7d1fb4f396 to your computer and use it in GitHub Desktop.
Reply for "Teaching remotely with Jupyter: tips, resources, and best-practices" https://discourse.jupyter.org/t/teaching-remotely-with-jupyter-tips-resources-and-best-practices/3683/

From "Options for giving math talks and lectures online" https://news.ycombinator.com/item?id=22539537 :

One option: screencast development of a Jupyter notebook.

Jupyter Notebook supports LaTeX (MathTeX) and inline charts. You can create graded notebooks with nbgrader and/or with CoCalc (which records all (optionally multi-user) input such that you can replay it with a time slider).

Jupyter notebooks can be saved to HTML slides with reveal.js, but if you want to execute code cells within a slide, you'll need to install RISE: https://rise.readthedocs.io/en/stable/

Here are the docs for CoCalc Course Management; Handouts, Assignments, nbgrader: https://doc.cocalc.com/teaching-course-management.html

Here are the docs for nbgrader: https://nbgrader.readthedocs.io/en/stable/

You can also grade Jupyter notebooks in Open edX:

Auto-grade a student assignment created as a Jupyter notebook, using the nbgrader Jupyter extension, and write the score in the Open edX gradebook

https://github.com/ibleducation/jupyter-edx-grader-xblock

Or just show the Jupyter notebook within an edX course: https://github.com/ibleducation/jupyter-edx-viewer-xblock

There are also ways to integrate Jupyter notebooks with various LMS / LRS systems (like Canvas, Blackboard, etc) "nbgrader and LMS / LRS; LTI, xAPI" on the "Teaching with Jupyter Notebooks" mailing list: https://groups.google.com/forum/#!topic/jupyter-education/_UP-VjBYXJE

"Teaching and Learning with Jupyter" ("An open book about Jupyter and its use in teaching and learning.") https://jupyter4edu.github.io/jupyter-edu-book/

...

TLJH: "The Littlest JupyterHub" describes how to setup multi-user JupyterHub with e.g. Docker spawners that isolate workloads running with shared resources like GPUs and TPUs: http://tljh.jupyter.org/en/latest/

"Zero to BinderHub" describes how to setup BinderHub on a k8s cluster: https://binderhub.readthedocs.io/en/latest/zero-to-binderhub

If you create a git repository with REES-compatible dependency specification file(s), students can generate a container with all of the same software at home with repo2docker or with BinderHub.

REES is one solution to reproducibility of the computational environment.

BinderHub ( https://mybinder.org/ ) creates docker containers from {git repos, Zenodo, FigShare,} and launches them in free cloud instances also running JupyterLab by building containers with repo2docker (with REES (Reproducible Execution Environment Specification)). This means that all I have to do is add an environment.yml to my git repo in order to get Binder support so that people can just click on the badge in the README to launch JupyterLab with all of the dependencies installed.

REES supports a number of dependency specifications: requirements.txt, Pipfile.lock, environment.yml, aptSources, postBuild. With an environment.yml, I can install the necessary CPython/PyPy version and everything else.

REES: https://repo2docker.readthedocs.io/en/latest/specification.html

REES configuration files: https://repo2docker.readthedocs.io/en/latest/config_files.html

Storing a container built with repo2docker in a container registry is one way to increase the likelihood that it'll be possible to run the same analysis pipeline with the same data and get the same results years later.

... from https://mail.python.org/archives/list/edu-sig@python.org/message/KZZU63POPUIGBEC4N6SKJBT7SDDSAB5J/ :

Pull Request reviews support line-by-line commenting and optional revision right granting: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review https://docs.gitlab.com/ce/user/project/merge_requests/

GitHub Classroom runs CI tests for student assignments: https://classroom.github.com/

For learning git branching (for pull requests), https://learngitbranching.js.org/ is excellent and interactive

Notebooks on Colab can be shared as editable and support comments https://colab.research.google.com/

Notebooks on CoCalc have a (collaborative) time slider replay, chat, course assignments, nbgrader, … https://cocalc.com/doc/

[...]

https://reddit.com/r/learnpython has moderators

Phrasing the question for search is maybe the most useful skill for learning and professionally doing programming:

  • find the docs and bookmark them
  • find the source and bookmark it
  • list every possible word for the thing you're describing
  • try adding "double quotes" around certain terms and error messages
  • exclude with minus: -"this or that"

[...]

Asynchronous and logged scales.

https://reddit.com/r/learnpython

Well-designed tutorials don't require much searching for answers from people on the interwebs.

https://github.com/quobit/awesome-python-in-education

Has anyone tried integrating nbgrader with GitLab Classroom yet? https://classroom.github.com/

Pull Requests should work well with jupytext configured to auto-write the .py when the .ipynb is saved: https://jupytext.readthedocs.io/en/latest/examples.html#collaborating-on-jupyter-notebooks

CoCalc may be the most complete solution for courses with lectures and assignments as notebooks: https://doc.cocalc.com/teaching-course-management.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment