1 June 2020
Starting Date: June 2020
Duration: 10 weeks
Time commitment: Full time
programming (essential). It may be useful to be willing to learn about
functional programming (but this is not essential).
Jupyter notebooks  are examples of literate programming  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
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  provides
resources to run notebook on a cloud.
Finally it is possible to build extensions to Jupyter, written in
This project involves developing a number of different extensions for
These individual projects include
– 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
– 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.
 H. Shen, ‘Interactive notebooks: Sharing the code’, Nat. News,
vol. 515, no. 7525, p. 151, Nov. 2014.
 D. E. Knuth, ‘Literate Programming’, Comput. J., vol. 27, no. 2,
pp. 97–111, Jan. 1984.
 Binder. https://mybinder.org/.
 Extensions — JupyterLab 0.35.6 documentation.
 WDL Index.