Jupyter notebooks (available)

Starting Date: 1 June 2020
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).
Will results be assigned to University: No

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.
  • Developing a ‘reproducibility mode’ where cells once run cannot be edited but can be copied and modified in another cell further down the notebook.
  • 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.
  • An interface to enter information about the reproducibility of a 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/.