Abschnittsübersicht

  • Entwicklungsumgebungen und Dokumentation

    Die Präsentation von Programmcode ist immer mit dessen Erstellung verbunden. Dabei sind dafür benötigten Entwicklungsumgebungen und die Dokumentation des Programmcodes (sowie die Versionierung) wesentlich. Diese können entweder ausschließlich im Hintergrund verwendet werden oder explizit in der Einheit gezeigt werden.

    • Visual Studio Code (VS Code) ist eine gängige und freie Entwicklungsumgebung, die sich unabhängig von der Programmiersprache einsetzen lässt. Durch die einfache Oberfläche ist VS Code gut für Programmieranfänger*innen geeignet. Da sich VS Code mit Erweiterungen beliebig anpassen lässt, wird sie auch gerne von erfahrenen Programmierer*innen verwendet. Die Kombination dieser Eigenschaften führt dazu, dass VS Code sich ideal in die Lehre integrieren lässt.
    • Das Jupyter Ecosystem eignet sich gut für die Datenwissenschaften mit Fokus auf Programmiersprachen für wissenschaftliche Berechnungen, wie Python, R oder Julia. Es gibt mit Jupyter Notebook und JupyterLab zwei web-basierte Oberflächen zur interaktiven Entwicklung so genannter computergestützter Notebooks. Dabei werden Programmcode, Visualisierungen und Text in linearer Form verwoben, was die Lesbarkeit und das Verständnis des Programmcodes unterstützt. Die damit erstellten Notebooks eignen sich ideal zur Anwendung in der Lehre, wo neben dem Programmcode selbst andere Aspekte wie Datenauswertungen eine wesentliche Rolle spielen.
    • Eine Markdown Dokumentation zum Beispiel in Notion kann sehr nützlich sein. Markdown ist eine einfache Sprache zur Erstellung von formatiertem Text, welche von Notion, einer populären Plattform zur Erstellung von Dokumentationen und Wikis, unterstützt wird. Da in Markdown ein Blocktyp für Code Snippets (kleine, nicht selbstständig ausführbare Programmteile) inkludiert ist, eignet sich dies besonders zur einfachen Erstellung einer Kurswebseite für weiterführende Materialien.
    • GitHub ist eine vielgenutzte Plattform, die basierend auf Git die Versionierung von Programmcode ermöglicht. Dies ist unentbehrlich, wenn der Programmcode einen längeren Lebenszyklus hat und damit regelmäßig gewartet werden muss. Updates zum Programmcode oder dessen Dokumentation können damit klar ersichtlich gemacht werden.


    Präsentationstools

    Die Wahl der passenden Werkzeuge zur Präsentation ist ein weiterer wesentlicher Faktor, welcher von der Präsentationsform und dem Programmcode selbst abhängig ist. Dabei sind die Darstellung von Programmcode (und Code Highlighting), sowie das Wechseln zwischen Programmcode und anderen Modalitäten essenziell.

    • Google Slides erlaubt ein kollaboratives Erstellen von Folien, welche direkt per Link geteilt werden können. Es ist damit eine Alternative zu PowerPoint und anderer bekannter Präsentationsoftware. Um Code Snippets besser darzustellen, kann auf Hilfswerkzeuge wie den SlidesCodeHighlighter zurückgegriffen werden, wodurch Code automatisch farbliche Unterscheidungen (ähnlich zu Entwicklungsumgebungen) bekommt.
    • LaTeX erlaubt die Erstellung von Folien durch die Benutzung von spezialisierten Klassen, wie etwa beamer. Da LaTeX sehr flexibel und erweiterbar ist, kann Code einfach dargestellt werden, zum Beispiel mit dem minted package, welches Code Highlighting ermöglicht.
    • Reveal.js basiert auf HTML zur Erstellung und Wiedergabe von Präsentationen. Reveal.js unterstützt diverse Arten von Medien, wobei das Präsentieren von Programmcode direkt unterstützt wird. Da Reveal.js auf Webtechnologien basiert, ist dieses Tool für Programmierer*innen von Vorteil, da diverse Funktionen mit bereits bestehenden Sprachen umgesetzt werden können. Zum Beispiel basiert das Erstellen und die Benützung eines Präsentations-Designs auf CSS, während Animationen auf JavaScript basieren. Dies hilft ebenso bei der Präsentation des Programmcodes, wo Code Highlighting mit CSS konfiguriert wird und man u.a. mit JavaScript Codeteile hervorheben und animieren kann.
    • Quarto ermöglicht die Konvertierung von Notebook Formaten (z.B. Jupyter) zu anderen Arten von Dokumenten, wie eben auch zu Präsentationen. Dabei ist die Auswahl, ob die Endpräsentation zu PowerPoint, LaTeX Beamer oder Reveal.js umgewandelt wird, freigestellt. Die Umwandlung wird mittels YAML konfiguriert, entweder global oder auf Codezellen-Ebene. Damit lässt sich ein normal ausführbares Programm direkt in eine Präsentation umwandeln.
    • Die Open Broadcasting Software (OBS) ist eine freie Anwendung, die sich zur Aufzeichnung und Live-Übertragung der Präsentation eignet. Die Anwendung ist sehr funktionsreich und unterstützt unter anderem das nahtlose Wechseln zwischen verschiedenen Ansichten. Da beim Programmieren oft von mehreren Anwendungen gebraucht gemacht wird (z.B. Entwicklungsumgebung, Terminal mit Compiler) ist diese Funktion von zentraler Bedeutung.


    Schnittstellen und Interaktion

    Neben der Präsentation selbst ist die Schnittstelle zwischen LP und TN ausschlaggebend für den Erfolg. Neben den klassischen Interaktionen in der Einheit selbst können die folgenden Schnittstellen/Tools ebenfalls die Interaktion fördern:

    • Mentimeter ist eine Feedback-App, die vielfältige Möglichkeiten bietet, um mit TN in Interaktion zu treten und eignet sich gut für größere Gruppen. Es können damit sowohl Umfragen als auch Quizzes in Echtzeit umgesetzt werden.
    • Virtuelle Maschinen (VMs), z.B. mittels VirtualBox, ermöglichen es LP und TN, den Programmcode unter gleichen Bedingungen (= virtuelle Umgebung) auszuführen. Damit kann die LP den TN eine vorab korrekt konfigurierte Umgebung zur Verfügung stellen, um typische Probleme, die aufgrund unterschiedlicher Systeme entstehen, zu vermeiden. VMs eignen sich besonders in Übungsszenarien oder für Hausaufgaben. 
    • YouTube ist eine Videoplattform, auf der Aufzeichnungen hochgeladen aber auch live gestreamt werden können. YouTube hat mehrere Funktionen, die Interaktion ermöglichen, wie die Kommentarfunktion bei Videos oder aber auch der Live-Chat bei einem Stream. Durch das Veröffentlichen der Einheit auf YouTube kann eine größere Anzahl an TN erreicht werden.