Jupyter notebooks (available)

Starting Date: 1 June 2020
Duration: 10 Weeks
Time commitment: Full time
Prerequisites: experience with Python (useful) and Javascript programming (essential). It may be useful to be willing to learn about functional programming (but this is not essential).

 

Prerequisites: experience with Python (useful) and Javascript
programming (essential). It may be useful to be willing to learn about
functional programming (but this is not essential).

Jupyter notebooks [1] are examples of literate programming [2] where
code and outputs from the code as well as documentation are in the same
application. Jupyter allows the user to run code in the Python, R and
Julia environments.

There is a great deal of excitement in the Scientific community that
these notebooks are a fundamental step forward in improving
reproducibility of workflows. In addition to this Binder [3] provides
resources to run notebook on a cloud.

Finally it is possible to build extensions to Jupyter, written in
Javascript [4].

This project involves developing a possible number of different extensions for
these notebooks.

These individual projects include

  • Developing a token system where parts of a notebook are not revealed to the user until an answer to a question is correctly answered. 
  • Interfacing a notebook cell with coderunner [6] which is a plugin that runs on moodle.
  • Developing a ‘reproducibility mode’ where cells once run cannot be edited but can be copied and hence edited.
  • Providing a mechanism to annotate a notebook within the actual markdown (using Dublin Core Metadata standards and Schema.org).
  • A ‘publication mode’ where a notebook can be pushed to a git repository.
  • A ‘citation mode’ where the relevant github repository for a notebook can be uploaded to Zenodo.org which provides a Digital

Object Identifier (DOI) which can then be automatically called
from within the notebook.

 

[1] H. Shen, ‘Interactive notebooks: Sharing the code’, Nat. News,
vol. 515, no. 7525, p. 151, Nov. 2014.

[2] D. E. Knuth, ‘Literate Programming’, Comput. J., vol. 27, no. 2,
pp. 97–111, Jan. 1984.

[3] Binder.  https://mybinder.org/.

[4] Extensions — JupyterLab 0.35.6 documentation.
https://jupyterlab.readthedocs.io/en/stable/user/extensions.html.

[5] WDL  Index.
https://software.broadinstitute.org/wdl/documentation/.

[6] Coderunner – a moodle plugin for testing code.

https://coderunner.org.nz