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:

 

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