1 June 2020
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 possible number of different extensions for
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  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.
 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.
 Coderunner – a moodle plugin for testing code.