Jupyter Notebooks in der Lehre – Bausteine für digitales forschendes Studieren, Reproducable Science und Data Literacy

Blick über die Schulter einer Person auf einen Bildschirm mit der geöffneten Webseite des Projektes "jupyterhub"

Die Welt von Jupyter

In der Welt von Jupyter sind die Notebooks das zentrale Element. Wie im ersten Abschnitt beschrieben, sind sie interaktiv: Die Interaktion findet in den Zellen statt, von denen beliebig viele in ein Jupyter-Notebook eingebaut werden können. In die Zellen können Text, Code oder Markdown-Befehle zur Formatierung von Text geschrieben werden. Durch die Tastenkombination „SHIFT+ENTER“ wird der Inhalt einer Zelle ausgeführt und das Ergebnis im Notebook angezeigt. Dies kann eine einfache Berechnung, die Auswertung und Visualisierung einer Datenreihe oder formatierter bzw. unformatierter Text sein. Zelle an Zelle ergibt sich so eine fortlaufende Programmierung, eine thematische Abhandlung oder bereits die Vorlage für eine Veröffentlichung.

Jupyter-Notebooks werden im sogenannten JSON-Format gespeichert. „JSON“ steht für JavaScript Object Notation und ist besonders in Webanwendungen gängig, wo es zur Datenübertragung zwischen Server und Client dient, etwa in APIs (Application Programming Interfaces3) und Webservices. JSON ist außerdem von Menschen gut lesbar und lässt sich leicht bearbeiten.

Die Notebooks lassen sich so einfach teilen und inhaltlich weiterbearbeiten. Da in Jupyter-Notebooks auch der Code enthalten ist, mit dem Visualisierungen, Graphen und Ergebnisse generiert werden, können nach einer Weitergabe problemlos neue Forschungsschwerpunkte gesetzt werden. Die Bereitstellung des zugrunde liegenden Codes fördert außerdem die Transparenz in der wissenschaftlichen Arbeit und zeigt den Weg, wie Ergebnisse erzielt wurden – ein wesentlicher Aspekt in Forschung und Lehre.

Jupyter ist ein Akronym, das sich aus den Programmiersprachen Julia, Python und R zusammensetzt. Jupyter entstand 2014 aus dem IPython-Projekt4 und ist als Open-Source-Software programmiersprachen-agnostisch. Laut Projektwebseite werden bis zu 40 gängige Programmier- und Skriptsprachen mit entsprechenden Paketen und Bibliotheken unterstützt. Konkret heißt das, dass man in Jupyter-Notebooks in verschiedenen Programmiersprachen arbeiten kann – sogar in mehreren Sprachen innerhalb desselben Notebooks. Python ist aktuell besonders populär und hat sich weltweit zu einer der beliebtesten Programmiersprachen entwickelt5. Diese Popularität hängt mit dem starken Wachstum im Bereich künstlicher Intelligenz, maschinellem Lernen und Data Science zusammen, aber auch mit der steigenden Anzahl von Datenanalyst:innen, die Jupyter-Notebooks und Python nutzen.

Die Einführung von JupyterLab im Jahr 2018 als erweiterte Arbeitsumgebung für Jupyter-Notebooks könnte zu dieser wachsenden Nutzerzahl beigetragen haben. JupyterLab bietet zusätzliche Funktionen, die über die eines klassischen Notebooks hinausgehen, denn hier können mehrere Notebooks, Terminals, Textdateien und andere Medien parallel geöffnet und bearbeitet werden. Dank Drag-and-Drop lässt sich der Arbeitsbereich individuell gestalten, und Aufgaben können auf verschiedene Fenster verteilt werden.

Mit einem verbesserten visuellen Dateiverzeichnis behalten die Nutzer:innen den Überblick. Gängige Dateiformate wie CSV (in einer verbesserten Tabellenansicht), TXT, DOCX und PDF werden angezeigt und können bearbeitet werden. Auch Bilder und Videos lassen sich einfügen und betrachten. Syntax-Highlighting und Autovervollständigung erleichtern das Programmieren und machen es effizienter. Erweiterungen können über den Extension Manager einfach nachinstalliert werden, und es ist möglich, in Echtzeit kollaborativ zu arbeiten.

Die Cloud-Anwendung von Jupyter heißt JupyterHub und wurde bereits 2015 eingeführt. Sie unterstützt die Nutzung innerhalb von Schulen, Universitäten, Unternehmen und Forschungseinrichtungen. JupyterHub ermöglicht mehreren Nutzer:innen den Zugriff auf eine Jupyter-Installation über eine Webseite. Jede:r Nutzer:in erhält eine eigene, isolierte Jupyter-Notebook-Umgebung, die unabhängig von den Umgebungen anderer läuft, nicht lokal installiert werden muss und deren Daten und Arbeitssitzungen auch nach dem Abmelden oder Neustarten des Servers verfügbar bleiben.

Wie andere Cloud-Anwendungen verfügt JupyterHub über eine zentrale Administration, die Nutzer:innen, Berechtigungen und Ressourcen (CPU-, Speicher- und Netzwerkauslastung) verwaltet. Es können Gruppen für Klassen, Teams oder Forschungsgruppen eingerichtet und individuell gestaltet werden.

Verschiedene Authentifizierungsmethoden (z. B. OAuth, PAM, LDAP*6 und andere) stehen zur Verfügung, sodass JupyterHub an die Bedürfnisse der jeweiligen Einrichtung angepasst und skaliert werden kann. Die Ausführung der Notebooks erfolgt in Containern (z. B. Docker oder Kubernetes*), was eine flexible Skalierung ermöglicht, sodass viele Benutzer:innen gleichzeitig arbeiten können, ohne sich gegenseitig zu beeinträchtigen.

In diesem Abschnitt haben wir die wesentlichen Funktionen und Entwicklungen von Jupyter – dem zentralen Element Jupyter-Notebooks, der erweiterten Umgebung JupyterLab und der Cloud-Anwendung JupyterHub – zusammengefasst. Diese flexible Open-Source-Lösung bietet vielfältige Anpassungsmöglichkeiten. In den folgenden Abschnitten gehen wir auf die konkrete Umsetzung an der Universität Bremen ein.

Nach oben scrollen