Image: Illustration from A Personal Computer for Children of All Ages. ACM, Boston, Alan Kay, 1972. http://www.vpri.org/pdf/hc_pers_comp_for_children.pdf.
Thanks to Dr. Andreas Wagner for his contribution and all the pointer from de-RSE email list members.
Jupyter Notebooks are a way in which you can write and execute code in the browser. This is a small and simple step but most definitely not the end of the story. It is worth reflecting that another small step of the editable web ‘a wiki’ from Ward Cunningham in 1994 (Cunningham and Leuf 2001) wasn’t always around and the changes this brought about are plain to see.
First and foremost Jupyter Notebooks (Rule, Tabard, and Hollan 2018) has gained attention in research fields because it offers a route for reproducibility of research results. A Jupyter Notebook file can be downloaded and instantly the package can be run in the browser to generate results, say a chart, while simultaneously the data and code for generating results, such as a chart, can be examined.
How to use Jupyter Notebooks
Codecademy: How To Use Jupyter Notebooks — Learn about Jupyter Notebooks and how you can use them to run your code.
Jupyter Notebooks and learning
Jupyter Notebooks also have another role and that is as a teaching tool. The same features that make Jupyter a great aid to reproducibility in research also play a pivotal role in it being an effective learning environment, that is combining — data, code, and results like charts — which allow explanation and exploration to coexist1 in the same learning package. For students this means a much more effective learning process and cuts down entry barriers to data science. Researchers in the study of computers and learning have long recognized the benefits of multi-modal learning. Once such early pioneer in the field is the computer scientist Alan Kay, part inventor of the ‘personal computer’, who first outlined the ideas that would become the DynaBook in 1968 and later published as the ACM paper ‘A Personal Computer for Children of All Ages’. (Kay 1972) What was described by Kay as the DynaBook was in part hardware, which became the iPad, but the other parts were about having Jupyter-like functionality, to be able to — run simulations, explore scientific concepts as well as artistic and literary ideas and works — all interactively.
What has been gathered together below are three examples of Jupyter Notebooks being used in universities for teaching across a wide spectrum of learning contexts for students and researchers, and across disciplines from Digital Humanities, to computing, and engineering.
This is only a small sample of what has been ongoing work in many fields for a number of years. If you would like to follow development in the ‘Jupyter and learning’ field then a log of initiatives will be kept on the Generation Research GitLab area.
Text processing in the digital humanities for researchers
Contribution by Dr. Andreas Wagner, Digital Humanities, Max-Planck-Institute for European Legal History
Text processing at the Max-Planck-Institute for European Legal History
At the Max Planck Institute for European Legal History in Frankfurt, scholars are regularly interested in using Digital Humanities methods and resources for their research. To support them in acquiring the necessary competencies, we have installed an “Interest Group Digital Humanities” that regularly presents different methods and discusses them in more detail if there is demand for it. Besides other topics such as geomapping and database design/querying, *text mining* is one of the more frequently asked for fields, and thus we have dedicated several sessions to this field and will continue to do so. One of the early meetings was an introductory session where legal historians could learn how some simple analyses and tools are working “under the hood”, but also how they could, or were supposed to, prepare their texts for such analyses in the first place.
Many of the activities are reflected on the Interest Group’s wiki , but this particular session was relying on a Jupyter Notebook so that scholars would get somewhat used to seeing and maybe understand some simple code, have an explanation right beside it, and could look it up afterwards or even study it if they had not been able to come to the session.
Teaching programming skills online
Fuzzbooks: Generating Software Tests: Breaking Software for Fun and Profit
‘Generating Software Tests: Breaking Software for Fun and Profit’ – https://www.fuzzingbook.org/ – Chapters on software testing released every week since 2018-10-30, by Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler.
Generating Software Tests is in the model of a textbook and is delivered as a learning package type that is common to Jupyter Notebooks which is to be ‘multi-format’ — website, PDF, keyboard AKA Jupyter Notebook — with the authors pointing towards the Jupyter format being ‘interactive’ by adding ‘keyboard’ as a format.
The team have put together an ambitious programme and made a very public facing learning package, as opposed to how Jupyter is often used in the higher education context which is for a specific class with additional face-to-face teaching, or for more ephemeral uses as a teaching aid. Generating Software Tests has been releasing new chapters every week since the end of October 2018, which are also accompanied by extensive support material.
Jupyter has been moving forward open learning at pace for some time and it is a welcome addition to the learning delivery formats available because of its qualities that allow exploration, i.e., you can really try things out, but importantly in that it brings ‘data science’ out into the open. Existing online learning models like the family of MOOCs — self-directed MOOCs, course-led MOOCs, university MOOCs, community MOOCs, commercial MOOCs — all of these will benefit from making use of Jupyter.
Jupyter as book: Learning Python in an engineering context
Images: Two examples from MayaVi visualisations. 15 Visualizing data https://hub.mybinder.org/user/fangohr-introdu-and-engineering-yay0na1n/notebooks/index.ipynb
Introduction to Python for Computational Science and Engineering – https://github.com/fangohr/introduction-to-python-for-computational-science-and-engineering/blob/master/Readme.md | developed by Hans Fangohr (2003-2018)
This set of Python tutorials is robust and well-structured as any introductory volume on a programming language from a big publishing house for example like O’Reilly etc. Even through the computer manual or book has in many ways been superseded by Stack Overflow or Reddit, where specific answers to questions can be found via search queries. What Jupyter shows here is that the ability to run see the code and run the code helps take the format one step on from Stack Overflow, with the added benefit of being concise in its instructions.
The book qualities — being fully complete, self-contained, navigable — of this Jupyter publication is reinforced here by its high quality editing and use of the ‘textbook’ tutorial format, carefully breaking down the topic into concise ‘cognitive loads’ even though you are being introduced to a substantial set of ideas and principles. It’s also worth noting if you want to get a handle of how to use Jupyter this ‘notebook’ has a very good set of introductions.
For any of you wanting to create PDF paginated versions of a Jupyter project Thomas Kluyver ‘bookbook’ package is pointed to as the way to go by the authors. https://github.com/takluyver/bookbook
1. Thanks to Daniel Speicher on the de-RSE list for pointing out the Jupyter Notebook qualities of supporting explanation and exploration.
Cunningham, Ward, and Bo Leuf. ‘The Wiki Way’. In Wikipedia, 9 August 2018. https://en.wikipedia.org/w/index.php?title=The_Wiki_Way&oldid=854119871.
Rule, Adam, Aurélien Tabard, and James D. Hollan. ‘Exploration and Explanation in Computational Notebooks’. CHI ’18 Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems, 2018. https://doi.org/10.1145/3173574.3173606.
‘How To Use Jupyter Notebooks’. Codecademy. Accessed 15 February 2019. https://www.codecademy.com/articles/how-to-use-jupyter-notebooks.
A Gallery of Interesting Jupyter Notebooks. Python. 2015. Reprint, Project Jupyter, 2019. https://github.com/jupyter/jupyter.
Kay, Alan. ‘A Personal Computer for Children of All Ages. Alan Kay 1972 @mprove’. In A Personal Computer for Children of All Ages. Boston, 1972. http://www.vpri.org/pdf/hc_pers_comp_for_children.pdf.
Wagner, Andreas. Contribute to Awagner-Mainz/Notebooks Development by Creating an Account on GitHub. Jupyter Notebook, 2019. https://github.com/awagner-mainz/notebooks.
Zeller, Andreas. ‘Generating Software Tests’, 2018. https://www.fuzzingbook.org/.
Fangohr, Hans. Book: Introduction to Python for Computational Science and Engineering: Fangohr/Introduction-to-Python-for-Computational-Science-and-Engineering. Jupyter Notebook, 2019. https://github.com/fangohr/introduction-to-python-for-computational-science-and-engineering.
Kluyver, Thomas. Tools to Use a Collection of Notebooks as ‘Chapters’: Takluyver/Bookbook. Python, 2019. https://github.com/takluyver/bookbook.