Zufallsexperimente mit Würfeln gehören zum Unterrichtsstoff der Sekundarstufe I. Im Zürcher Lehrmittel „Mathematik 1“ werden die Untersuchungen aber auf 2 Würfel beschränkt und auch der Lehrplan bleibt eher vage, wenn er von mehrstufigen Zufallsexperimenten mit Würfeln, Münzen und Zahlen spricht. An dieser Stelle soll deshalb gezeigt werden, wie die Thematik auch auf der Sekundarstufe I ausgebaut und damit ein erweiterter Blick in die Welt der Mathematik ermöglicht werden kann.
Würfeln mit einem Würfel
Den meisten Schülerinnen und Schülern ist klar, dass beim Würfeln mit 1 Würfel die Augensummen 1 bis 6 jeweils mit der gleichen Wahrscheinlichkeit auftreten.
Würfeln mit zwei Würfeln
Die Wahrscheinlichkeit des Auftretens einer gewissen Augensumme beim Würfeln kann ohne grossen Aufwand erarbeitet werden, indem man alle Möglichkeiten in einer zweidimensionalen Tabelle aufnotiert.
Die Symmetrie der Wahrscheinlichkeit der Augensummen kann durch Einfärbung noch verdeutlicht werden.
In diesem Zusammenhang kann nicht nur die Schreibweise für Wahrscheinlichkeiten eingeführt werden, sondern die Schülerinnen und Schüler können sich auch Gedanken darüber machen, welche Kombinationen von Augensummen für ein faires Spiel verwendet werden dürfen.
Würfeln mit drei Würfeln
Nach der linearen (1D) Darstellung der Augensummen bei einem Würfel und der Darstellung in der Fläche (2D) für zwei Würfel ist die Berechnung der Wahrscheinlichkeiten für die Augensummen beim Würfeln mit drei Würfeln erst einmal eine Herausforderung, weil die Darstellung in einem Würfel (3D) zwar naheliegt, deren Umsetzung aber zumindest auf Papier auf Schwierigkeiten stösst. Es lohnt sich deshalb, mit den Schülern darüber zu diskutieren, wie die einzelnen Ebenen des Würfels auf Papier auseinandergenommen werden können. Dies führt dann zu einer systematischen Notation in einer Tabelle, welche grundsätzlich für eine beliebige Anzahl von Würfeln funktioniert.
Eine systematische Notation aller Fälle erlaubt das anschliessende Auszählen der Häufigkeit der verschiedenen Augensummen.
Alle 216 Möglichkeiten systematisch zu notieren, führt zum Ziel ist aber ziemlich aufwändig, weshalb sich beim Auszählen ein arbeitsteiliges Verfahren bewährt hat. Ausserdem ist für die meisten Schülerinnen und Schüler einsichtig, dass auch hier wieder eine Symmetrie der Wahrscheinlichkeiten der Augensummen auftritt. Einige Schülerinnen und Schüler versuchen den Arbeitsaufwand weiter zu reduzieren, indem sie theoretische Überlegungen über das Verhalten der verschiedenen Augensummen anstellen. In einem solchen Fall ist es hilfreich, wenn man sie darauf aufmerksam macht, dass insgesamt ja 216 unterschiedliche Fälle auftreten können, die sich dann in den verschiedenen Augensummen bündeln.
Würfeln mit vier Würfeln
Nach der Arbeit mit 3 Würfeln führt die Erwähnung einer Untersuchung für 4 Würfel meist zu wenig Begeisterung, denn die Schülerinnen und Schüler wissen zwar, dass die Aufgabe lösbar ist, aber gegenüber der eben geleisteten Arbeit einen sechsfach höheren Aufwand erfordert. Deshalb ist es an dieser Stelle sinnvoll, bei der Lösungssuche einen Strategiewechsel vorzunehmen und allenfalls vom Papier zum Computer in eine Tabellenkalkulation zu wechseln.
Mithilfe der Tabellenkalkulation können die Häufigkeitswerte schnell aufaddiert werden.
Um von dem Würfeln mit einem Würfel auf die Ergebnisse bei zwei Würfeln zu kommen, wurden in der Tabellenkalkulation einfach die schon vorhandenen Häufigkeiten verschoben notiert und anschliessend aufsummiert. Dadurch ergeben sich tatsächlich die Häufigkeiten für das Würfeln mit zwei Würfeln.
Ein genauerer Blick zeigt, wie die Resultate zustande kommen. Bei zwei Würfeln gibt es genau 1 Möglichkeit, die Augensumme 2 zu erzielen, nämlich dann, wenn der erste Würfel eine 1 zeigt und der zweite Würfel ebenfalls. Die Augensumme 3 hingegen kann auf 2 Arten erzielt werden: 1+2 und 2+1.
Genau die gleichen Überlegungen können beim Schritt von zwei zu drei Würfeln angestellt werden, wenn beispielsweise die Augensumme 5 gesucht wird, dann kann diese aus folgenden Kombinationen entstehen:
Dieses Vorgehen kann analog für alle Augensummen durchgeführt werden und gilt für eine beliebige Anzahl von Würfeln. Die neuen Augensummen können immer durch das „verschobene“ Addieren der alten Häufigkeiten gewonnen werden.
Wie schon beim Schritt von drei auf vier Würfeln kann die beschriebene Methode für eine beliebige Anzahl von Würfeln verwendet werden. Allerdings steigt auch dabei der Arbeitsaufwand immer weiter an, wenn auch nicht so schnell wie beim Aufnotieren aller Fälle.
Deshalb ist es nun sinnvoll, einen Computer entsprechend zu programmieren. Traditionell würde dies mit einer mehrfach verschachtelten for-Schleife geschehen, deren genaue Funktionsweise aber nicht nur für Schülerinnen und Schüler schwer nachvollziehbar ist.
In Snap! gibt es mit den entsprechenden Listenfunktionen eine elegantere Lösung. In der Tabellenkalkulation wurden ja einfach „verschobene“ Häufigkeitswerte jeweils sechsmal addiert. Genau dies ist auch in Snap! möglich, wobei es keine Rolle spielt, wie lange die konkrete Liste ist.
Aus der Liste für den Fall mit einem Würfel können alle anderen Resultate generiert werden.
Zuerst wird die Liste „augensumme“ mit den Häufigkeitswerten für einen Würfel gesetzt. Dann wird die Anzahl der Würfel eingegeben und anschliessend berechnet das Programm durch wiederholtes Ausführen der „verschobenen“ Addition der bisherigen Werte die Häufigkeitswerte für den nächsten Würfel.
Wird der Block „set augensumme“ aus der Schleife herausgenommen, können die Schülerinnen und Schüler diesen wiederholt aufrufen und die dadurch neu entstehenden Listenwerte im Detail untersuchen. Augensummen beim Würfeln mit vielen Würfeln können anschliessend auch noch grafisch ausgegeben werden, was eine nächste Ebene der Betrachtung des Problems ermöglicht.
Die grafische Darstellung erlaubt es, die Verteilung der Augensummen auf einen Blick zu erfassen und lädt zu weiteren Untersuchungen ein.
Das komplette Programm kann hier aufgerufen werden: Augensummen.
Weshalb der ganze Aufwand?
Dem Mathematikunterricht auf der Sekundarstufe I wird gerne vorgeworfen, er beschränke sich fast ausschliesslich auf die Vermittlung von Rechenverfahren, welche die Schülerinnen und Schüler dann möglicherweise beherrschten, aber nicht in einen grösseren Zusammenhang einordnen könnten.
Das vorgestellte Beispiel zeigt, dass es durchaus möglich ist, innerhalb eines vertretbaren Zeitrahmens (ca. 3 Lektionen) nicht nur den Bogen von einem sehr speziellen Problem zu einer allgemeineren Problemlösung zu schlagen, sondern durch unterschiedliche Repräsentationen auch gezielt mathematische Vorgehensweisen anzuwenden, die über das reine Hantieren mit Zahlen hinausgehen. Ausserdem wird dabei auch die Grundlage zur Erarbeitung weiterer mathematischer Konzepte gelegt. Dabei ist der Einsatz von Computern nicht zwingend notwendig, erleichtert aber durch die Automatisierung der zugrundeliegenden Rechenoperationen eine Konzentration auf die wesentlichen Aspekte der Problemstellung.
Die Generico-Erweiterung erlaubt das flexible Anpassen von Inhalten in Moodle durch abrufbare Vorlagen (Filter). Die Erweiterung kann hier heruntergeladen werden: https://moodle.org/plugins/filter_generico. Generico-Filter funktionieren in den meisten Textfeldern von Moodle, jedoch nicht in der Datenbank-Aktivität.
Anwendungen für die Generico-Erweiterung
Falls in einem Moodlekurs eine persönliche Ansprache gewünscht wird, tippt man in einem Textfeld folgenden Befehl ein:
{GENERICO:type="firstname"}
Im entsprechenden Text wird dann der Vorname des entsprechenden Benutzers angezeigt. Durch Anpassung des Filters (oder einer Variante) davon, kann auch der Nachname oder der volle Name angezeigt werden.
Auch der Einbau eines QR-Codes kann mittels Generico einfach umgesetzt werden, sofern die entsprechende Vorlage vorhanden ist. Dazu schreibt man beispielsweise:
Woraus Generico dann folgendes Webelement erzeugt:
Die Grösse des QR-Codes kann über einen Parameter angepasst werden. Der Link unter dem QR-Code wird ebenfalls automatisch eingefügt.
Auch die einfache Gliederung von einzelnen Seiten in Moodle kann durch Generico-Filter erreicht werden. Reiter erstellt man beispielsweise wie folgt:
{GENERICO:type="tabs"}
{GENERICO:type="tabitem",title="Reiter 1"}
Beliebiger Inhalt für Reiter 1
{GENERICO:type="tabitem_end"}
{GENERICO:type="tabitem",title="Reiter 2"}
Beliebiger Inhalt für Reiter 2
{GENERICO:type="tabitem_end"}
{GENERICO:type="tabitem",title="Reiter 3"}
Beliebiger Inhalt für Reiter 3
{GENERICO:type="tabitem_end"}
{GENERICO:type="tabs_end"}
Unter den einzelnen Reitern können beliebige Inhalte angezeigt werden.
Auch das Einbinden externer Werkzeuge über ein IFrame ist möglich. Soll beispielsweise ein Kanban-Board eingebunden werden, so reicht folgender Text aus:
Das Kanban-Bord wird mittels eines entsprechenden Generico-Filters automatisch erzeugt und in die eigene Moodle-Instanz eingebunden.
Vorteile der Generico-Erweiterung
Filter für die Generico-Erweiterung können von Moodle-Administratoren entweder selbst geschrieben oder als Vorlage übernommen werden. Sie bieten gegenüber dem direkten Verwenden von HTML-Code in einer Moodleseite folgende Vorteile:
Die Nutzer benötigten keine Webkenntnisse (HTML, CSS, JavaScript), sondern können die entsprechenden Befehle direkt im eigentlichen Text eintippen.
Die Programmierung der einzelnen Elemente wird zentral verwaltet. Falls Anpassungen notwendig werden, können diese zentral an einer Stelle durchgeführt werden. Das Anpassen zahlreicher Einzelseiten entfällt.
Die Sammlung der Filter kann beliebig angepasst und erweitert werden.
Übrigens: Wenn zusätzlich das Atto-Plugin installiert ist, können diese auch über ein Menü abgerufen werden, was den Einsatz noch einmal erleichtert.
Benutzer müssen sich die Schreibweise der einzelnen Filter nicht merken, wenn diese über das entsprechende Atto-Plugin zu Verfügung gestellt werden.
Beispiel für einen Generico-Filter
Anhand des QR-Codes soll gezeigt werden, wie ein entsprechender Filter geschrieben werden kann. Dazu wird das Administrationsmenü aufgerufen und dort unter Plugins > Filter die Vorlagen für Generico ausgewählt. Geht es darum, einen entsprechenden Filter zu bearbeiten, klickt man auf den Namen des Filters, ansonsten auf eine der noch freien Zahlen. Standardmässig stehen 20 verschiedene Filterplätze zu Verfügung. Diese kann man in den Einstellungen aber auch noch erhöhen.
Damit gelangt man in das eigentliche Menü zum Schreiben der Filter.
Die Generico-Filter lassen sich sehr flexibel programmieren, wobei nicht bei jedem Filter alle Möglichkeiten ausgeschöpft werden müssen.
Ganz oben links findet sich ein grüner Knopf „Bundle“, über den man bestehende Filter als Textdatei herunterladen und in andere Moodle-Instanzen übernehmen kann. Danach folgt ein Auswahlmenü für vordefinierte Filter.
Unter „Schlüssel“ legt man die interne Bezeichnung für den Filter fest, der bei der Verwendung des Filters mit type=“bezeichnung“ verwendet wird, unter „Name der Vorlage“ die Bezeichnung, welche später im Atto-Menü erscheint. Es folgen die Versionsnummer und eine Anweisung, wie der Filter zu verwenden ist.
In „Inhalt der Vorlage“ wird festgelegt, welchen Code der Filter später in die Webseite einbaut. Im Falle des QR-Codes ist dies ein DIV-Element mit einer ID, wobei @@AUTOID@@ dafür sorgt, dass automatische eine ID vergeben wird, die nicht zu Konflikten mit anderen IDs führt. Ausserdem wird in diesem Fall noch der Link ergänzt, der unter dem QR-Code steht.
Die eigentliche Programmierung findet durch das Festlegen von Variablen statt und die dafür eventuell notwendigen JavaScript-Befehle.
Sind die notwendigen Variablen definiert, können diese und die IDs falls notwendig über entsprechende JavaScript-Befehle angesprochen werden, wobei externe Bibliotheken eingebunden, lokale Befehle ausgeführt oder entsprechende Dateien hochgeladen werden können. In weiteren Feldern ist es dann auch möglich, entsprechenden CSS-Code zu hinterlegen.
Sind alle Bestandteile des Filters korrekt ausgefüllt, steht dieser unter der vergebenen Bezeichnung nun allen Nutzern zu Verfügung. Werden Filter selbst entwickelt, lohnt es sich, die entsprechende Programmierung ausserhalb des Filters vorzunehmen und erst die funktionierende Version einzufügen und allenfalls mit lokalen Variablen von der Form @@variable@@ zu ergänzen.
Weitere Informationen zu Generico
Anleitungen und weitere Informationen zu Generico findet man hier:
Stösst man bei der Entwicklung eigener Filter auf Schwierigkeiten, lohnt es sich auf jeden Fall, sich im oben genannten Forum zu melden. Oft erhält man dort schnell und unkompliziert Hilfe.
CO2-Messungen in Schulen haben im Verlauf der Covid-19-Pandemie an Bedeutung gewonnen, weshalb nebst kommerziellen Geräten unterdessen verschiedene Bauanleitungen zu Verfügung stehen. Der hier vorgestellte Lösungsansatz unterscheidet sich von anderen Geräten dadurch, dass er folgende Anforderungen erfüllt:
Das Gerät soll die tatsächliche CO2-Konzentration einigermassen genau messen und diese nicht aus anderen Werten (z.B. dem Vorhandensein von Wasserstoff) ableiten.
Die Messdaten sollen auf unterschiedliche Weise ausgewertet werden können: direkte Anzeige, grafischer Verlauf, weitere Auswertung am Computer.
Das Gerät soll in einer blockbasierten Sprache von Schülerinnen und Schülern der Sekundarstufe I selbst programmiert werden können.
Teile des Gerätes sollen im MINT-Unterricht auch für andere Zwecke verwendet werden können.
Um diese Anforderungen zu erfüllen, wird eine Kombination aus dem Mikrocomputer Adafruit CLUE, der mit MicroBlocks programmiert wird und dem CO2-Sensor SCD-30 verwendet. Dies ist dank der von Markus Gälli freigegebenen Bibliothek für den CO2-Sensor seit Dezember 2021 möglich: https://github.com/MarkusGaelli/MicroBlocks-SCD30, wobei die Bibliothek voraussichtlich in der nächsten Version von MicroBlocks offiziell aufgenommen wird.
Das CO2-Messgerät und seine Funktionen
In der hier beschriebenen Version können die Messdaten auf dem Bildschirm des Adafruit CLUEs als Zahlenwerte und grafisch ausgegeben werden.
Der CO2-Sensor SCD30 wird mit dem Adafruit CLUE über ein STEMMA-to-Groove-Kabel verbunden und ist damit über die I2C-Schnittstelle ansprechbar.
Die Daten können via die MicroBlocks-Umgebung direkt an den Computer übergeben werden, an den der Adafruit CLUE mittels USB-micro-Kabel angeschlossen wird und von dort aus als CSV-Datei für die weitere Datenauswertung abgespeichert werden. Ausserdem verfügt die vorgestellte Variante über eine einfache Menüführung, welche flexibel ausgebaut werden kann.
MicroBlocks
Microblocks (https://microblocks.fun) ist eine blockbasierte Programmierumgebung für Mikrocomputer wie den micro:bit, Calliope und andere ähnliche Geräte, bei der Programme sofort ausgeführt werden können und die recht performant ist. Unterdessen stellt die Webseite auch diverse Anleitungen für den Unterricht (teilweise in deutscher Sprache) zu Verfügung. Wie der Mikrocomputer von MicroBlocks aus angesprochen wird, ist beispielsweise hier beschrieben: QuickStart.
Das Hauptprogramm nebst bereits vorhandenen einige zusätzliche Bibliotheken:
SCD30.ubl von Markus Gälli
Stellt die Blöcke zum Ansprechen und Auslesen des SCD30 zu Verfügung.
digits.ubl
Erlaubt die Anzeige der Ziffern 0-9 in beliebiger Grösse als Digitalzahlen.
drawGraph.ubl
Stellt eine in der Höhe anpassbare Grafik für den Adafruit CLUE zu Verfügung.
menuOptions.ubl
Erlaubt die Programmierung eines einfachen Menüsystems für den Adafruit CLUE.
Die eigentliche Messung wird in einem Block mit verschiedenen Unterbefehlen durchgeführt.
Das Hauptprogramm zeigt die gemessenen Werte als Zahl und Grafik an und kann die Messwerte auch zur weiteren Bearbeitung an einen Computer übergeben.
Zuerst werden diverse Parameter gesetzt und dann die Messwerte innerhalb einer repeat-until-Schleife ausgelesen, wobei jeweils die letzten 240 Werte in einer Liste gespeichert werden. Dabei stehen folgende Darstellungsmöglichkeiten der Messwerte zu Verfügung:
Anzeige als Text auf dem Bildschirm des Adafruit CLUE mittels displayIniformation;
direkte Ausgabe auf dem Bildschirm des Computers, falls der CLUE damit verbunden ist über say;
Weitergabe der Messwerte an das Graphmodul von Microblocks;
Ausgabe des aktuellen Messwertes als Farbinformation via NeoPixel-LED;
grafische Ausgabe der letzten 240 Messwerte auf dem Bildschirm des Adafruit CLUE.
Das Zeitintervall für die Messungen kann schrittweise von 5 – 120 Sekunden festgelegt werden, wodurch die grafische Ausgabe einen Zeitraum von 20 Minuten bis 8 Stunden abdeckt.
In der vorliegenden Version kann der Adafruit CLUE mit den Tasten A und B über ein einfaches Menü gesteuert werden.
Dabei kann jeweils über die Taste A der nächste Wert angesteuert und dieser über die Taste B ausgewählt werden. Das Drücken beider Tasten gleichzeitig führt zurück ins Hauptmenü.
Die Möglichkeiten, Messdaten über Funk an einen anderen Mikrocomputer zu senden, ist aktuell noch nicht implementiert, kann aber mit wenigen Befehlen (unter allfälliger Anpassung des Menüs) durchgeführt werden.
Verwendung im Unterricht
Erst einmal kann das Gerät für die CO2-Messung im Schulzimmer verwendet werden, um die Luftqualität zu überprüfen. Ob dabei die genaue Anzeige der aktuellen Messwerte, die Grafik (Zeitreihe von Messwerten) oder die NeoPixel-LED als Anhaltspunkt dient, hängt vom genauen Einsatzzweck ab.
Auswertung der Daten in Snap!, wobei die gleichen Algorithmen wie bei der grafischen Anzeige auf dem Adafruit CLUE verwendet werden.
Dann können die Schülerinnen und Schüler das Gerät aber auch verwenden, um mittels gezielter CO2-Messungen eigenen Fragestellungen nachzugehen. Die relativ einfach anpassbare Programmierung erleichtert dabei auch die Untersuchung etwas speziellerer Fragestellungen. Allerdings eignet sich der SCD30-Sensor nicht für schnelle Messungen, da die Messintervalle ca. 2 Sekunden betragen. Da die Messwerte als CSV-Datei gespeichert werden können, steht einer weiteren Auswertung nichts mehr im Wege.
Letztlich kann das Gerät auch als Beispiel für die Programmierung von Mikrocomputern im Informatikunterricht eingesetzt werden, wobei auf Fragestellungen wie Timing, Anzeige von Messwerten, Datenübermittlung usw. fokussiert werden kann.
Verschiebt man Punkte entlang eines Vektorfeldes entstehen häufig interessante Muster, wie sie beispielsweise von Magnetlinien bekannt sind. Die Programmierung interessanter Vektorfelder ist aber nicht ganz einfach. Da liegt es nahe, Bilder als Quelle für solche Vektorfelder zu verwenden. Fotos eignen sich dafür besonders gut, weil die Farbinformation der einzelnen Fotopixel auf mehrere verschiedene Arten ausgewertet werden können.
Die aus den Vektorfeldern resultierenden Linienmuster werden dabei mit Snap! erzeugt.
Grundlagen
In Snap! können Fotos importiert werden, indem sie einfach auf die Programmieroberfläche gezogen werden. Anschliessend kann dieses Foto einem Sprite mit den folgenden Befehlen zugeordnet werden.
Ein bereits in Snap! importiertes Foto kann über den entsprechenden Block als Kostüm verwendet werden.
Der stretch-Block sorgt dafür, dass das Foto die ganze Bühnenoberfläche (stage) komplett ausfüllt.
Nun kann die Eigenschaft einzelner Pixel im geladenen Foto mit folgendem Programm überprüft werden.
Das Programm fragt den Farbwert eines einzelnen Pixels im gegebenen Foto ab.
Sobald im Programm die Taste t (für Testen) gedrückt wird, bewegt sich das Objekt (sprite) zur aktuellen Mausposition, liest dort den Farbwert (hue) des an der Mausposition befindlichen Pixels aus und zeigt diesen an. Die weiteren Blöcke im Programm werden für das Zusammenspiel mit den anderen Programmteilen benötigt.
Das Objekt zeigt in die Richtung des gemessenen Farbwerts und gibt diesen aus.
Weil die hue-Farbwerte von 0 bis 100 reichen, wird der Messwert noch mit 3.6 multipliziert, damit als Richtung die vollen 360° erreicht werden können.
Wenn sich das Objekt nun in Richtung des gemessenen Werts bewegt, anschliessend eine neue Richtungsbestimmung vornimmt und diesen Vorgang beliebig viele Male wiederholt, entsteht eine Spur auf dem Bild.
Auf dem Hintergrund sind bereits mehrere zurückgelegte Spuren zu sehen.
Damit diese Möglichkeit interaktiv ausprobiert werden kann, ist folgende Programmierung notwendig.
Das Objekt (sprite) kann mit der Maus positioniert werden. Sobald die Maustaste nicht mehr gedrückt wird, zeichnet das Programm eine Spur auf das Foto.
Die bisher von Hand gewählte Positionierung wird nun per Programm vielfach durchgeführt.
Einfache Linienmuster
Das folgende Programm sorgt zuerst dafür, dass einige Umgebungsvariablen richtig gesetzt sind und führt dann die oben beschriebenen Schritte innerhalb des warp-Blockes (dient der beschleunigten Bildschirmausgabe) mehrfach aus.
Ausgehend von Zufallspunkten werden Linien gezeichnet, welche dem Vektorfeld folgen.
Je nach verwendeter Fotovorlage, dem gewählten Kriterium (hier: Helligkeit) und der verwendeten Schrittlänge entstehen unterschiedliche Linienmuster.
Diesem Bild liegt das im Programm verwendete Eisbild zugrunde (heller Hintergrund).Für dieses Bild diente das Foto mit dem Hund und der Ziege als Grundlage (dunkler Hintergrund).
Obwohl bei beiden Bildern (abgesehen vom Hintergrund) die genau gleichen Parameter gewählt wurden, sind völlig unterschiedliche Linienmuster entstanden.
Gleichzeitige Verwendung mehrere Linienmuster
Statt jeweils nur einen Parameter für die einzelnen Pfade (Linien) zu verwenden, kann dabei auf unterschiedliche Informationen zugegriffen werden. Dazu bietet es sich an, einen Block zu programmieren, welcher das Abfragen der unterschiedlichen Merkmale eines Bildpixels vereinfacht.
Der Block erlaubt die Wahl der gewünschten Farbinformation über ein Menü.
Als Auswahlmöglichkeiten stehen folgende Optionen zu Verfügung:
hue: Farbwert von 0 bis 100 entlang des Spektrums eines Regenbogens;
saturation: Farbigkeit von 0 bis 100, bestimmt, ob eine Farbe gräulich oder lebendig erscheint;
brightness: Helligkeit der gewählten Farbe;
red: Rotwert des Pixels;
green: Grünwert des Pixels;
blue: Blauwert des Pixels.
Die Werte für hue, saturation und brightness werden am besten mit 3.6, die für red, green und blue mit 1.41 multipliziert.
Diesen Block kann nun im oben abgebildeten Programm zum Zeichnen von Linien verwendet werden, oder er wird in eine erweiterte Version eingesetzt, welche gleichzeitig mehrere Kriterien für den Verlauf der einzelnen Pfade definiert.
Das Programm wählt ein Richtungskriterium und die gewünschte Einfärbung per Zufalls aus einer Liste von Möglichkeiten aus.
Der dem zurückgelegten Pfad (Linie) zugrunde liegende Farbwert, das Kriterium für die Richtungswahl bei den einzelnen Schritten, sowie die Schrittweite werden jeweils per Zufall ausgewählt. Dadurch entsteht bei geschickt gewählten Parametern anstelle eines blossen Linienmusters eine Art von Netz, wie sie beispielsweise häufig bei Stoffen zu finden ist.
Einige Beispiele sollen dieses Prinzip verdeutlichen (bei allen wurden die im abgebildeten Programm gezeigten Parameter verwendet).
Für dieses Muster wurde das Foto des Eichhörnchens verwendet (dunkler Hintergrund).Für dieses Muster diente das Apfelbild als Grundlage (heller Hintergrund).Hier wurde das Eisbild als Grundlage verwendet (dunkler Hintergrund).
Welche Muster ein entsprechendes Foto erzeugt, lässt sich im Voraus nur schwer erahnen. Klar abgegrenzte Objekte in einem Foto erzeugen aber klarere Richtungswechsel und prominente Muster in den erzeugten Grafiken.
Auf das beschriebene Programm kann hier zugegriffen werden: Photo to vector field.
Alle im Programm verwendeten Fotografien stammen von Ernst Giger.
Verwendung im Unterricht
Nebst dem reinen Experimentieren und der Neugier, welches Foto mit welchen Parametern zu welchen Mustern führt, kann das Programm auch dazu verwendet werden, Eigenschaften von Vektorfeldern systematisch zu untersuchen.
Statt einzelne Punkte zufällig zu wählen, können die Startpositionen auf bestimmten geometrischen Orten wie Linien oder Kreisen liegen.
Das gleiche Bild kann mehrfach mit den gleichen Startwerten als Grundlage für die Berechnung verwendet werden.
Bei unterschiedlichen Fotos kann untersucht werden, wie sich die Schrittlänge auf die Stabilität der Muster auswirkt.
Solche Untersuchungen können schnell zu Diskussionen darüber führen, wie einheitlich die Musterbildung in einzelnen Vektorfeldern ist und damit die Stabilität unterschiedlicher Systeme (hier Fotos) zu diskutieren.
Schliesslich kann auch der umgekehrte Weg gegangen werden. Gelingt es den Schülerinnen und Schülern ein Bild (oder Foto) anzufertigen, dass zu einem gewünschten Verhalten in Bezug auf den Linienverlauf einzelner Grafiken führt?
Primzahlen bilden eine Grundlage der Mathematik und sind deshalb auch auf der Sekundarstufe I ein Thema. Allerdings beschränkt sich die Auseinandersetzung auf dieser Stufe häufig darauf, die Primzahlen mithilfe des Siebes von Eratosthenes zu gewinnen und diese anschliessend für die Primfaktorzerlegung von natürlichen Zahlen zu verwenden. Dabei bietet sich das Thema auf gut dafür an, die Berechnung von Primzahlen mit dem Computer und zu thematisieren und dabei über die Optimierung von Algorithmen zu diskutieren.
Naiver Ansatz
In einem ersten Versuch verwenden wir einen ganz einfachen Algorithmus. Wir nehmen zuerst einmal an, jede Zahl sei eine Primzahl. Dann teilen wir diese Zahl durch alle Zahlen, die kleiner als die gewünschte Zahl selbst sind. Sollten bei diesen Divisionen der Rest irgendwann 0 sein, verwerfen wir die Annahme, dass es sich um eine Primzahl handelt.
Ob es sich bei einer Zahl um eine Primzahl handelt, kann einfach geprüft werden.
Dieser einfache Algorithmus funktioniert für Zahlen > 1 gut, ist aber sehr langsam, da viele unnötigen Berechnungen durchgeführt werden. Dies sieht man, wenn man alle Zahlen aufführt, welche bei den Divisionen verwendet werden.
In der einfachen Version des Algorithmus zur Primzahlenbestimmung steigt der Rechenaufwand linear an.
Es fällt sofort auf, dass viele unnötige Rechenschritte durchgeführt werden, weil beispielsweise alle geraden Zahlen (ausser der 2) sicherlich keine Primzahlen sind. Trotzdem wird beispielsweise bei der 50 noch lange weitergerechnet, selbst wenn schon früh klar ist, dass es sich nicht um eine Primzahl handeln kann.
Möglichst frühzeitiger Abbruch
Die Vermeidung unnötiger Rechenschritte bedingt die Neuformulierung des Algorithmus. Dafür muss die for-Schleife in Snap! durch eine while-Schleife ersetzt werden. Allerdings steht diese nicht standardmässig zu Verfügung, weshalb diese zuerst programmiert werden muss. In Snap! funktioniert dies wie folgt:
Der neue while-Block wird rekursiv programmiert.
Mit der durch die while-Schleife mögliche Anpassung des Algorithmus werden unnötige Rechenschritte verhindert.
Dies wird deutlich, wenn man sich noch einmal alle Zahlen anschaut, die nun in den notwendigen Divisionen verwendet werden.
Im Gegensatz zum ersten Versuch werden nur noch bei Primzahlen selbst viele Berechnungen durchgeführt.
Bei allen Zahlen, welche keine Primzahlen sind, wird die Berechnung schon sehr früh abgebrochen. Dies ist auch deshalb von Interesse, weil Primzahlen seltener werden, wenn man grössere Zahlen untersucht. Das wird bereits in der oben abgebildeten Grafik deutlich:
Um das Programm weiter zu optimieren, ist eine mathematische Betrachtung von Teilern notwendig.
Eigenschaften von Teilern
Die Teiler einer bestimmten Zahl treten immer paarweise auf, wobei es vorkommen kann, dass die beiden Teiler gleich gross sind:
Teiler von 12: 1 und 12, 2 und 6, 3 und 4.
Teiler von 25: 1 und 25, 5 und 5.
Zu jedem grossen Teiler gehört also ein entsprechend kleiner Teiler. Bei der Quadratzahl 25 ist gut ersichtlich, dass zum Teiler 5 kein Teiler vorhanden ist, der grösser als 5 ist, sonst müsste es sich, z.B. bei 5 x 6 um eine grössere Zahl handeln.
Damit ist es möglich, die zu überprüfenden Teiler weiter einzuschränken. Statt bei Primzahlen bis zu n-1 zu prüfen, reicht eine Prüfung bis zur Quadratwurzel von n aus.
Die Änderung im Algorithmus beschränkt sich dabei auf das Abbruchkriterium in der while-Schleife.
Dadurch verringert sich der Rechenaufwand bei den bisher aufwändigen Primzahlen noch einmal dramatisch, was die Auflistung der benötigten Teiler zeigt:
Gegenüber der ursprünglichen Variante hat sich die Anzahl der Rechenschritte drastisch reduziert.
Eine weitere Optimierung ist möglich, indem man nicht mehr alle Zahlen als Teiler verwendet, sondern nur noch die Primzahlen selbst. Dabei stellt sich aber die Frage, woher dann diese Primzahlen im Voraus bekannt sein sollen.
Nimm 2
Mit einem entsprechenden höheren Aufwand beim Schreiben des Algorithmus ist es tatsächlich möglich, die Primzahlen aus sich selbst heraus zu erzeugen. Als Voraussetzung wird dazu nur eine Liste mit dem Element 2 benötigt. Alle weitere Primzahlen kann das folgende Programm daraus generieren.
Während die Zeit für die Berechnung insbesondere für grössere Primzahlen weiterhin sinkt, ist der dafür notwendige Algorithmus wesentlich komplexer geworden.
Nach dem ersten Durchlauf des Programms besteht die Liste aus den Zahlen 2 und 3, denn es wird bis maximal zur Zahl 3 geprüft und diese ist nicht durch 2 teilbar. Nach dem zweiten Durchlauf sind die Primzahlen 5 und 7 dazugekommen, denn das Programm prüft nun bis 8. Der nächste Durchlauf prüft bis 48 und liefert als letzte Primzahl 47 zurück. Bei jedem weiteren Durchlauf wird der untersuchte Zahlenraum grösser und damit die Liste der Primzahlen länger. So können aus der 2 alle weiteren Primzahlen generiert werden.
Nebst der schnelleren Berechnung hat dieser Ansatz auch den Vorteil, dass die Berechnung der Primzahlen jederzeit angehalten und später wieder fortgesetzt werden kann. Denn alles, was das Programm dafür benötigt, ist die Liste mit den Primzahlen, aus welcher es die grösste Primzahl ausliest, um weitere Berechnungen anzustellen.
Im gezeigten Beispiel darf der Computer dazu nicht ausgeschaltet werden, da sich die Liste im flüchtigen Speicher befindet. Die geführte Liste könnte aber auch auf eine Harddisk geschrieben werden, wodurch das Programm seine Arbeit auch nach einem tatsächlichen Unterbruch wieder aufnehmen könnte.
Laufzeiten
Die Laufzeiten der unterschiedlichen Varianten unterscheiden sich dramatisch. Gemessen wurde jeweils die Zeit, welche zur Berechnung der ersten n Primzahlen notwendig war.
Die Laufzeiten zur Berechnung von Primzahlen steigen in Abhängigkeit vom verwendeten Algorithmus unterschiedlich stark an.
Während bei der einfachsten Version die Laufzeiten immer stärker zunehmen, verhalten sich diese in der optimierten Fassung zumindest im untersuchten Zahlenbereich fast linear. Diese Unterschiede sind bei kleinen Zahlenbereich noch klein, werden aber schnell immer grösser.
Anwendung im Unterricht
Die vorgestellten Ansätze können nicht nur dafür verwendet werden, bei grösseren Zahlen herauszufinden, ob es sich dabei um Primzahlen handelt. Sie bieten auch eine gute Gelegenheit dafür, mit den Schülerinnen und Schülern die Notwendigkeit der Optimierung von Programmen zu besprechen.
Diese spielt bei vielen Computeranwendungen eine wichtige Rolle, nicht nur weil dadurch Energie und die damit verbundenen Kosten eingespart werden können, sondern dadurch werden auch Anwendungen möglich, die vorher aus Zeitgründen nicht praktikabel umgesetzt werden konnten.
Die Sashiko-Verziertechnik wurde in Japan verwendet, um schadhafte Textilien auszubessern. Interessant an Nähtechnik ist, dass sie in der Form von Binärzahlen dargestellt werden kann. Aufgegriffen hat das Thema Jens Mönig im Juni 2021.
Die Grundlagen
Traditionell werden Stiche gleicher Länge verwendet (Sashiko heisst auf Japanisch Stäbchen), wobei der Faden einmal auf der Ober- und einmal auf der Unterseite zu sehen ist. Dabei kann man jeweils mit einem Unter- oder Oberstich beginnen. Es gibt also zwei Möglichkeiten (Binärsystem). Führt man nun mehrere solcher Stichfolgen horizontal und vertikal aus, können ganz unterschiedliche Muster entstehen.
Beispiele für Sashiko-Muster: Bei der 1 (rot) beginnt man mit einem Oberstich, bei der 0 (blau) mit einem Unterstich.
Experimente mit verschiedenen Bit-Folgen können mit dem Snap!-Beispiel von Jens Mönig durchgeführt werden: Hitomezashi Sashiko.
Zufällige Muster
Im Dezember 2021 griff Ayliean MacDonald von Numberphile das Thema (siehe YouTube) und überlegte sich, ob solche Muster nicht auch zufällig erzeugt werden könnten. Dabei interessiert sie sich vor allem dafür, wie viel Ordnung, respektive Chaos bei unterschiedlich zufälligen Bitmustern entstehen.
Beispiel für ein Sashiko-Muster, bei dem mit 50%-Wahrscheinlichkeit mit einem Oberstich begonnen wird.
In Abweichung von der Anzahl der Stiche können so sehr viele unterschiedliche Muster entstehen, ohne dass diese von Hand „programmiert“ werden müssen.
Vom Quadrat zum Dreieck
Nebst der Einführung des Zufalls erweitert MacDonald die Sashiko-Muster auch, indem sie statt einem Quadrat ein gleichseitiges Dreieck als Ausgangsform verwendet. Dadurch entstehen Muster aus der Kombination von drei Stichrichtungen.
Bei der Verwendung eines Dreiecks als Grundfigur ergeben sich ebenfalls interessante Zufallsmuster.
Die Programmierung
Die Programmierung eines Stiches bestehend aus Ober- und Unterstich oder umgekehrt bildet die Grundlage der sowohl der Quadrat- als auch der Dreiecksmuster.
Ob mit einem Ober- oder Unterstich begonnen wird, ist vom Wahrheitswert starton abhängig.
Darauf aufbauen wird dann die weitere Programmierung vorgenommen. Beim Quadrat ist diese recht einfach, denn es müssen nur horizontale und vertikale Stichfolgen programmiert werden.
Der Block zeichnet eine Reihe von Stichmustern entweder in horizontale oder vertikale Richtung.
Über den if-Block wird jeweils festgelegt, ob mit einem Ober- oder Unterstich begonnen wird.
Schliesslich wird das ganze Programm für das Quadrat zusammengesetzt, indem der beschriebene Block zweimal aufgerufen und anschliessen noch ein Rahmen um das Bild (Vieleck) gezeichnet wird.
Bei der Programmierung des quadratischen Musters muss der Hauptblock zweimal mit Parametern für unterschiedliche Richtungen aufgerufen werden.
Die Programmierung des zufälligen Dreiecksmusters gestaltet sich ein weniger komplizierter, da dabei nicht nur drei Richtungen berücksichtigt werden müssen, sondern die Länge der einzelnen Stichfolgen laufend abnimmt.
Im Gegensatz zum Quadratmuster weisen die Stichfolgen beim Dreiecksmuster unterschiedliche Längen auf.
Ist der Block einmal programmiert, kann er aus dem Hauptprogramm von den unteren beiden Dreiecksecken aufgerufen werden, wobei die entsprechende Ausrichtung festgelegt werden muss.
Der Block zum Zeichnen der Stichfolgen muss beim Dreieck dreimal mit unterschiedlichen Winkeln aufgerufen werden.
Im Unterricht können in Abhängigkeit von der zu Verfügung stehenden Zeit unterschiedliche Aspekte in den Vordergrund rücken.
Kulturell-ästhetischer Aspekt
Ausgehend von kleinen Zeichnungen, die manuell ausgeführt werden, steht hier die Ästhetik und die Anwendung der Muster in der japanischen Kultur im Vordergrund. Das hier beschriebene Programm und das Original von Jens Mönig werden dann zur Generierung weiterer Muster verwendet, ohne dass dabei auf die Details der Programmierung eingegangen werden muss.
Mathematisch-technischer Aspekt
Ausgehend von der Stichfolge und deren binären Repräsentation wird die Programmierung schrittweise aufgebaut. Ob dabei die determinierte Variante von Jens Mönig oder die hier vorgestellte zufallsgesteuerte Version in den Fokus gerückt wird, ist eher nebensächlich. Bei entsprechender Ausstattung kann auch eine Umsetzung in TurtleStich in Betracht gezogen werden.
Informatischer Aspekt
Ausgehend von der Programmierung der Zufallsvariante können verschiedene Aspekte der Programmierung wie Unterfunktionen und Refaktorisierung die zentrale Rolle einnehmen, denn an die Programmierung des Zufallsprogrammes müssen sich die Schülerinnen und Schüler auf jeden Fall herantasten können. Inwieweit dies möglich ist, hängt von der Vorerfahrung und der zu Verfügung stehenden Zeit ab.
Das Beispiel der Sashiko-Muster zeigt sehr schön, wie wesentliche Aspekte der Informatik mit anderen Fächern unter ästhetischen Gesichtspunkten verknüpft werden können. Dabei greift das Beispiel in idealer Weise Hans Aeblis didaktische Forderung nach dem Wahren, Schönen und Guten im Unterricht auf.
Wenn man Snap! verwenden möchte, um wie bei Logo eine Figur auf den Bildschirm zu zeichnen, brauchen Anfänger eine Weile, um den Zusammenhang zwischen den einzelnen Befehlen und der Auswirkung auf die Bewegungen zu verstehen. In der Regel erarbeiten sie sich dieses Verständnis dann im „Versuch und Irrtum“-Verfahren, was nicht nur viel Zeit in Anspruch nimmt, sondern je nach Komplexität der Aufgabe auch das Lernen verhindert.
Eine Möglichkeit hier die Einstiegshürden zu senken, sind sogenannte Cheatsheets, also Zusammenfassungen der wichtigsten Blöcke, oder Programme Cards, kurze Programmbeispiele. Beide eignen sich hervorragend für den Unterricht. Leider ist aber das Dokumentieren von Befehlsblöcken und das Zusammenstellen solcher Programmieranleitungen aufwändig.
Animation als Dokumentation
Für Snap! gibt es nun dank des Snap!-Nutzers pumpkinhead einige interessante neue Blöcke, die man zumindest für die Dokumentation einfacherer Programmieraufgaben verwenden kann. Dabei kann ein in Snap! geschriebenes Programm so ausgeführt werden, dass es gleichzeitig erklärt, welche Befehle es abarbeitet. Das Beispiel der Konstruktion eines Quadrats soll zeigen, wie dies aussieht.
Während Snap! ein Quadrat zeichnet, zeigt es, welche Befehle für jeden einzelnen Schritt benötigt werden.
In Snap! selbst setzt man folgende Blöcke dafür ein, um das Programm auszuführen.
Mit wenigen Blöcken kann eine Selbstdokumentation für Snap! erzeugt werden.
Die auszuführenden Blöcke werden zuerst als Liste abgespeichert und dann mit einem „for each“-Block schrittweise abgearbeitet. Ein Arbeitsschritt besteht darin, einen Befehl ausführen und ihn im Anschluss anzeigen zu lassen. Der „wait“-Block sorgt dafür, dass genügend Zeit für das Lesen der angezeigten Blöcke bleibt.
Wenn ein Programm (wie oben) Variablen enthält, muss man diese im Block „.. put after …“ noch einmal deklarieren, da die so ausgeführten Blöcke keinen direkten Zugriff auf die normalen Variablen haben. Damit geht auch die Einschränkung einher, dass die Werte von Variablen während der Ausführung des Scripts nicht geändert werden können, die Variablen werden also als Konstanten behandelt.
Snap! zeigt, wie man eine Figur zum Satz des Pythagoras zeichnen kann.
Die gezeigten Befehle dienen als Grundlage für einen rekursiven Block, mit dem ein sogenannten Pythagorasbaum gezeichnet werden kann.
Möchte man ein solches Beispiel nicht in Snap! direkt laufen lassen, kann man den Bildschirm mit einem geeigneten Programm aufzeichnen lassen und eine Videodatei zu Verfügung stellen oder aber die so erstellte Videodatei mit einem entsprechenden Webdienst in ein animiertes GIF umwandeln.
Ein einfaches Beispiel kann über den folgenden Link direkt in Snap! aufgerufen werden: Selbstdokumentation.
Anwendung im Unterricht
Im Unterricht kann das vorgestellte Verfahren auf zwei Arten verwendet werden. Einerseits wie beschrieben zur Dokumentation insbesondere von Bewegungsabläufen, andererseits kann die Lösung auch zum Finden von Fehlern in etwas längeren Programmen benutzt werden. Denn die Verknüpfung von schrittweiser Abarbeitung mit dem direkten Anzeigen des verantwortlichen Befehls nach der Ausführung, erlaubt eine Unmittelbarkeit, die sonst beim Programmieren kaum zu erleben ist. Falls Lernende diesen zweiten Weg beschreiten sollen, ist es von Vorteil, die entsprechende Umgebung vorzubereiten. Dazu gehört auch die Deklarierung allfälliger Variablen.
Mit dem Computer erzeugte Kunst auf der Basis von sich wiederholenden Elementen, eignet sich für den Einstieg in die Programmierung, weil diese vergleichsweise einfach programmiert werden können. Sobald aber etwas höhere Anforderungen an die Ästhetik dieser Werke gestellt werden, scheitern Schülerinnen und Schüler der Sekundarstufe I schnell an Details. Aus diesem Grund werden hier in Snap! geschriebene Blöcke vorgestellt, welche als Starthilfe gedacht sind und hoffentlich zu visuell ansprechenden Ergebnissen führen.
Die Grundidee
Die Grundidee solcher Kunstwerke lässt sich am besten anhand von Diagonalen innerhalb eines Quadrates veranschaulichen, wobei die Ausrichtung solcher Diagonalen zufällig ausgewählt werden soll. Obwohl das Beispiel sehr einfach ist, es gibt nur die beiden Elemente / und \ entstehen bei genügend Wiederholungen interessante Muster. Schon bei vier Feldern entstehen 16 = 2 x 2 x 2 x 2 Muster.
Alle Möglichkeiten bei einem 4×4-Feld wenn Diagonalen als Elemente eingesetzt werden.
Viele Grundelemente können sogar in vier Richtungen gedreht werden, wodurch die Anzahl der Möglichkeiten bei vier Feldern auf 4 x 4 x 4 x 4 = 256 ansteigt.
Einzelne Elemente
Beim Entwerfen einzelner Elemente, aus denen später das Raster aufgebaut wird, lohnt es sich, zuerst von Hand auf Papier zu arbeiten. So kann schnell ausprobiert werden, ob eine Wiederholung solcher Elemente zu einem interessanten Muster führt.
Hat man ein interessantes Muster gefunden, kann man dies in Snap! dank der Turtlegrafik mit wenigen Befehlen programmieren.
Mit wenigen Befehlen können alle Figuren, deren Teilelemente Geraden sind, programmiert werden.
Schwierig ist allenfalls die Berechnung der Winkel und Streckenlängen für die einzelnen Teilelemente. Falls die Schülerinnen und Schüler beispielsweise den Satz des Pythagoras noch nicht kennen, kann man ihnen eine entsprechende Hilfe zu Verfügung stellen.
Diese Grafik erleichtert die korrekte Programmierung von Schrägen im Grundraster.
Ob die Besprechung von trigonometrischen Funktionen auf der Sekundarstufe I sinnvoll ist, hängt auch davon ab, wie viel Zeit zu Verfügung stehen. Zumindest die Berechnungen können die Lernenden aber durchführen, da die entsprechenden Funktionen auf den handelsüblichen Schultaschenrechnern zu Verfügung stehen.
Einpassen in ein Raster
Damit es später nicht zu Schwierigkeiten beim Einpassen der Elemente in ein Raster kommt, sollten von Anfang an Variablen für die entsprechenden Strecken in den Figuren verwendet werden. Ausserdem lohnt es sich, die einzelnen Befehlsschritte in einen eigenen Block zu verpacken. Am Beispiel der Diagonalen soll dies aufgezeigt werden:
Die Diagonale selbst, kann mit zwei Blöcken programmiert werden.
Für das Testen bereits vorhandener oder selbst geschriebener Figuren steht ein Block zu Verfügung mit dem man diese testen kann.
Die for-Schleife am Anfang des eigenen Blocks dreht die Figur in die zwei möglichen Positionen. Wenn es vier Positionen gibt, muss der Zufallszahlenblock entsprechend angepasst werden.
Damit der Block vor dem Einsatz in einem grösseren Raster überprüft werden kann, steht eine entsprechende Testumgebung zu Verfügung. Diese wird mit folgendem Block aufgerufen:
Dieser Block erlaubt es, einzelne Figuren bequem zu testen.
Beim Testen ist darauf zu achten, dass die Grösse der Quadratseite mit dem Parameter #1 übergeben wird. Die Grösse der Bildschirmausgabe kann mit size (verändert die Bühnengrösse) und border (verändert die Breite des Rahmens) entsprechend angepasst werden.
Funktioniert alles wie gewünscht, kann der getestete Block im Raster verwendet werden. Hierzu steht ebenfalls ein Block zu Verfügung, weil das richtige Setzen der Werte den Lernenden aufgrund des Koordinatensystems von Snap! oft Schwierigkeiten bereitet. Bei Snap! liegt der Nullpunkt nämlich in der Mitte des Bildschirms, was ein bequemes Arbeiten mit negativen Zahlen zulässt, im Falle eines Rasters für generative Kunst aber eher hinderlich ist.
Dieser Block übernimmt die Berechnung der Koordinaten für die einzelnen Teilflächen.
Dem Block muss die Anzahl der Quadrate in x- und y-Richtung und die Länge einer Quadratseite übergeben werden. Speichert man vorher die Dimensionen des Bildschirms und gibt an, wie viele Teilfelder man in die entsprechende Richtung haben möchte, werden die entsprechenden Werte (size and step) automatisch berechnet. Wie aus den gleichen Angaben für die x- und y-Dimension zu sehen ist, berechnet der Block im vorgestellten Programm jeweils ein quadratisches Kunstwerk.
Bei diesem Beispiel wurden 100 Diagonalen in jeweils einer der beiden möglichen Ausrichtungen gezeichnet.
Einfärben der Kunstwerke
Da nur aus Linien bestehende Beispiele manchmal etwas schlicht wirken, können die erzeugten Bilder mit einem entsprechenden Befehl eingefärbt werden. Dazu springt der Block an eine beliebige Stelle im Bild und wenn der dortige Pixel weiss ist, wird mit dem fill-Block die Umgebung bis zur Begrenzung (schwarze Linien) ausgemalt.
Der Block färbt eine Teilelemente einer Zeichnung mit einer beliebigen Farbe aus einer gegebenen Farbpalette ein.
Beim Einfärben ist unbedingt darauf zu achten, dass das entsprechende Objekt (Sprite) vorher versteckt wird, sonst werden womöglich einzelne Bildteile falsch eingefärbt.
Das bereits vorgestellte Beispiel wurde mit den Farben aus einer entsprechenden Palette eingefärbt.
Der Baukasten
Aktuell können in Programm bereits 15 Grundelemente (mit den entsprechenden Drehungen) eingesetzt werden. Eine Übersicht der verschiedenen Elemente kann hier als PDF heruntergeladen werden:
Zwei weitere Beispiele sollen zeigen, was mit den vorgefertigten Elementen möglich ist.
Farbige Quadrate unterschiedlicher Grösse fügen sich zu einem Gesamtbild zusammen.
Bei diesem Beispiel wurde darauf verzichtet, das Bild nachträglich einzufärben, da der Befehl Nr. 4 bereits farbige Quadrate produziert.
Dieses Bild entstand durch das Weglassen von Teilstrecken in einem regelmässigen Muster.
Der Block Nr. 6 zeichnet Rhomben, deren Seiten zufallsgesteuert erzeugt werden. Je kleiner der Wert (hier: 0.7), desto mehr Lücken entstehen im Bild, wodurch grössere zusammenhängende Flächen erzeugt werden.
Kombination von Blöcken
Der „draw grid“-Block ist so programmiert, dass ihm auch mehrere Blöcke in einer Liste übergeben werden können. Pro Teilquadrat wird dann wieder jeweils einer dieser Blöcke zufällig ausgewählt. Damit erhöht sich die Vielfalt der mit dem Programm generierbaren Kunstwerke weit über die blosse Einzelverwendung der 15 vorgegebenen Blöcke. Während einige Kombinationen durch grosse zusammenhängende Flächen eher langweilig wirken, führen andere Kombinationen zu äusserst interessanten unregelmässigen Mustern.
Kombination der Blöcke 6 (mit einer zufälligen Wahrscheinlichkeit zwischen 0.7 und 1.0) und 15.
Während der Block 6 die schon erwähnten Rhomben mit fehlenden Seiten generiert, erzeugt der Block 15 eine Pfeilfigur.
Für dieses Bild wurden die Blöcke 5 (mit einer zufälligen Wahrscheinlichkeit zwischen 0.7 und 1.0) und 10 kombiniert.
Das Programm
Das Programm kann unter folgendem Link aufgerufen werden: Repeating Elements. Wird es über die grüne Flagge gestartet, generiert es automatisch ein Diagonalenbild. Möchte man weitere Beispiele erzeugen, muss man in den Editiermodus wechseln. Dort präsentiert das Programm 6 verschiedene Objekte:
Demonstration erzeugt ein Diagonalenbild, wobei die Anzahl der Felder über „set step“ und die Auflösung der Grafik über „set value: Stage size“ gesteuert werden kann.
Experiments erlaubt die Durchführung eigener Experimente, wobei einer der 15 vorgefertigten Blöcke aus dem „Motion“-Bereich verwendet werden kann.
Testing ermöglicht wie schon beschrieben das Ausprobieren neuer Blöcke, um sicherzustellen, dass diese wunschgemäss funktionieren.
Blocks erklärt die Verwendung einiger der im Programm verwendeten Blöcke.
Tricks gibt einige Tipps zur Verwendung des Programms.
Examples erzeugt zufallsgesteuert ein Kunstwerk, indem es bis zu vier verschiedene Elemente kombiniert. Welche Elemente jeweils verwendet wurden, kann man über die Variable „elements in use“ abfragen.
Per Zufall wurden die Blöcke 6, 9 und 13 ausgewählt, um dieses Bild zu erzeugen.
Dieser Beitrag ist ein Entwurf zum Workshop „Zahlen, Daten und Medien“ am Open Education Day vom 24. April 2021. Er dient als Arbeitsgrundlage und Dokumentation und wird nach der Durchführung noch einmal überarbeitet.
Ausschreibung des Workshops
Mit Hilfe der blockbasierten Programmierumgebung Snap! (https://snap.berkeley.edu) lernen die Teilnehmenden Möglichkeiten kennen, wie informatische Kenntnisse in den Bereichen Zahlen, Daten (Visualisierungen) und Medien (Musik, Grafik und Video) mit Lernenden der Sekundarstufe I auf eine motivierende Weise umgesetzt werden können (siehe auch https://gigers.com/blog/?s=snap). Die vorgestellten Beispiele können von den Teilnehmenden ausprobiert und erweitert werden, dabei sollen theoretische Kenntnisse, praktische Anwendung und kreative Umsetzung verknüpft werden.
Snap! ist eine Programmiersprache, welche nach dem Prinzip „low floor – high ceiling“ entwickelt wurde, damit ermöglicht sie einerseits einen leichten Einstieg, erlaubt aber auch die Umsetzung fortgeschrittener Programmiertechniken. In den USA wird Snap! u.a. im Leistungskurs „The Beauty and Joy of Computing“ (https://bjc.edc.org) eingesetzt und mit „Informatik mit Snap!“ (http://ddi-mod.uni-goettingen.de/InformatikMitSnap.pdf) existiert auch ein deutsches Lehrmittel für die Hochschulstufe.
Planung für den Workshop
Geplant ist eine Aufteilung des Workshops in drei Abschnitte:
Zahlen und Daten
Am Beispiel eines Datensatzes wird gezeigt, wie Informationen in Snap! visualisiert werden können. Wenn möglich werden noch weitere Beispiele gezeigt.
Töne erzeugen und Geräusche visualisieren
Aus ein paar Zahlen entstehen Töne und über das Mikrofon werden Geräusche visualisiert.
Grundlagen der Bildbearbeitung
Bilder sagen mehr als tausend Worte und bestehen meist aus noch mehr Zahlen. Diese werden mit den in den ersten beiden Teilen erarbeiteten Techniken bearbeitet.
Wie viel davon in den 90 Minuten Workshop umgesetzt werden kann, wird sich zeigen. Alle Beispiele werden aber in den folgenden Abschnitten detailliert dokumentiert.
Teil 1: Zahlen und Daten
Am Beispiel eines Datensatzes zu Wolkenkratzern (via Corgis-Edu) wird gezeigt, wie man mit vorhandenen und selbstgeschriebenen Blöcken (stehen zu Verfügung) einen Blick in grössere Datensätze werfen kann.
Mit einigen Blöcken wird der Datensatz darauf untersucht, aus welchen Materialien die Wolkenkratzer gebaut wurden und wie häufig die entsprechenden Materialien zum Einsatz kamen. Dazu werden folgende Blöcke verwendet:
Mit diesen Befehlen können die Wolkenkratzerdaten auf die Baumaterialien der Gebäude hin analysiert werden.
Bei den grauen Blöcken handelt es sich um zusätzliche Blöcke, die orangen Blöcke stehen nach dem Import der Bibliotheken „Frequency Distribution Analysis“ und „List utilities“ zu Verfügung.
Im Workshop dient diese erste Übung auch dazu, mit ersten Merkmalen der Snap!-Entwicklungsumgebung vertraut zu werden. Mehr dazu ist im Beitrag „Interaktive Erklärungen mit H5P Image Hotspots“ zu erfahren.
Im nächsten Schritt geht es darum, die Wolkenkratzer auf einer Weltkarte zu visualisieren. Die Programmierung dieses Beispiels erfolgt in den folgenden Schritten:
Weltkarte als Hintergrund festlegen;
Den eigenen Standort anzeigen;
Wolkenkratzer auf der Weltkarte eintragen;
Einzelne Wolkenkratzer gestalten.
Im Gegensatz zu den im Workshop durchgeführten „Live Coding“ werden hier bei der schriftlichen Dokumentation schon die fertigen Blöcke dargestellt. Auf einen schrittweisen Aufbau der einzelnen Befehlsblöcke wird hier also verzichtet.
Weltkarte als Hintergrund festlegen
Die Befehle zur Darstellung der Weltkarte werden aus der Bibliothek „World Map“ importiert. Anschliessend kann die Weltkarte auf der Bühne dargestellt werden.
Um eine Karte darzustellen, müssen die entsprechenden Parameter gesetzt werden.
Folgende Parameter können für die Karte gesetzt werden:
style: bestimmt das Aussehen der Karte;
zoom: bestimmt, wie gross der Ausschnitt der gezeigten Karte ist, wobei bei 0 die ganze Welt und bei 15 die Nachbarschaft gezeigt werden;
set to: bestimmt das Zentrum der Karte (die Voreinstellung 0, 0 ist meistens nicht optimal)
Anschliessend muss sich die Bühne mit „switch to costume“ die entsprechende Karte noch überwerfen.
Das Setzen dieser Blöcke belohnt einem mit einem Hintergrund, der etwa so aussieht:
Das Beispiel zeigt den Stil „watercolor“.
Mehr zu den Möglichkeiten der Bibliothek „World Map“ ist im Beitrag „Landkarten mit Snap!“ beschrieben.
Damit das Programm letztlich funktioniert, muss später noch folgender Block hinzugefügt werden:
Diese Befehle sorgen dafür, dass das Aussehen der Karte von einem anderen Objekt aus gesteuert werden kann.
Damit kann die Karte auf den Befehl von anderen Objekten hin angepasst werden, wobei hier das Werkzeug der Mitteilungen verwendet wird. Bei komplexeren Programmen können damit Abläufe einfach gesteuert werden.
Das ist aber erst möglich, nachdem der nächste Teil des Programms geschrieben wurde.
Den eigenen Standort anzeigen
Damit der eigene Standort auf der Karte angezeigt werden müssen erst einmal die entsprechenden Koordinaten (Länge und Breite) bekannt sein. Am schnellsten findet man diese mit Google Maps, indem man auf der Karte am gewünschten Ort einen Rechtsklick mit der Maus ausführt. Dabei muss man allerdings beachten, dass die Reihenfolge bei Google Maps und Snap! nicht gleich ist.
Den eigenen Standort, kann man mit den Blöcken „x of longitude“ und „y of latitude“ auf der Karte eintragen.
Die oben abgebildeten Blöcke werden nicht mehr im Bühnenbereich ausgeführt, sondern in einem eigenen Objekt.
Dabei werden folgende Befehle abgearbeitet:
den Bildschirm löschen;
die Stiftdicke auf 30 setzen;
zur gewünschten Koordinate gehen;
den Stift auf das Papier setzen;
einen Kreis zeichnen;
den Stift von Papier abheben.
Die unteren vier Blöcke dienen dazu den Ausschnitt der Karte anzupassen, denn wenn man in der Schweiz lebt, ist der Standort auf einer Weltkarte nicht besonders aussagekräftig. Je nach Genauigkeit der eingegebenen Koordinaten kann man den eigenen Standort so auch metergenau auf der Karte eintragen lassen und die nähere Nachbarschaft virtuell bewundern.
Wolkenkratzer auf der Karte eintragen
Während bei Menschen bei mehrfacher Ausführung der gleichen Tätigkeit schnell einmal Langeweile auftauchen kann, sind solche repetitive Aufgaben das Spezialgebiet von Computern. Und deshalb gilt hier: Was einmal gelungen ist, kann nun viele Male ausgeführt werden.
Für die Darstellung des Wolkenkratzers werden im Wesentlichen die gleichen Befehle benötigt, wie bei der Darstellung eines einzelnen Standorts
Im Wesentlichen werden hier die gleichen Befehle wie bei der Eintragung des Einzelstandorts verwendet, nur wird jetzt mit einer „forEach“-Schleife durch eine Liste iteriert. Die etwas komplexeren Befehle ergeben sich aus der von den Eigenschaften der einzelnen Objekte abhängigen unterschiedlichen Darstellung der Wolkenkratzer auf der Karte.
Einzelne Wolkenkratzer gestalten
Um insbesondere die Farbgebung noch etwas besser zu verstehen, lohnt es sich auch hier, zuerst wieder einige Experimente durchzuführen. Die folgenden Blöcke leisten genau dies:
Mit diesen Blöcken können unterschiedliche Farbtöne erzeugt werden.
Um die Farbe anzupassen, kommt eine Variante des HSV-Farbmodels zum Einsatz, wobei mit dem H-Wert (hue) der Farbwert selbst beeinflusst wird. In Snap! wird dafür ein Bereich von 0 bis 100 verwendet.
Mit den entsprechenden Parametern können Regenbogenfarben erzeugt werden.
Hat man die Koordinaten für die Karten entsprechend eingestellt, kann man sich nur beispielsweise die Wolkenkratzer in New York anzeigen lassen.
Die im Datensatz enthaltenen Wolkenkratzer werden gemäss den vorgenommenen Einstellungen angezeigt.
Weitere Beispiele für Visualisierungen
Ohne weiter auf die Programmierung einzugehen, sollen hier noch die Resultate weiterer Visualisierungen gezeigt werden, die mit Snap? erzeugt wurden. Siehe dazu auch „Höhenmodell mit Snap„.
Die Grafik zeigt an, wie viele Personen in einem bestimmten Zeitraum jeweils geboren wurden oder gestorben sind.
Die CO2-Konzentration in der Atmosphäre wird über die letzten rund 800’000 Jahre aufgetragen. Der rasante Anstieg in den letzten Jahren ist am rechten Rand der Grafik klar zu erkennen.
Es kann sich aber auch lohnen, zusammen mit den Lernenden selbst Daten zu erheben, z.B. zum Schulweg, Medienkonsum etc.
Musikalische Experimente mit Snap!
In diesem Teil des Workshops wird zuerst gezeigt, wie aus Zahlen Töne entstehen können und dann soll das Mikrofon zum Einsatz kommen, um Geräusche zu visualisieren.
Von der Zahl zum Ton
In Snap! werden Musikdateien als Listen mit Zahlen zwischen -1 und 1 repräsentiert, wobei pro Sekunde in der Regel mehr als 40’000 Zahlen benötigt werden. Im Gegensatz zu den im Teil „Zahlen und Daten“ verwendeten Daten des Workshops, sind die Datensätze nun zwar einfacher strukturiert, dafür aber wesentlich grösser.
In einem ersten Schritt soll untersucht werden, was passiert, wenn einfach genügend viele Zufallszahlen erzeugt und diese dann abgespielt werden.
Da die Zahlen völlig zufällig erzeugt werden, entsteht ein sogenanntes Weisses Rauschen.
Das entstehende Weisse Rauschen unterscheidet sich von einem Ton dadurch, dass keinerlei Ordnung zu erkennen ist. Visualisieren lässt sich dies mit einem Block aus der Bibliothek „Audio Comp“.
Der Block bietet eine einfache Möglichkeit, einen Blick in Audiodateien zu werfen.
Ordnung kann man auch als Wiederholung von bestimmten Mustern verstehen. Aus der Unordnung entsteht also Ordnung, indem wir einen kleinen Teil der Unordnung mehrfach wiederholen.
Die folgenden Befehle zeigen die Schritte auf, die zum Ziel führen.
Mit einer Variablen und wenigen Befehlen bringt man durch Wiederholung Ordnung in das Chaos. Diese Ordnung ist sowohl hör- als auch sichtbar.
Der Ablauf wird in den oben gezeigten Blöcken wieder verdichtet dargestellt. Im Wesentlichen wird aber einfach ein Zahlenblock von 441 Zahlen 100-mal wiederholt. Die Blöcke „columns of“ und „flatten of“ werden nur benötigt, damit Snap! jeweils eine Liste im erwarteten Format vorfindet.
Nachdem es gelungen ist, einen äusserst reichen Ton zu generieren, kann man sich noch Gedanken darüber machen, wie die Tonhöhe und Tondauer angepasst werden können. Die Tondauer wird einfach durch die Anzahl aller Zahlen bestimmt und diese wiederum ist abhängig von der Länge des „Chaos“ und der Anzahl der Repetitionen. Wenn also die Zahl der Repetitionen vergrössert oder verkürzt wird, verändert sich auch die Tondauer.
Für die Tonhöhe ist die Zahl der Repetitionen innerhalb eines Zeitintervals (beispielsweise in Hertz gemessen) ausschlaggebend und diese wird durch die Länge des „Chaos“ bestimmt.
Wenn also in der „sound“-Variable nur wenige Zahlen gespeichert werden, dann führt dies innerhalb einer Sekunde zu vielen Wiederholungen und damit zu einer grossen Frequenz und einem hohen Ton.
Die Tonhöhe und -dauer kann mittels grundlegender Arithmetik gesteuert werden.
Damit ist es nun möglich, Töne beliebiger Länge und Frequenz zu erzeugen. Allerdings ist die Nutzung noch nicht besonders komfortabel. In einem nächsten Schritt müsste die Schnittstelle für die Benutzer durch Abstraktion vereinfacht werden. Aus Zeitgründen wird darauf im Workshop aber verzichtet, denn nun sollen mit dem Mikrofon gemessene Geräusche visualisiert werden.
Geräusche Visualisieren
Damit die Aufnahme mit einem Mikrofon in Snap! gelingt, muss die Aufnahme über die Webseite im Browser erlaubt werden. Da die entsprechenden Schritte sich von Browser zu Browser unterscheiden, sucht man bei Problemen am besten mit einer Suchmaschine nach einer entsprechenden Anleitung. Dabei helfen die Begriffe „Mikrofon“, „Browser“ und „erlauben“, „zulassen“ oder „freigeben“.
Ob das Mikrofon in Snap! wie gewünscht funktioniert, kann man mit folgendem kleinen Programm überprüfen:
Dieses Programm überprüft laufend das Eingangssignal des Mikrofons.
Der „microphone“-Block kann ganz unterschiedliche Informationen zurückliefern. Damit ist es beispielweise möglich, mit wenigen Befehlen ein Spektrum zu erzeugen, wobei hier wieder das fertige Programm abgebildet wird.
In Snap! lassen sich mit wenigen Befehlen ein Audiospektrum erzeugen.
Dieses so programmierte Spektrum kann nun benutzt werden, um herauszufinden, wie der Klang verschiedener Instrumente oder aber die Vokalfärbung bei der menschlichen Stimme zustande kommt. Bei den sichtbar werdenden Spitzen im rechten Bereich des Spektrums handelt es sich um Obertöne, die verantwortlich für die Klangfarbe sind.
Das Spektrum veranschaulicht den Klang einer nasalen menschlichen Stimme.
Das gleiche Phänomen konnte man schon aus den mithilfe von Zufallszahlen generierten Tönen erleben, auch diese verdanken ihre Klangfarbe dem Obertonreichtum.
Sonagramm
Das Spektrum zeigt immer nur eine Momentaufnahme. Wenn man die Daten auch über einen längeren Zeitraum aufzeichnen möchte, eignet sich dafür das Sonagramm. Dort werden die Lautstärken der einzelnen Frequenzen nicht mehr als Balken dargestellt, sondern in Farbwerte umgesetzt.
Das Programm kodiert die Schallintensität in den verschiedenen Frequenzbereichen farblich.Hohe Schallwerte werden durch hellere Farben dargestellt.
Solche Farbstreifen kann man nun um 90° drehen, schmaler gestalten und nacheinander aufzeichnen. Dazu muss das bisher bestehende Programm umgeschrieben werden.
Im Programm werden die Signale des Mikrofons für die Farbkanäle mit unterschiedlichen Werten multipliziert.
Da der „microphone“-Block jeweils 512 Werte liefert, lohnt es sich, die Ausgabegrösse der Bühne noch anzupassen. Dies funktioniert über die die Einstellungen der Snap!-Umgebung.
Das Sonagramm bildet das akustische Geschehen über einen bestimmten Zeitraum ab.
Grundlagen der Bildbearbeitung
Im dritten Teil des Workshops geht es um die Grundlagen der Bildbearbeitung. Bei hilft der Umstand, dass auch Grafiken in Snap! nur aus Zahlen bestehen. Für die folgenden Schritte kann entweder ein eigenes Bild verwendet werden, welches man einfach auf die Oberfläche zieht oder man steigt über die zu Verfügung gestellte Datei ein.
Snap! verfügt mit den Hyperblocks über ein sehr mächtiges Werkzeug, um grosse Datenmengen effizient zu bearbeiten. Hyperblocks erlauben es nämlich, eine arithmetische Funktion über alle Elemente einer Liste auszuführen, ohne dass dafür erste eine Schleife programmiert werden muss.
Die einzelnen Pixel jedes Farbkanals können mit vorhandenen Snap!-Befehlen schnell bearbeitet werden.
Mit den Hyperblocks und dem schon von den Audiodateien bekannten map-Block können bereits verschiedene Grafikfilter programmiert werden.
Den Zufall einbeziehen
Im letzten Teil zur Grafikbearbeitung wird ein Wechsel von Berechnungen hin zur Arbeit mit dem Zufall vollzogen. Gleichzeitig erfolgt ein Wechsel von der Zahlen- auf die Bildebene. Damit wird gezeigt, dass bei Snap! unterschiedliche Zugänge zu einem Thema möglich sind.
Als Grundlage dient wieder das Katzenbild. Dieses soll in ein impressionistisches Gemälde umgestaltet werden, indem an zufälligen Orten im Bild der Farbwert ausgelesen und dann an der gleichen Stelle ein Farbklecks gemalt wird.
Auch hier wird wieder die Endfassung gezeigt, welche im Workshop schrittweise mit verschiedenen Varianten aufgebaut wird.
Das Programm zaubert aus einem Foto ein Kunstwerk mit interessanten Effekten.
Ursprünglich hatten sich etwa 25 Personen zum Workshop angemeldet. Die meisten äussersten sich während des Workshops weder schriftlich noch mündlich. Wer sich meldete, gab an, noch über wenig bis keine Erfahrung mit Snap! zu verfügen. Am Schluss des Workshops gaben vier Teilnehmende schriftlich an, sie könnten sich vorstellen, Snap! im Unterricht zu verwenden.
Die Befürchtung, zu wenig Material dokumentiert zu haben, erfüllte sich nicht. Im Gegenteil: Insgesamt konnte aus Zeitgründen nur etwa die Hälfte der geplanten Beispiele demonstriert werden.
Nachtrag vom 11. Mai 2021: Die Organisatoren des Open Education Days haben die Videoaufzeichnung online gestellt.
Weitere Ressourcen rund um Snap!
Erste Anlaufstelle zu allen Fragen rund um Snap! ist die offizielle Webseite.
Auf der offiziellen Webseite werden Beispiele zur Programmierung mit Snap! vorgestellt. Allfällige Fragen stellt man über ein Forum an die engagierte und hilfsbereite Snap!-Gemeinschaft.
Es lohnt sich, auf der Seite ganz nach unten zu gehen, denn dort finden sich die Links zu ausgewählten Beispielen und einer hervorragenden und regelmässig aktualisierten Dokumentation zur Programmiersprache Snap!.
Online-Kurse
Zu Snap! gibt es unterdessen eine Reihe von hervorragenden Onlinekursen über die MOOC-Plattform openSAP:
Build your own Snap! Workshop (Jadga Huegle und Jens Mönig) zeigt auf, wie Snap! in der Arbeit mit Kindern und Jugendlichen verwendet werden kann.
Programmieren mit Snap! (Jadga Huegle und Jens Mönig) bietet eine gute Einführung in Snap! und Grundlagen der Informatik für Kinder und Jugendliche.
Informatik für Einsteiger (Eckart Modrow, Verfasser des gleichnamigen Buches) führt mit Snap! in die Informatik ein und richtet sich an ältere Jugendliche oder Erwachsene.
From Media Computation to Data Science (Jadga Huegle und Jens Mönig) erklärt die Verarbeitung und Repräsentation von Daten mithilfe von Snap! Dieser Kurs hat den Workshop „Zahlen, Daten und Medien“ wesentlich angeregt.
Die Welt der KI entdecken (Stefan Seegerer und Tilman Michaeli) führt in die Thematik der künstlichen Intelligenz ein und nutzt Snap! für praktische Beispiele.
Snap!Con
Seit dem Ausbruch der COVID-19 Pandemie findet die Snap!Con und daran angebundene Veranstaltungen (auch) online statt. Die nächste Snap!Con dauert fünf Tage und wird vom 29. Juli bis 1. August 2021 durchgeführt. Meist bietet die Snap!Con eine Mischung von Beiträgen, die von Anfängerveranstaltungen bis zum Austausch von Experten reichen. Allen ist gemeinsam, dass die Teilnehmenden sich darüber austauschen, wie die Programmierung (und der Unterricht) mit Snap! verbessert werden kann.
YouTube-Videos
Auf YouTube finden sich hervorragende Videos zu Snap! Diese sind teilweise im Rahmen von Snap!Con-Beiträgen entstanden. Da der Begriff „Snap“ auch im anderen Zusammenhang häufig verwendet wird, lohnt es sich, nach „Snap!Con“ oder „Jens Mönig“ zu suchen.
Wer kein Problem mit Englisch hat, dem seien die folgenden zwei längeren Vorträge von Jens Mönig empfohlen:
In The music comes out of the piano räumt Jens Mönig mit der Vorstellung auf, Informatik könne nur durch maximale Abstraktion und möglichst weit weg von Computern unterrichtet werden.
In No code, no limit zeigt Jens Mönig, wie mit Snap! Algorithmen einfach umgesetzt werden können.
Twitter
Eine ganze Reihe von Personen, die sich stark für und rund um Snap! organisieren, berichten regelmässig über ihre Arbeit auf Twitter. Folgende Twitteraccounts sollte man bei Interesse deshalb regelmässig konsultieren:
Jens Mönig: https://twitter.com/moenig ist hauptverantwortlich für die Programmierung von Snap! und freut sich über alle Beiträge zum Thema.
Jagda Hüegle: https://twitter.com/jadga_h überlegt sich unermüdlich, wie Snap! in und ausserhalb des Unterrichts eingesetzt werden kann.
Bernat Romagosa: https://twitter.com/bromagosa engagiert sich allgemein für blockbasierte Sprachen und findet immer wieder verblüffende Anwendungen dafür.
Joachim Wedekind: https://twitter.com/jowedebeschäftigt sich vor allem mit Computerkunst und optischen Illusionen.
Immer wieder steht man als Lehrperson vor der Aufgabe, Anleitungen zu verschiedenen Softwareanwendungen zu schreiben. Dabei steht man dann vor der Entscheidung, ob man ein entsprechendes Tutorial verfasst oder ein Video aufnimmt.
Tutorials lassen sich zwar mit einem vergleichsweisen geringen Aufwand schreiben, für Lernende kann es aber eine Herausforderung sein, sich darin zurechtzufinden. Videos sind meist einfacher nachzuvollziehen, dafür sind sie in der Herstellung aufwändiger und müssen bei Aktualisierungen der Software unter Umständen neu gedreht werden.
Einen Ausweg aus diesem Dilemma bietet H5P Image Hotspots, weil damit Anleitungen modular geschrieben werden können. Ausserdem lassen so geschriebene Anleitungen den Lernenden die Wahl, mit welchem Aspekt sie sich zuerst beschäftigen wollen.
Beispiel: Snap!-Editor
Am Beispiel der blockbasierten Programmierumgebung Snap! soll gezeigt werden, was mit H5P Hotspots möglich ist. Die Darstellung der einzelnen Informationspunkte ist in Moodle besser gelöst als in WordPress, wo diese vergleichsweise (zu) gross angezeigt werden.
Mit H5P Image Hotspots lassen sich also problemlos Texte, Bilder und Video kombinieren. Den Lernenden wird die Orientierung erleichtert, weil sie die Anleitung zu den Elementen dort finden, wo sie in der Software aufgerufen werden können.
Erstellen eines Lernobjekts mit H5P Hotspots
Nachdem man die Aktivität „Image Hotspots“ ausgewählt hat, lädt man zuerst ein passendes Bild, z.B. der Benutzeroberfläche von Snap! hoch.
Über die entsprechende Schaltfläche kann man ein Hintergrundbild für das Lernobjekt hochladen.
Ist dies geschehen, kann man einen schon bestehenden Hotspot definieren oder über die Schaltfläche „Add Hotspot“ einen neuen generieren.
Zu einem bestehenden Hintergrundbild können beliebig viele Hotspots hinzugefügt werden.
Dazu legt man zuerst die Zielposition des neuen Hotspots fest, dabei hilft unter Umständen ein Klick auf die Lupe unter dem Bild, welches dieses vergrössert und damit eine genauere Positionierung erlaubt.
Über die Schaltfläche „Cover entire background image“ kann man festlegen, wie viel Platz sich öffnende Fenster einnehmen. Der „Header“ dient als Überschrift dieser Fenster.
Anschliessend hat man die Wahl zwischen drei verschiedenen Inhalten: Text, Video und Bild. Diese lassen sich über die Schaltfläche „Add item“ auch kombinieren, somit wird eine beliebige Abfolge von solchen Elementen möglich.
Wird der Typ Text gewählt, öffnet sich ein einfacher Editor, mit dem ein zu erstellender oder bereits vorhandener Text bearbeitet werden kann.
Möchte man ein Element wieder löschen, klickt man auf das „x“ oben rechts im Dialog und bestätigt die entsprechende Rückfrage. Diese erscheint auch dann, wenn man den Typ, beispielsweise zu Video wechselt.
Für das Videoelement können lokal gespeicherte Videos oder Aufnahmen von YouTube verwendet werden.
Um ein Video hinzuzufügen, klickt man auf die gestrichelt umrahmte Schaltfläche mit dem Plus in der Mitte. Anschliessend kann man entweder ein lokales Video hochladen oder den Link zu einem YouTube-Video einfügen.
Die Feineinstellung erfolgt dann über die weiteren Optionen:
Visuals
Hier kann ein Vorschaubild eingefügt werden und bestimmt werden, wie der Videoplayer in der Aktivität angezeigt wird.
Playback
Hier kann man einstellen ob ein Video direkt und evt. wiederholt abgespielt wird. In der Regel sollte man beide Optionen nicht aktivieren, da es viele Nutzer nicht schätzen, wenn plötzlich irgendwo ein Video abgespielt wird.
Accessibility
Hier können Untertitel im WebVTT-Format hinzugefügt werden. Untertitel von YouTube-Videos stehen automatisch zu Verfügung.
Verwendung im Unterricht
H5P Image Hotspots kann nicht nur verwendet werden, um Lernende in die Oberfläche von Softwareanwendungen einzuführen. Der Aufgabentyp eignet sich allgemein dafür, Bildmaterial mit zusätzlichen Informationen anzureichern und hilft damit, den Blick der Lernenden auf wesentliche Details zu lenken.