Deskriptive Auswertung von Daten mit Snap!

Die Auswertung von Daten gehört zu den Kernkompetenzen einer Gesellschaft, welche wissensbasiert handeln will. Deshalb erklärt auch der Lehrplan der Deutschschweiz das Auswerten von Daten aus der Umwelt der Schülerinnen und Schüler als eines der übergeordneten Ziele des Informatikunterrichts. Darauf hat unter anderem auch das Statistische Amt des Kantons Zürich reagiert und eine Webseite zum Thema Daten- & Statistikkompetenz aufgeschaltet, welche sich an Lernende wendet. Nebst theoretischen Überlegungen zur Wissenspyramide stellt das Amt auch einen Datensatz mit CO2-Daten zu Verfügung, der von den Lernenden analysiert werden kann. Diese Daten sollen dann mit der Statistiksoftware R und einem Beispielskript ausgewertet werden.

R für die Sekundarstufe I?

R ist ein sehr mächtiges, frei erhältliches und quelloffenes Statistikwerkzeug, welches durch zahlreiche Erweiterungen sich an die individuellen Bedürfnisse von Statistikerinnen und Statistikern anpassen lässt. Da es ausserdem über eine Skriptsprache gesteuert wird, lassen sich mit R durchgeführte statistische Analysen auch leicht nachvollziehen – vorausgesetzt, man kennt sich mit dem Werkzeug aus.

Diese Steuerung der Software über Textelemente führt aber auch dazu, dass viele Menschen sich mit R schwertun, da die Lernkurve ziemlich steil sein kann. Auf der Sekundarstufe I kommt hinzu, dass man nicht zwingend davon ausgehen kann, dass die Lernenden über genügende Fertigkeiten in Bezug auf das Tastaturschreiben verfügen, was die Hürde zusätzlich erhöhen kann. Nun ist es durchaus machbar, mit Schülerinnen und Schülern dieses Alters R zu verwenden, in der Regel bedarf dies aber viel Unterstützung durch die Lehrperson oder dann beschränkt sich die Auseinandersetzung auf eine relativ triviale Abarbeitung eines vorgefertigten Skripts mit geringer Wahrscheinlichkeit auf einen späteren Transfer. Ausserdem steht der Unterricht auf der Sekundarstufe I auch unter einem hohen Druck, die Lernenden dazu zu befähigen, die vielfältigen Kompetenzen des Lehrplans zu meistern und der Umgang von Daten ist nur einer von sieben Teilen im Bereich Medien und Informatik.

Rettung durch die Tabellenkalkulation?

Wäre es da nicht sinnvoll, auf eine bei den Schülerinnen und Schülern bekanntere und einfacher zu bedienende Software wie eine Tabellenkalkulation umzusteigen? Um eine Antwort auf diese Frage zu erhalten, müssen verschiedene Aspekte berücksichtigt werden:

  1. Der Datensatz selbst: Bei einfach aufgebauten oder kleinen Datensätzen mag eine Tabellenkalkulation die erste Wahl sein. Der CO2-Datensatz enthält aber über 2000 Datensätze, was einer Bearbeitung in einer Tabellenkalkulation nicht gerade entgegenkommt. Bei solch grossen Datensätzen ist es schwierig, den Überblick zu behalten.
  2. Das Ziel der Auswertung: Wenn es darum geht, schnell eine Summe zu berechnen oder eine Linien- oder Balkengrafik zu zeichnen, dass ist die Tabellenkalkulation meist die erste Wahl. Wenn aber umfassendere Untersuchungen durchgeführt werden sollen, kann es schwierig sein, die einzelnen Schritte im Prozess nachzuvollziehen und auf eine andere Datenlage anzuwenden. Und genau dies soll ja eines der Ziele der Arbeit mit dem CO2-Datensatz sein. Es geht nicht nur darum, Erkenntnisse über diesen einzelnen Datensatz zu gewinnen, sondern diese Kenntnisse später auch auf andere Daten anzuwenden, bei denen vielleicht eine ganz andere Fragestellung im Fokus steht.
  3. Die Methodik: In der Mathematik, Informatik und den Naturwissenschaften ist es üblich, mit Werkzeugen zu arbeiten, bei denen Arbeitsschritte nachvollziehbar sind. Eine Reihe von abzuarbeitenden Befehlen erfüllt diese Aufgabe in der Regel besser, als wenn man auf eine grafische Oberfläche setzt, wie dies bei der typischen Tabellenkalkulation der Fall ist. Die schlechte Nachvollziehbarkeit von Analysen mit Tabellenkalkulationen führt dann auch immer wieder zu Problemen.  Dass dabei ein Produkt besonders häufig genannt wird, hat weniger mit dessen Qualität als vielmehr dessen grosser Verbreitung zu tun.

Diese Überlegungen zeigen, dass anscheinend nur die Wahl zwischen der unzugänglichen Arbeit mit einer Skriptsprache wie R oder der in den Naturwissenschaften eher weniger gern gesehenen, weil schlecht reproduzierbaren Arbeit mit einer Tabellenkalkulation bleibt.

Zu erreichende Ziele

In ein solches Dilemma verstrickt, lohnt es, sich noch einmal die Zielsetzungen vor Augen zu führen. Was sollen die Lernenden aus der Auseinandersetzung mit dem Lernobjekt (hier ein für Schulverhältnisse vergleichsweise grosser Datensatz) mitnehmen?

  1. Die Lernenden sollen eine grundsätzliche Fertigkeit im Umgang mit grösseren Datenmengen erwerben. Dazu gehören unter anderem:
    Sich einen Überblick und die Inhalte des Datensatzes zu verschaffen;
    einfache statistische Berechnungen auf den Datensatz anzuwenden;
    den Datensatz möglicherweise visuell auszuwerten (wird in diesem Beitrag nicht behandelt);
  2. Die Lernenden sollen dabei Methoden kennenlernen, welche typisch für das entsprechende professionelle Umfeld sind. Dazu gehören:
    Die Arbeitsweise mit einer professionellen Statistiksoftware zumindest in Ansätzen kennen lernen;
    bei der Arbeit mit Daten auf die Reproduzierbarkeit der Berechnungen zu achten;
    Einblick in die Funktionsweise statistischer Methoden erlangen.

Grundsätzlich würde R diese Bedingungen erfüllen, den Anwender wird der Einstieg durch die neu zu erlernenden Konzepte mit der gleichzeitig abverlangten Genauigkeit beim Eingeben der Befehle (Tippfehler) aber erschwert. Eine didaktische Reduzierung auf den eigentlichen Kern, die Nutzung von flexiblen, reproduzierbaren Befehlen zum Umgang mit Daten ist also angesagt.

In den folgenden Ausführungen soll nun gezeigt werden, dass eine Sprache wie Snap! aufgrund der blockbasierten Schnittstelle dazu ideale Voraussetzungen bietet und damit den Lernenden einen späteren Umstieg auf ein Statistikprogramm wie R wesentlich erleichtern kann.

Umsetzung mit Snap!

Da Snap! es ermöglicht, eigene Blöcke (Funktionen, Befehle, …) zu schreiben, kann die benötigte Funktionalität den Lernenden entweder zu Verfügung gestellt werden, oder, falls dies erwünscht ist, können diese die Erweiterungen selbst schreiben oder zumindest deren Funktionsweise nachvollziehen.

Während Snap! schon von Grund auf viele interessante Blöcke enthält und diese durch bereits vorhandene Bibliotheken (z.B. Frequency Distribution Analysis, Variadic reporters) ergänzt werden können, ist zumindest bei einer ersten Auseinandersetzung mit grösseren Daten sinnvoll, den Lernenden entsprechend zugeschnittene Blöcke zu Verfügung zu stellen.

Deshalb ist es sinnvoll, einmal einen Blick in den entsprechenden Auftrag zum CO2-Datensatz zu werfen (siehe R Skript). Die Lernenden sollen …

  • die Grösse des Datensatzes bestimmen (Anzahl Spalten und Zeilen);
  • die Überschriften der einzelnen Spalten herauslesen;
  • die Zeitabstände zwischen den Messzeitpunkten berechnen;
  • den Mittelwert (mean), Zentralwert (median) und häufigst vorkommenden Wert (modus) bestimmen;
  • Minimum und Maximum, sowie die Spannweite feststellen;
  • die Standardabweichung (standard deviation) und Streuung (variance) berechnen;
  • eine Übersichtstabelle (summary) zu den Daten generieren.

Nachdem die Aufgabenstellungen klar sind, können die entsprechenden Befehle zu Verfügung gestellt werden.

Didaktische Überlegungen

Bei der Umsetzung der entsprechenden Blöcke stellten sich erneut verschiedene Fragen:

  • Soll sich die Bezeichnung der Blöcke an diejenige der Skriptsprache R anlehnen?
  • Welchen Abstraktionsgrad sollen die einzelnen Blöcke aufweisen?
  • Wie fehlertolerant sollen die Eingabemöglichkeiten zu den Blöcken gestaltet werden?
  • Im Zweifelsfalle: Soll der Fokus beim Schreiben von Blöcken auf die Effizienz oder Nachvollziehbarkeit gelegt werden?

Die Beantwortung dieser Fragen führt unweigerlich zu entsprechenden Designentscheidungen. Grundsätzlich können diese aber später korrigiert werden, zumindest dann, wenn nur die Namen einzelner Blöcke und deren Programmierung angepasst werden, nicht aber deren Schnittstelle gegen aussen geändert wird. Bereits hier zeigt es sich, dass auch vergleichsweise triviale Aufgabenstellungen in Snap! sehr schnell zu Fragen führen, die über das eigentliche Programmieren hinausgehen und eigentliche Aufgaben der Informatik sind.

Für die konkrete Umsetzung wurden die Fragestellungen wie folgt beantwortet:

  • Eine Übernahme der genauen Bezeichnungen von R wurde als nicht erstrebenswert angesehen, da es darum geht, die Prinzipien zu verstehen. Ansonsten hätte man auch einfach das vorhandene Skript abarbeiten können. Die Lernenden sollen die Grundprinzipien erlernen, nicht eine ganz bestimmte Umsetzung in einer Sprache wie R.
  • Die Blöcke dürfen einen unterschiedlichen Abstraktionsgrad aufweisen, d.h., die Lernenden sollen bei Bedarf auch Blöcke mit einem tieferen Abstraktionsgrad nutzen können. Zudem ist es in Snap! bei den meisten (bei allen selbstgeschriebenen) Blöcken möglich, die entsprechende Programmierung einzusehen.
  • Die Fehlertoleranz der einzelnen Blöcke ist momentan auf unterschiedlichem Niveau (aus Zeitgründen) und soll deshalb erst einmal dokumentiert werden. Diese kann aber später bei Bedarf nachgerüstet werden. Didaktisch kann es sinnvoll sein, mit den Lernenden darüber zu sprechen, weshalb einige Blöcke weniger fehlertolerant sind als andere und was notwendig ist, um eine solche Fehlertoleranz zu erzielen.
  • Beim Schreiben der Blöcke wurde der Fokus auf die Nachvollziehbarkeit gelegt, wobei häufig Prinzipien genutzt werden, die typischerweise auch bei R zu finden sind.

Blöcke zum Filtern von Daten

Die meisten Blöcke wurden so umgesetzt, dass sie mit dem ganzen Datensatz (inklusive Spaltenüberschriften) funktionieren. Für die bessere Nachvollziehbarkeit werden die Blöcke inklusive der entsprechenden Programmierung vorgestellt

Namen der Spaltenüberschriften bestimmen

Mit diesem Block wird die Zeile 1 der CSV-Tabelle ausgelesen und als Liste zurückgegeben. Die Programmierung zeigt, dass dafür eigentlich kein eigener Block notwendig ist, denn er verpackt nur bereits vorhandene Funktionalität und macht sie damit etwas benutzerfreundlicher.

Dieser Block liefert die Spaltenüberschriften zurück.

Anzahl der Zeilen und Spalten bestimmen

Zeilen und Spalten unterscheiden sich in einer Tabelle in Snap! konzeptionell, weshalb der Zugriff jeweils anders erfolgt. Um die Zahl der Spalten zu erhalten, geht man gleich vor. wie im oberen Beispiel geschildert. Nur bestimmt man zusätzlich noch, wie lang die zurückgegebene Liste ist.

Der Befehl gibt die Zahl der Spalten zurück.

Der Befehl für die Zahl der Zeilen einer Tabelle, verpackt wieder nur einen schon bestehenden Block.

Der Block gibt die Zahl der Zeilen in einer Tabelle zurück.

Wenn man ganz auf selbstgeschriebene Blöcke verzichten möchte, kann man auch einen bereits vorhandenen Block in Snap verwenden:

Anzahl der Zeilen und Spalten in einer Tabelle

Dieser Block liefert die Dimensionen einer Tabelle als Liste der Form (Zeilenzahl, Spaltenzahl) zurück.

Nummer einer Spalte mit einer bestimmten Überschrift

Dieser Block dient nur dem Komfort. Anstatt eine Spalte über ihre Nummer zu adressieren, geht dies auch mit der Spaltenüberschrift.

Dieser Block gibt die Nummer der Spalte mit der entsprechenden Überschrift zurück.

Hier wurde aufgrund der einfachen Programmierung darauf verzichtet, auf den schon bestehenden Block „names of colums of“ zurückzugreifen.

Eine Datenzeile auslesen

Bei diesem Block handelt es sich um eine Verallgemeinerung des Blockes zum Auslesen der Spaltenüberschriften. Damit können die Werte einer beliebigen Zeile ausgelesen werden.

Dieser Block gibt alle Werte in einer bestimmten Zeile der Tabelle zurück.

Eine Spalte auslesen

Da Snap! Tabellen als Listen von Listen darstellt, ist das Auslesen der Werte in einer Spalte etwas komplizierter als bei einer Zeile. Die ersten drei Zeilen des Datensatzes werden bei Snap! so repräsentiert:

Tabellen werden in Snap! als Listen von Listen dargestellt.

Aus diesem Grund muss aus jeder Liste (eine Zeile der Daten) jeweils der entsprechende Wert ausgelesen und anschliessend in eine neue Liste geschrieben werden. Dies geschieht mithilfe des map-Blockes.

Dieser Block liefert alle Daten in einer Spalte der Tabelle zurück.

Der map-Block führt einen Befehl über alle Elemente einer Liste aus und ist ein sehr wichtiges Werkzeug, welches auch in R zu Verfügung steht. Dort bei Nutzenden, welche R nicht gut kennen, aber gerne durch eine wesentlich ineffizientere for-Schleife ersetzt wird. Fall die Zeit vorhanden ist, lohnt es sich, mit den Lernenden den map-Block eingehender zu behandeln, da damit in vielen Fällen das Konzept der for-Schleife zu Seite gelegt werden kann.

Grundsätzlich gilt in Snap!: Wenn möglich sollte man eine For-Schlaufe durch einen forEach-Block ersetzen und diesen gegebenenfalls wiederum durch einen map-Block. Dabei verliert man unter Umständen etwas Flexibilität, die Programmierung wird aber eleganter und vor allem werden die Befehle schnell ausgeführt. 

Einen Datenbereich auslesen

Manchmal möchte man statt nur einer Zeile oder einer Spalte einen Datenbereich auslesen. Bei sehr grossen Datensätzen wendet man beispielsweise beim Schreiben eines Skriptes die Befehle nur auf einen Teil des Datensatzes an, weil sonst die Berechnungen zu lange dauern. Ist man sich sicher, dass das eigene Programm funktioniert, lässt man es über den ganzen Datensatz laufen.

Einen Ausschnitt aus den Daten zu erhalten, funktioniert auch mit einer Abfolge von Befehlen, einfacher geht es aber mit folgendem Block:

Dieser Block liefert einen Teilbereich einer Tabelle zurück.

Nebst dem map-Befehl enthält dieser Block noch die Besonderheit, dass er bei der Eingabe für die Zeile und Spalte sowohl eine Zahl als auch eine Liste entgegennimmt, was normalerweise nicht ohne Weiteres möglich ist. Dazu prüft der Block, ob es sich bei der Eingabe um eine Zahl handelt und verzweigt dann dementsprechend in einen anderen Zweig der Programmierung. Damit versteckt der Block eine technische Schwierigkeit bei der Programmierung mit Snap! vor den Lernenden. Umgesetzt wurde dieser Ansatz hier, weil für Spezialfälle nicht noch eigene Blöcke geschrieben werden sollten.

Tabelle drehen

Manchmal ist es sinnvoll, eine Tabelle um 90° zu drehen, weil dadurch die Auswertung der Daten erleichtert wird.

Dieser Block dreht eine Tabelle um 90°.

Ein Beispiel soll zeigen, was damit gemeint ist. In Snap! wird die CO2-Tabelle so dargestellt:

Der Anfang des Datensatzes in der Tabellenansicht von Snap!.

Wenn diese um 90° gedreht wird, präsentiert sich die Tabelle so:

Beim Rotieren einer Tabelle werden Zeilen und Spalten vertauscht.

Die Zeilen sind zu Spalten geworden und umgekehrt. Die mit verschachtelten map-Blöcken umgesetzte Funktionalität kann man seit einiger Zeit auch mit einem vorgegebenen Block noch einfacher umgesetzt werden:

Unterdessen kennt Snap! einen eigenen Block zum Drehen von Tabellen.

Zusammenführen von Datensätzen

Der erwähnten Block „columns of“ kann auch dazu verwendet werden, zwei Tabellen mit wenigen Zeilen Code zusammenzuführen.

Dieser Block führt zwei Tabellen zu einer zusammen.

Dabei werden die Daten wieder zuerst gedreht, aneinandergehängt und schliesslich wieder zurückgedreht. Das funktioniert wesentlich einfacher als mit der Verwendung einer expliziten Schlaufe.

Löschen von Spalten in einer Tabelle

Um eine Spalte in einer Tabelle zu löschen, wird diese unter Verwendung aller Spalten, die nicht gelöscht werden sollen, neu geschrieben. Damit dies einigermassen komfortable funktioniert, wird zuerst eine Hilfsfunktion benötigt, welche eine Liste der Spalten generiert, die behalten werden sollen.

Dieser Block streicht eine Zahl aus einer Zahlenliste.

Dank der Fallunterscheidung funktioniert dies mit einzelnen Zahlen und Listen von Zahlen.

Dieser Block löscht eine Spalte aus einer Tabelle.

Der Block schreibt also die Tabelle neu und verwendet dabei alle Spalter, ausser derjenigen, die eben gelöscht werden soll.

Zusammenfassung der Tabellendaten

Der Block zur Zusammenfassung der Tabellendaten weist einen wesentlich höheren Abstraktionsgrad auf und greift dabei auf verschiedene bereits vorhandene und zusätzlich geschriebene Blöcke zurück.

Dieser Block liefert eine Tabelle mit den wichtigsten Kenndaten eines Datensatzes zurück.

Grundsätzlich erzeugt der Block eine neue Tabelle mit den Überschriften „column“, „min“, „max“, „mean“ und „sd“. Die eigentliche Tabelle wird erzeugt, indem für jede Spalte die entsprechenden Werte berechnet werden, wobei die Tabelle zur einfacheren Berechnung noch rotiert wird.

Der Block „summary“ liefert eine Zusammenfassung der wichtigsten Kerngrössen.

Blöcke zur Berechnung statistischer Kennwerte

Im nächsten Abschnitt werden Blöcke vorgestellt, die zur Berechnung statistischer Kennwerte verwendet werden können. Damit diese funktionierten, dürfen die zugrundeliegenden Listen in der Regel nur Zahlen enthalten.

Minimum, Maximum und Spannweite

Die Blöcke zur Berechnung des Minimums und Maximums sortieren die Daten zuerst und holen sich dann den ersten, respektive letzten Wert aus der sortierten Liste.

Dieser Block liefert den minimalen Wert in einer Liste von Zahlen.
Dieser Block liefert den Maximalwert aus einer Liste von Zahlen zurück.

Natürlich hätte man den max-Block auch so programmieren können, dass man mit dem „grösser als“-Zeichen operiert.

Der Block zur Berechnung der Spannweite ruft einfach „max“ und „min“ auf und berechnet dann die Differenz.

Bei der Programmierung dieses Blocks wurde bewusst auf eine Optimierung (die Liste wird zweimal sortiert) verzichtet, damit klarer wird, dass die Spannweite die Differenz von Maximum und Minimum ist. Wenn mit sehr grossen Datensätzen gearbeitet wird, kann es sinnvoll sein, eine optimierte Version zu verwenden. Diese könnte dann so aussehen:

Durch die Optimierung halbiert sich die Berechnungszeit, dafür ist die Programmierung weniger verständlich.

Da bei ca. 2000 Werten die Berechnungszeit auch bei einem langsameren Computer unter einer Sekunde liegen dürfte, lohnt sich eine solche Anpassung im Schulgebrauch wahrscheinlich nicht.

Anzahl unterschiedlicher Werte

Manchmal ist es praktisch, wenn man weiss, wie viele unterschiedliche Werte sich in einer Spalte einer Tabelle befinden. Programmtechnisch lässt sich dies in Snap! einfach umsetzen.

Dieser Block liefert die Anzahl unterschiedlicher Werte in einer Liste zurück.

Zuerst wird die Liste auf die unterschiedlichen Werte reduziert, anschliessend wird noch die Länge dieser reduzierten Liste abgefragt.

Sinnvoll ist die Anwendung eines solchen Befehls vor allem bei Listen, deren Inhalte nicht aus Zahlen bestehen. Will man den Befehl trotzdem mit Zahlen verwenden, kann man diese beispielsweise runden, um deren Vielfalt zu reduzieren.

Mittelwert, Zentralwert und häufigster Wert

Die Ausführungen zu den drei statistischen Werten (mean, median, modus) sollen sich hier auf die Umsetzung als Snap!-Blöcke beschränken. Am einfachsten ist es, das arithmetische Mittel (mean) zu berechnen.

Dieser Block liefert das arithmetische Mittel aller Werte in einer Liste zurück.

Programmtechnisch wird die Summe aller Werte gebildet, dabei hilft der entsprechende Summenbefehl aus der Bibliothek „Variadic Reporters“, die anschliessend durch die Anzahl der Werte dividiert wird.

Komplizierter ist die Berechnung des Zentralwerts, weil dazu die Liste sortiert und ausserdem eine Fallunterscheidung (gerade oder ungerade Anzahl von Werten) vorgenommen werden muss.

Dieser Block liefert den Zentralwert aus einer Liste von Zahlen zurück.

Zuerst wird mit dem Modulus-Operator geprüft, ob die Anzahl der Werte ungerade ist. Wenn dem so ist, wird die Mitte der Liste bestimmt und der entsprechende Wert zurückgegeben. Handelt es sich um eine gerade Anzahl von Werten, wird aus den beiden Werten in der Mitte das arithmetische Mittel berechnet. Dabei wurde auf einen Einsatz des schon bestehenden Blockes zur Berechnung des arithmetischen Mittels verzichtet, weil die Division mit Zwei in diesem Fall wohl anschaulicher ist.

Am kompliziertesten ist die Berechnung des häufigsten Wertes, auch wenn dies aus der Anzahl der Blockbefehle nicht unmittelbar ersichtlich ist.

Dieser Block liefert den häufigsten in einer Liste von Zahlen vorkommenden Wert zurück.

Die scheinbar nur aus einem Schritt bestehende Programmierung führt folgende Schritte durch: Zuerst werden die Daten mit „analyze“ in Gruppen aufgeteilt und gezählt, aus wie vielen Elementen jeder dieser Gruppe besteht. Anschliessend wird die so berechnete Liste nach der Anzahl der Mitglieder sortiert und ganz zuletzt wird der höchste Wert für eine Anzahl von Elementen zurückgeliefert. Falls es mehrere Höchstwerte mit der gleichen Anzahl von Elementen gibt, wird dies in der Programmierung nicht berücksichtigt. Der Block gibt immer nur einen Wert zurück.

Standardabweichung und Streuung

Die Standardabweichung (standard deviation) und die Streuung (variance) sind beide statistische Kennwerte, die angeben, wie sehr sich die Daten in einem Datensatz voneinander unterscheiden. Bei beiden Werten gibt es jeweils zwei Rechenverfahren, die abhängig davon sind, ob man eine ganze Population oder nur eine Auswahl davon erfasst hat. Auch hier sollen sich die Ausführungen auf die Programmierung beschränken.

Die Varianz berechnet sich als der Durchschnitt der Quadrate der Abweichungen zum Mittelwert der Daten.

Der Block liefert die Streuung zu einer Liste von Zahlen zurück.

Zuerst wird das arithmetische Mittel berechnet, dann wird für jeden Wert die Abweichung vom Mittelwert quadriert und anschliessend die aufsummierten Quadrate durch die Anzahl der Werte (oder Werte -1) dividiert. Bei der Fallunterscheidung wurde nur der Wert für die Anzahl der Listenelemente angepasst, damit im Programmcode weniger von der eigentlichen Berechnung der Werte abgelenkt wird.

Die Standardabweichung kann nur einfach als Quadratwurzel der Streuung berechnet werden.

Dieser Block gibt die Standardabweichung zu einer Liste von Zahlen zurück.

Umgang mit Zeitangaben

Zeitangaben am Computer sind ein kompliziertes Problem ,weil die verschiedenen Umrechnungen, z.B. 60 s = 1 min oder 24 h = 1 d, berücksichtigt werden müssen. Ausserdem gibt es dann noch die Schaltjahre usw. Aus diesem Grund werden Zeitangaben am Computer meist auf Sekunden (oder Millisekunden) umgerechnet, welche seit einem bestimmten Zeitpunkt (beispielsweise dem 1.1.1970) vergangen sind. Bei der Programmierung der entsprechenden Zeitfunktionalität für Snap! wurde ein ähnlicher Ansatz verfolgt. (Es ist natürlich auch möglich, entsprechende Befehle mit einem JavaScript-Block einzufügen, aber das widerspräche dem Versuch, den Lernenden die Grundlagen der Informatik zu vermitteln).

Damit am Schluss die Berechnung der Unterschiede zwischen zwei Zeitangaben einigermassen benutzerfreundlich erfolgen kann, wird zuerst eine Hilfsfunktion definiert, welche den Zeitunterschied zum 1.1. im Jahr 0 berechnet. Aufgrund der heutigen 64bit Betriebssysteme ist eine Beschränkung auf einen kleinen Zeitraum wie 1970 nicht mehr notwendig. Allerdings wurde bei der Programmierung die Umstellung des Julianischen auf den Gregorianischen Kalender Ende des 16. Jahrhunderts nicht berücksichtigt. Daten können aber bis ca. 1600 fast sekundengenaue (Problematik der Schaltsekunde) umgerechnet werden.

Der Block gibt die seit dem Jahr Null vergangene Zeit in Sekunden zurück.

Im Wesentlichen werden alle Bestandteile einer Datums- und Zeitangabe von der Sekunde bis zum Jahr aufaddiert, wobei in Einzelfällen noch Rahmenbedingungen (Tage und Monate beginnen bei der Zählung mit 1) und Spezialfälle (wie Schaltjahre) berücksichtigt werden).

Die Problematik der Schaltjahre wurde dabei wiederum in einen eigenen Block ausgelagert.

Der Blockliefert die Tage pro Monat oder in einem Jahr unter Berücksichtigung eines Schaltjahres zurück.

Dabei gibt der Block die zu berücksichtigen Tage entweder als Liste (Monate) oder als Summe (Jahr) zurück.

Mithilfe dieser Blöcke kann nun der für die Lernenden eigentlich interessante Block umgesetzt werden. Dieser bietet eine etwas angenehmere Schnittstelle an, bei der die Zeitangaben einfach im in den CO2-Daten vorhandenen Zeitformat übernommen werden können.

Dieser Block nimmt Zeitangaben im Format „yyyy-mm-dd hh:mm:ss“ entgegen und rechnet diese in Sekunden seit dem Jahr Null um.

Weil dabei unter Umständen mehr als 2000 Jahre aussummiert werden müssen, kann noch mit einer Zeitkorrektur gearbeitet werden, welche die Berechnungszeit wesentlich reduziert.

Beispiel zur Bearbeitung von Daten

Eine interessante Fragestellung zu den Daten des Statistischen Amtes des Kantons Zürich ist die nach den Zeitabständen zwischen den einzelnen Messungen im Beispieldatensatz. Um mehr darüber zu erfahren, können in Snap! folgende Schritte ausgeführt werden.

  1. Die vorhandenen Zeitangaben werden in Sekunden umgerechnet.
  2. Der Datensatz wird mit diesen Angaben erweitert und die nicht mehr benötigte Spalte „time“ allenfalls entfernt.
  3. Die Zeitunterschiede zwischen den Messungen werden berechnet und nach der Grösse des Zeitunterschiedes oder der Häufigkeit gruppiert.

Umrechnung der Zeitangaben

Für die Umrechnung der Zeitangaben kann man auf den bereits beschriebenen Block zurückgreifen. Da alle Zeitangaben in den Beispieldaten aus dem Jahr 2020 stammen, wird die Berechnung aus Effizienzgründen um diesen Wert korrigiert. Die so entstandene Liste wird in einer temporären Variablen abgespeichert (und kann später wieder gelöscht werden).

Alle Zeitangaben werden in Sekunden umgerechnet.

Anpassen des Datensatzes

Die so berechneten Werte fügen wir nun zur schon vorhandenen Tabelle hinzu.

Mit dem entsprechenden Befehl können Tabellen leicht zusammengeführt werden.

Zum Löschen der nun nicht mehr benötigten Spalte „time“, kann auf bereits vorhandene Befehle zurückgegriffen werden. Um Fehler zu vermeiden, soll dabei die Spaltenzahl aufgrund der Spaltenüberschrift ermittelt werden. Dies verhindert auch Probleme, wenn sich eine Spalte nicht am Ende der Tabelle befindet und Lernende ungeduldig mehrfach einen Block anklicken.

Die nicht mehr benötigte Spalte „time“ kann gelöscht werden.

Den Erfolg der durchgeführten Operation sollte man von Zeit zu Zeit überprüfen, was mit dem summary-Block geschehen kann.

Die Zusammenfassung zeigt, dass die geplanten Operationen erfolgreich durchgeführt wurden.

Zeitunterschiede berechnen

Im nächsten Schritt werden nun die Zeitunterschiede zwischen den Messungen berechnet. Da dazu die eigentliche Tabelle nicht benötigt wird, kann auf die temporäre Liste „calculated time“ zurückgegriffen werden.

Die Zeitdifferenzen können mit einem verschachtelten Block berechnet und ausgewertet werden.

Der Block berechnet zuerst alle Differenzen zwischen jeweils nachfolgenden Zeilen, wobei der erste und letzte Wert verworfen werden, da diese Berechnungen kein sinnvolles Ergebnis liefern, dann wird ausgezählt wie viele Male jede Differenz vorkommt und die so entstandene Tabelle noch mit entsprechenden Überschriften versehen.

Fazit

Anhand der CO2-Daten des Statistischen Amtes des Kantons Zürich wurde aufgezeigt, wie Snap! als Alternative zu einer professionellen Statistiksoftware wie R für die deskriptive Datenanalyse verwendet werden kann. Fehlende Funktionalitäten können dabei auf beliebigem Abstraktionsniveau ergänzt werden. Aufgrund der Flexibilität von Snap! kann damit eine typische Vorgehensweise von R gut nachgebildet werden, ohne dass man sich dabei die Schwierigkeiten einer textbasierten Programmiersprache einhandelt.

Damit eignet sich Snap! gut für die Datenanalyse mit Schülerinnen und Schülern der Sekundarstufe I und das dabei erworbene Wissen und die erarbeiteten Kompetenzen – z.B. zur genauen Funktionsweise des map-Blockes – sollten sich anschliessend vergleichsweise gut auf eine Statistiksoftware wir R übertragen lassen.

Die folgenden Einschränkungen sollten aber beachtet werden:

  1. Alle beschriebenen Blöcke funktionieren unter der Voraussetzung, dass die Daten sauber sind, d.h. keine fehlenden oder falschen Daten (z.B. Text statt Zahlen) enthalten. In dieser Hinsicht leistet R mehr, weil entsprechende Mechanismen teilweise schon eingebaut sind.
  2. Da Snap! in einem Browser läuft und technisch auf eine JavaScript-Umgebung aufbaut, ist R in der Regel erstens schneller und kann zweitens auch mit wesentlich grösseren Datenmengen umgehen.
  3. R verfügt mit seinen zahlreichen Erweiterungen natürlich über wesentlich mehr Statistikfunktionen als dies bei dem Allrounder Snap! der Fall ist.

Trotz dieser Einwände lohnt sich der Einsatz von Snap, denn …

  1. Auch in R ist die Säuberung von Datensätzen mit grossem Aufwand verbunden und teilweise eine Aufgabe für Expertinnen und Experten.
  2. Die Datenmengen, welche auf der Sekundarstufe I in der Regel bearbeitet werden, dürften weit unter dem technisch umsetzbaren Grenzen bei der Programmierung mit Snap! liegen.
  3. Auf der Sekundarstufe I wird nur ein Bruchteil der statistischen Methoden benötigt, die in einem professionellen Umfeld verwendet werden. Ausserdem können die gewünschten Funktionen als Blöcke jederzeit nachprogrammiert werden.
  4. Im Gegensatz zu R sind weitere Anwendungsfelder beispielsweise im Bereich Multimedia einfacher umzusetzen und bedürfen dafür auch nicht der vorgängigen Installation einer zusätzlichen Software auf den Geräten der Lernenden.

Insgesamt spricht also vieles für den Einsatz von Snap! auf der Sekundarstufe I und dies auch im Bereich der deskriptiven Statistik. Dass dies bisher wohl kaum geschehen ist, dürfte vor allem daran liegen, dass der Fokus der Volksschule bisher einerseits wenig auf der Programmierung lag, wobei die deutliche Abgrenzung zwischen Medien und Informatik im Lehrplan nicht unbedingt hilfreich ist, und wenn die eigentliche Informatik doch einmal im Vordergrund stand, sich diese auf die Umsetzung als „Informatik ohne Strom“ oder aber auf vergleichsweise banale Umsetzungen in blockbasierten Sprachen wie Scratch beschränkte, bei denen meist nur sehr einfache Konzepte der Informatik umgesetzt wurden.

Es ist zu hoffen, dass mit dem steigenden Bekanntheitsgrad von Snap! die dadurch eröffneten Möglichkeiten zunehmend auch im deutschsprachigen Raum eingesetzt und damit der künstliche Graben zwischen Medien und Informatik überwunden werden kann, denn die Datenanalyse mit Snap! ist nur eine von äusserst vielfältigen Anwendungsmöglichkeiten und die dabei erworbenen Erkenntnisse können anschliessend gut auch im Bereich der Medien genutzt und erweitert werden.

Die beschriebenen Blöcke können unter Data Science ausprobiert werden.

 

Koordinaten in Snap!

Snap! nutzt ein Koordinatensystem, welches sich am Modell der vier Quadranten orientiert: Sowohl die x- als auch die y-Koordinaten können negative und positive Werte annehmen. So können in der Grundeinstellung x-Werte von -240 (links) bis 240 (rechts) abgebildet werden, die y-Werte sind von 180 (oben) bis -180 (unten) sichtbar. Der Koordinatenursprung liegt also im Zentrum.

Abbildung von Punkten im Koordinatensystem von Snap!.

Dies im Gegensatz zu vielen anderen Programmiersprachen, wo der Koordinatenursprung (0, 0) häufig in der oberen linken Ecke liegt.

Wie gross der abgebildete Bereich tatsächlich ist, kann über die Einstellung zur Bühnengrösse (stage) festgelegt werden.

Die Auflösung des Ausgabefensters (stage) kann in Snap! angepasst werden.

Diese Darstellung der Koordinaten und die unterschiedlichen Bildschirmgrössen in Snap! sollte man bei der Programmierung entsprechender Grafiken berücksichtigen. Sonst werden beispielsweise Grafiken mit ausschliesslich positiven Koordinaten nur in einem Viertel des Bildschirms dargestellt.

Bildet man beispielsweise die Quadrate der natürlichen Zahlen ab, wird nur ein Viertel des Bildschirms genutzt.

Noch vertrackter wird es, wenn man während der Programmierung die Auflösung ändert oder es mit sehr grossen oder kleinen Zahlen zu tun hat. Dann muss man jedes Mal die entsprechenden Koordinaten umrechnen.

Dies von Hand zu tun ist nur eine Lösung, welche sinnvoll ist, wenn man Snap! kaum jemals für die Darstellung von Daten benötigt. Bei häufigerer Verwendung liegt es nahe, eine entsprechende Umrechnungsroutine in Snap! selbst zu schreiben.

Schülerinnen und Schüler scheitern meist daran, dass dies keine ganz einfache Aufgabe ist. Die folgenden Schritte erklären, wie man zu einer Lösung kommt, welche solche Darstellungsprobleme endgültig beseitigen. Dabei lohnt es sich, schrittweise vorzugehen.

Im einfachsten Fall beginnen sowohl der Datenbereich als auch die Bildschirmdarstellung bei 0, wie die folgende Grafik zeigt.

Wenn beide Zahlenbereiche bei 0 beginnen, ist die Aufgabe schnell gelöst.

Der Datenbereich in der Grafik reicht von 0 bis 6, auf dem Bildschirm können die Werte 0 bis 12 abgebildet werden. Um die Zahlen von einer Menge in die andere umzurechnen, vergleichen wir die Spannweiten der beiden Bereiche. Die Spannweite auf dem Bildschirm ist doppelt so gross wie die Spannweite des Datenbereiches. Es genügt in diesem Fall also, alle Datenwerte mit 2 zu multiplizieren, um die korrekte Position auf dem Bildschirm zu erhalten, wir erhalten also folgende Werte:

  • 0 ⟶ 0 (kleinster Wert)
  • 6 ⟶ 12 (grösser Wert)
  • 2 ⟶ 4 (grüner Punkt)

Etwas kompliziert wird es, wenn der Datenbereich nicht bei 0 beginnt, dann muss die Umrechnung angepasst werden:

Wenn der Datenbereich nicht bei Null beginnt, reicht eine einfache Multiplikation nicht mehr aus.

Aus der Grafik erkennen wir sofort, dass die Umrechnung des Wertes für den grünen Punkt nicht mehr durch eine einfache Multiplikation erfolgen kann, weil dieser bei den Daten in der Nähe des grössten Wertes liegt, während dies in der Abbildung definitiv nicht der Fall ist. Eine kurze Überprüfung anhand der Extremwerte zeigt, was zu tun ist:

  • -2 ⟶ -4 statt 0
    Differenz zum tatsächlichen Wert: -4
  • 4 ⟶ 8 statt 12
    Differenz zum tatsächlichen Wert: -4

Die Differenz des kleinsten Wertes aus dem Datenbereich beträgt aber nur -2, die -4 ergeben sich erst mit der erneuten Multiplikation: Die Werte aus dem Datenbereich müssen also zuerst multipliziert werden und dann um den mit dem gleichen Faktor multiplizierten Unterschied zwischen dem Minimum der Daten und Null korrigiert werden. So erhalten wir:

  • -2 ⟶ -4 + 4 = 0 (kleinster Wert)
  • 4 ⟶ 8 + 4 = 12 (grösser Wert)
  • 2 ⟶ 4 + 4 = 8 (grüner Punkt)

Nun ist es aber auch möglich, dass der Bildschirmbereich gegenüber dem Nullpunkt so wie bei Snap! verschoben ist.

Wenn auch noch der Bildschirmbereich verschoben ist, dann müssen die bisherigen Korrekturen noch einmal erweitert werden.

Wieder helfen die Minimal- und Maximalwerte weiter, um zu verstehen, was für eine zusätzliche Korrektur notwendig ist.

  • -2 ⟶ 0 statt -2 (kleinster Wert)
    Differenz zum tatsächlichen Wert: -2
  • 4 ⟶ 12 statt 10 (grösser Wert)
    Differenz zum tatsächlichen Wert: -2

Bei der letzten Korrektur muss also noch die Differenz vom Minimum des Bildschirms zum Nullpunkt berücksichtigt werden.

Werden alle Korrekturen eingerechnet, dann funktioniert die Umrechnung von einem Datenbereich in den anderen.

Eine Überprüfung ergibt:

  • -2 ⟶ -4 ⟶ 0 ⟶ -2 (kleinster Wert)
  • 4 ⟶ 8 ⟶ 12 ⟶ 10 (grösster Wert)
  • 2 ⟶ 4 ⟶ 8 ⟶ 6 (grüner Punkt)

Hier noch einmal die ganzen Ausführungen als Erklärfilm:

Für die Abbildung eines beliebigen Datenpunktes auf dem Bildschirm gilt deshalb folgende Formel:

Datenwert x Quotient der Differenzen + Differenz vom minimalen Datenwert zum Nullpunkt multipliziert mit dem Quotienten der Differenzen + Differenz vom minimalen Bildwert zum Nullpunkt

In Snap! kann ein entsprechender Block so geschrieben werden, wobei einige Hilfsvariablen die Sache erleichtern:

Mit diesem Block können Daten so umgerechnet werden, damit die Darstellung am Bildschirm optimal ist.

Greifen wir dazu noch einmal das Beispiel der Quadratzahlen auf, deren Bildpunkte beim ersten Versuch alle im 1. Quadraten landeten. Die Umrechnung kann entweder beim Zeichnen der Grafik oder schon anhand der darzustellenden Daten erfolgen.

Mit diesen Befehlen können beliebige Daten umgerechnet werden.

Der erste Block in der Grafik (grau) führt die eigentliche Umrechnung für einen Wert aus.

Der zweite Block (blau) liefert die Breite der Bühne (Bildschirm) zurück. Eine entsprechende Möglichkeit gibt es für die Bildschirmhöhe. Dieser Wert muss durch 2 geteilt werden, da die Differenz des minimalen und maximalen Wertes doppelt so gross ist wie der Abstand des Minimalwertes zum Ursprungspunkt.

Der dritte Befehl (orange) nimmt als Argument eine Liste entgegen und wendet dann auf jedes Element die Befehle an, die im grauen Ring enthalten sind.

Der vierte Block (ebenfalls orange) wählt das angegebene Element aus einer Liste aus.

Der grosse Block führt deshalb folgende Befehle aus:

  • Der Datensatz wird genommen und in zwei Teillisten mit der ersten und zweiten Spalte aufgeteilt.
  • Für beide Spalten werden alle enthaltenen Werte gemäss den Parametern im Umrechnungsblock so berechnet, dass diese auf den Bildschirm passen.
  • Damit die Daten nicht am Rand des Bildschirms landen, wurden  bei den Daten ein etwas grösserer Bereich angegeben. So ist es dann allenfalls noch möglich, die Grafik mit zusätzlichen Informationen (Titel, Achsen, Legenden) anzureichern.

Hält man sich an dieses Vorgehen, können Daten auf einem beliebig grossen Bildschirm passend ausgegeben werden. Ausprobieren kann man dies unter  Daten umrechnen. Dazu klickt man nach dem Öffnen auf die Schaltfläche „see code“. In der eingebundenen Version unten klickt man stattdessen auf das Augensymbol oben links.

YouTube-Videos interaktiv aufbereiten

Videos kann man mithilfe von H5P Interactive Video mit zusätzlichen Informationen oder Übungen anreichern. Wenn es sich dabei um Videos handelt, die man nicht selbst produziert hat, ist es aber meist aufwändig, sich einen Überblick über die genauen Inhalte des Videos zu verschaffen. Diese Anleitung zeigt, wie man mit Hilfe der automatischen Transkription im Falle von YouTube-Videos schnell zum Ziel kommt.

Transkription des Videos

YouTube bietet seit längerer Zeit eine automatische Untertitelung von Videos an. Ob diese bei einem Video genutzt werden kann, erkennt man am entsprechenden Symbol (unten rechts) beim Video.

Untertiteloption bei Youtube-Video vorhanden
Bei diesem YouTube-Video ist die Option für Untertitel vorhanden.

Ist die entsprechende Option vorhanden, kann man sich die Untertitel nicht nur beim Anschauen des Videos anzeigen lassen, sondern man kann auch direkt auf die von YouTube generierte automatische Transkription oder allenfalls sogar auf eine bereitgestellte Mitschrift zugreifen. Dies gelingt in drei Schritten.

auf die Transkription zugreifen
Der Zugriff auf das Transkript erfolgt über die Einstellungen unter dem Video.
  1. Ein Klick auf die drei Punkte öffnet das entsprechende Menü.
  2. Mit dem Menüeintrag „Transkript öffnen“ wird die Mitschrift entweder direkt angezeigt oder automatisch generiert, was bei längeren Videos einen Moment dauern kann.
  3. Nun kann man die entsprechenden Inhalte kopieren und weiter bearbeiten.

Die Qualität der Transkription ist stark vom Ausgangsmaterial abhängig. Sprechen die Personen im Video deutlich, ist die Qualität in der Regel für weitere Arbeitsschritte gut genug.

Alternativen

Statt die Mitschrift direkt bei YouTube zu kopieren, kann man auch einen Webdienst wie SaveSubs oder YouSubtitles nutzen. Diese bieten meist zusätzliche Dienste wie automatische Übersetzungen an. Je nach Dienst wird beim Gebrauch aber Werbung angezeigt, deren Inhalt man nicht kontrollieren kann, weshalb diese Dienste vor dem Einsatz im Unterricht selbst immer sorgfältig geprüft werden sollten.

Aufbereitung des Transkripts

Angenommen man hat die Mitschrift direkt von YouTube in eine Textverarbeitung wie Word kopiert, dann stellt sich das Problem, sofern man von den Zeitstempeln Gebrauch machen möchte (optional), dass die Formatierung etwas unübersichtlich ist, weil die Zeitstempel und der zugehörige Text jeweils auf einer eigenen Linie stehen.

Beispiel eines automatischen Transkripts
YouTube unterscheidet beim Transkript nicht zwischen Gross- und Kleinschreibung, was für einen Inhaltsüberblick verkraftbar ist.

Möchte man, dass Zeitstempel und Text jeweils auf einer Zeile stehen, hängt das weitere Vorgehen vom Umfang des Videos ab. Bei kürzeren Videos kann man die entsprechenden Einträge problemlos von Hand formatieren, bei längeren Videos lohnt es sich, auf die Suchen/Ersetzen-Funktion der Textverarbeitung zurückzugreifen. In Microsoft Word kann man dazu beispielsweise mit Platzhaltern arbeiten.

Optionen zum Suchen und Ersetzen
Microsoft Word bietet vergleichsweise mächtige Möglichkeiten zum Suchen und Ersetzen von Textstellen.

Diese Sucheinstellungen bewirken, dass der Text wie folgt umformatiert wird.

Ergebnis nach dem Ersetzen
Durch das Ersetzen der Zeilenumbrüche wird das Transkript übersichtlicher.

Damit etwas klarer wird, wie Microsoft Word die entsprechenden Ausdrücke interpretiert, schlüsseln wir die einzelnen Komponenten auf. Im Suchfeld finden wir folgende Zeichensequenz: ([0-9]{2}:[0-9]{2})^13.

  • (): Die runde Klammer steht für einen zusammengefassten Ausdruck, alles was in der Klammer steht, wird als eine Einheit angesehen.
  • []: Die eckigen Klammern stellen eine Menge von möglichen Zeichen dar. Im Falle von [0-9] also irgendeine Ziffer von 0-9.
  • {}: Die geschweiften Klammern bestimmen, wie viele Male eine bestimmte Zeichenfolge wiederholt werden soll, {2} bedeutet hier, dass eine Ziffer zweimal wiederholt wird.
  • ^13: Dieses Kürzel steht für einen Zeilenumbruch, nach dem in Word normalerweise mit ^p gesucht werden kann, was bei der Verwendung von Platzhaltern (siehe angekreuztes Kästchen in der Abbildung oben) nicht funktioniert.
  • Daneben können auch normale Zeichen wie Buchstaben, oder im Beispiel der Doppelpunkt verwendet werden.

Das Ersetzen Feld präsentiert sich in diesem Fall relativ einfach:

  • \1: Dadurch wird Word mitgeteilt, dass ein Platzhalter verwendet werden soll, in diesem Fall der erste Teil des Suchbegriffs, der Zeitstempel.
  • ^t: Damit fügt Word einen Tabulator ein.

Mit Hilfe dieser Parameter sucht Word nach einem Zeitstempel bestehend aus zwei Ziffern (den Minuten), einem Doppelpunkt und zwei weiteren Ziffern (Sekunden), sowie einem Zeilenumbruch. Der Zeitstempel wird in einen Zwischenspeicher kopiert und der ganze Ausdruck durch den Zeitstempel gefolgt von einem Tabulator ersetzt.

Das derart umformatierte Transkript kann nun verwendet werden, um die relevanten Textstellen zu finden, welche für die weitere Arbeit mit dem interaktiven Video benötigt werden.

Interaktive Aufbereitung mit H5P

Das Erstellen eines interaktiven Videos erfolgt in drei Schritten: dem Auswählen des Videos, der Anreicherung mit interaktiven Elementen und dem Schreiben einer optionalen Zusammenfassung.

in drei Schritten zum interaktiven Video
Alle wichtigen Arbeitsschritte beim Erstellen eines interaktiven Videos erfolgen über die drei Reiter in diesem H5P-Bedienungselement.

Ist das Video eingefügt, kann man mit der Bearbeitung der interaktiven Elemente beginnen, welche jeweils an einer beliebigen Stelle des Videos eingefügt werden können. An der Möglichkeit, ein Textfeld einzufügen, soll gezeigt werden, wie dies grundsätzlich funktioniert.

Interaktives Element Textfeld auswählen
Das Textfeld ist nur eine von vielen Möglichkeiten, interaktive Elemente in einen Text einzubinden.

Zusätzliche Informationen

Das Textfeld bietet sich an, um die verschiedenen Anzeigeoptionen von interaktiven Elementen zu besprechen.

Einstellungen des Textfelds
Das Textfeld kann im interaktiven Video auf unterschiedliche Weise angezeigt werden.
  1. Anzeigedauer: Damit wird festgelegt, wie lange das interaktive Element angezeigt werden soll. Optional kann der Film dazu auch angehalten werden (Pause Video).
  2. Darstellung: Während des Films kann ein interaktives Element als Schaltfläche (Button), welche angeklickt werden muss, oder direkt als sich neu öffnendes Fenster angezeigt werden (Poster).
  3. Überschrift: Titel des Fensters oder auf der Schaltfläche angezeigter Text.
  4. Inhalt des Textfensters: Das Textfenster kann unterschiedliche Textelemente (u.a. auch Links) enthalten. Eine Einbindung weiterer Elemente (z.B. Bild) ist allerdings nicht möglich.
  5. Sprungmarke: Damit kann auf eine andere Stelle im Video gesprungen werden. Das ist beispielsweise bei Fragen nützlich, um die entsprechende Videosequenz im Falle einer falschen Frage gleich noch einmal anschauen zu können.

Wenn die Lernenden das Video abspielen, kann das Ergebnis dann beispielsweise so aussehen:

Textfeld
Das Textfeld kann in einer beliebigen Grösse dargestellt werden.

Nebst dem Textfeld können folgende weiteren Elemente eingefügt werden: Label, Link, Bild, Tabelle. Schade ist, dass es nicht möglich ist, z.B. ein Bild mit einem Text zu kombinieren.

Fragen und Aufgabenstellungen

Interessanter sind die Möglichkeiten, verschiedene Multi-Choice-Fragen (Einfach-, Mehrfachantworten, Richtig-Falsch-Aussagen) zu stellen, Lückentexte, Markier- und Zuordnungsaufgaben (nur mit Text oder in Verbindung mit Bildern) einzubauen, sowie sogenannte Statements zu benutzen (siehe weiter unten). Möglich sind auch Freitextantworten und Umfragen, deren Ergebnisse jedoch nur in den entsprechenden Umgebungen abgegriffen werden können.

Die Multiple-Choice-Fragetypen sind alle gleich aufgebaut. An einem Beispiel soll gezeigt werden, wie das funktioniert, wobei die bereits vom Textfeld bekannten Einstellungen nicht noch einmal besprochen werden.

Beispiel für die Vorbereitung einer MC-Frage.
Für jede einzelne Antwortoption kann festgelegt werden, ob diese richtig oder falsch ist.

Folgende Einstellungen erzeugen eine Multiple-Choice-Frage für eine H5P-Lernaktivität:

  1. Frage: Die Frage kann als solche oder aber auch als Aufgabenstellung formuliert werden: z.B. Wähle die zutreffenden Aussagen aus.
  2. Antworten: Bei den Antworten kann durch das Ankreuzen des Kästchens „korrekt“ festgelegt werden, dass diese Antwort richtig ist. Die Zahl der Antworten kann auch nachträglich noch angepasst werden.
  3. Tipp: Falls gewünscht kann hier eine Erklärung oder ein Lösungshinweis eingebaut werden.
  4. Rückmeldung: Je nachdem, ob die Antwortoption von den Lernenden ausgewählt wurde oder nicht, kann jeweils eine unterschiedliche Rückmeldung erfolgen.

Während die Frage nur einmal formuliert wird, muss für jede Antwort die richtige Einstellung gewählt werden. Ausserdem ist es möglich, für die ganze Frage noch verschiedene Einstellungen zum Antwortverhalten festzulegen.

Beispiel eingebaute Frage
Mit den unterschiedlichen Fragetypen kann die Konzentration der Lernenden auf wesentliche Aspekte gelenkt werden.

Beim Lückentext und dem Zuordnen oder Markieren von Begriffen in einem Text müssen die Schlüsselwörter jeweils durch einen führenden und abschliessenden Stern festgelegt werden: Das ist eine *Lücke* in einem Lückentext.

Auf „Drag und Drop“ wird hier nicht weiter eingegangen, da dessen Erstellung für H5P untypisch ziemlich anspruchsvoll ist.

Sprungmarken

Nebst dem Anzeigen zusätzlicher Informationen oder dem Stellen von Fragen, ist es auch möglich, die Lernenden mit Sprungmarken durch das Video zu leiten. Kann man ein Video nicht selbst schneiden und möchte bestimmte Stellen überspringen, weil diese nicht relevant sind, kann man einen „Navigationshotspot“ hinzufügen. Sollte der Sprung in Abhängigkeit von einer getroffenen Wahl der Lernenden erfolgen, verwendet man „Crossroads“.

Abschliessend kann man noch einen „Summary Task“ einfügen, dabei handelt es sich um eine Reihe von Behauptungen, bei denen am Schluss die richtigen Aussagen als Zusammenfassung dienen.

Aussagen als Zusammenfassung
Dieser Aufgabentyp kann auch während eines Films eingefügt werden.

Bevor die Lernenden das interaktive Video abschliessen, entscheiden sie, welche der Aussagen richtig sind. Dabei bleiben am Schluss die richtigen Aussagen stehen und dienen als Zusammenfassung.

Summary
Die jeweils richtig gewählten Aussagen können einen guten Überblick der wesentlichen Informationen im Video vermitteln.

Verwendung im Unterricht

Wenn Lernende Videos schauen, fällt es ihnen oft schwer, die relevanten Punkte zu erkennen. Durch zusätzliche Hinweise und Fragestellungen kann die Aufmerksamkeit der Lernenden auf wichtige Sachverhalte gelenkt werden. Dazu gehört auch, dass man allenfalls im Video verwendete, den Lernenden nicht bekannt Begriffe kurz erklären kann.

Reichert man ein Video gezielt mit Hinweisen an, kann es nicht nur dem Wissenserwerb oder der Überprüfung des Gelernten dienen, es kann auch auf zusätzliche Möglichkeiten aufmerksam machen und damit den Lernenden neue Horizonte eröffnen.

Den Vorteilen auf Seiten der Lernenden steht der doch recht hohe Arbeitsaufwand für die Lehrperson gegenüber. Dabei hilft es, wenn eine einigermassen zuverlässige Transkription des Videos zu Verfügung steht. Letztlich lässt sich der damit verbundene Arbeitsaufwand nur rechtfertigen, wenn ein solches Video mehrfach zur Anwendung kommt. Wird sowieso zeitgleich mit der ganzen Klasse gearbeitet, können notwendige Überlegungen zum Video auch mit traditionelleren Mitteln erfolgen.

Interessant könnte es aber auch sein, wenn Lernende die Möglichkeit des interaktiven Videos nutzen, um ein bereits vorhandenes Video mit den vorgestellten Möglichkeiten selbst zu kommentieren oder von Grund auf eine eigene Videogeschichte zu erzählten. Mit dem „Crossroads“-Werkzeug ist es dann auch möglich, unterschiedliche Erzählstränge aufzugreifen, was die Gestaltung recht innovativer, planerisch aber höchst anspruchsvolle Videoformen erlaubt.

Scherenschnitte mit Snap!

Anlässlich der Snap!Shot 2020 Konferenz stellte Jens Mönig einen Schneeflocken-Designer vor, der Gebrauch von dem neuen „cut from“-Block macht. Die Programmierung des Designers macht sich die symmetrischen Eigenschaften einer Schneeflocke zunutze und da stellt sich natürlich die Frage, ob man ein solches Snap!-Programm nicht auf für das Thema „Spiegelungen und Symmetrien“ in der Mathematik nutzen kann, denn dort werden Symmetrieeigenschaften (Achsen- und Drehsymmetrie) unter anderem mit Scherenschnitten erarbeitet.

Das Herstellen von klassischen Scherenschnitten gestaltet sich mit dem Snap!-Programm ganz einfach.

Der Lehrplan der Deutschschweiz setzt beim Thema Symmetrien zwar noch ganz auf traditionelle Ansätze, wenn er die zugehörige Kompetenz wie folgt formuliert: „Die Schülerinnen und Schüler können Figuren mit dem Geodreieck an einer Achse oder einem Punkt spiegeln, verschieben sowie mit Zirkel und Geodreieck um 90°, 180° und 270° drehen“ (Kompetenz MA.2.A.2i).

Dies muss aber niemanden daran hindern, diese Formulierung durch Verwendung zeitgemässer Informatikmittel entsprechend zu erweitern, insbesondere auch deshalb, weil der gleiche Lehrplan im Zyklus 2 im Bildnerischen Gestalten zum Experimentieren auffordert: „Die Schülerinnen und Schüler können durch Umdeuten und Spiegeln Darstellungsmöglichkeiten erproben und anwenden“ (Kompetenz BG.2.C.2c).

Programmierung in Snap!

Da im Mathematikunterricht eine Beschränkung auf die sechs Symmetrieachsen einer Schneeflocke nicht sinnvoll ist, muss die erwähnte Vorlage angepasst werden. Dies ist mit minimalen Änderungen möglich.

Programmierung für den Scherenschnitt
Gegenüber dem Original mussten nur wenige Änderungen vorgenommen werden, damit mit einer flexiblen Anzahl von Symmetrieachsen gearbeitet werden kann.

Die Anpassungen beschränken sich auf die Blöcke, in denen die Variable „parts“ auftaucht, da dadurch die von der Anzahl der Symmetrieachsen abhängigen Winkel automatisch berechnet werden. Ausserdem wurde noch eine Abfrage hinzugefügt, welche den Schülerinnen und Schülern erlaubt, die Anzahl der Symmetrieachsen selbst zu bestimmen, und die Grösse der Figur wird nun unter Verwendung des Sensorwertes „width of Stage“ automatisch berechnet, damit die Auflösung der Scherenschnitte gegebenenfalls angepasst werden kann.

Eine letzte Änderung betrifft die Schneidefunktion. Die „Schere“ wurde so programmiert, dass deren Grösse während des Programmablaufs angepasst werden kann.

Programmierung der Schere
Die Grösse der Schere kann über entsprechende Tastenbefehle angepasst werden.

Gebrauch des Programms im Unterricht

Das Programm kann entweder direkt über die Snap! Webseite aufgerufen werden oder aber mithilfe des ebenfalls an der Snap!Shot Konferenz vorgestellten Plugins „Snap! Submissions“ für Moodle direkt in einen Moodle-Kurs eingebaut werden. Die Verwendung des Plugins hat den Vorteil, dass die Resultate der Schülerinnen und Schüler direkt im LMS gespeichert werden, diese können aber natürlich auch an einem externen Ort gesammelt werden.

Die Anwendung des Programms ist einfach. Nach der Beantwortung der Frage nach der Anzahl der Symmetrieachsen, können die Schülerinnen und Schüler mit der Maus die entsprechenden Zuschneidungen vornehmen.

Ausserdem reagiert das Programm auf die folgenden Tastaturbefehle:

  • Leerschlag: Der Scherenschnitt wird aufgefaltet oder zugeklappt;
  • „s“: Die Schere wird verkleinert, was ein genaueres Zuschneiden ermöglicht;
  • „b“: Die Schere wird vergrössert, was bei grosszügigeren Zuschnitten hilfreich sein kann.

Ein kurzes Video zeigt, wie der Scherenschnitt-Designer im Einsatz funktioniert.

Anmerkungen

Während bei diesem Snap!-Programm der Schwerpunkt auf der Anwendung, dem Einsatz im Geometrie-Unterricht liegt, und bei der Programmierung mathematische Grundlagen verwendet werden, welche den Schülerinnen und Schüler der 7. Klasse kaum geläufig sein dürften (Tangensfunktion), erlaubt das Programm im Gegensatz zu ähnlichen im Internet auffindbaren Werkzeugen trotzdem einen Blick unter die Haube. Interessierte Schülerinnen und Schüler können deshalb jederzeit den Schritt von der Anwendung zur Programmierung tun und so einen Blick hinter die Kulissen werfen.

Doch ist es überhaupt sinnvoll, ein Computerprogramm anstelle des klassischen Vorgehens mit der Schwere einzusetzen? Die Antwort auf diese Frage hängt sicherlich auch von der Zielsetzung ab. Beschränkt man sich auf den klassischen Scherenschnitt mit 2 Faltungen, erbringt das Programm keinen Mehrwert. Anders sieht es aus, wenn man andere Symmetrien, wie z.B. bei einem Fünf- oder anderen Vieleck anschauen möchte, dann ist die Papiervariante in der Regel nicht mehr praktikabel. Somit stellt das Programm nicht in erster Linie einen Ersatz für eine typische Unterrichtstätigkeit dar, sondern erweitert diese und erlaubt damit zusätzliche Fragestellungen:

  • Wie unterscheiden sich Figuren, wenn man gerade oder ungerade Werte eingibt?
  • Welche Symmetrien finden sich auch in der natürlichen Umwelt, in der Natur oder Technik (z.B. Sechseck bei Schneeflocken)?
  • Welche Schnittmuster führen bei welchen Werten zu ästhetisch ansprechenden Resultaten?
Durch die Eingabe grösserer Parameter kann die Anzahl der Symmetrieachsen erweitert werden.

Damit wird klar, der Einsatz von Snap! kann den Geometrie-Unterricht bereichern. Und dies ohne dass dabei auf Webseiten zurückgegriffen werden muss, bei denen Schülerinnen und Schülern entweder unliebsamer Werbung ausgesetzt werden oder deren Tätigkeiten von Drittanbietern mitverfolgt werden.

Link: Scherenschnitt-Designer

Mehrstimmige Musik mit Snap!

Die blockbasierte Programmiersprache Snap! bietet verschiedene Möglichkeiten, Musik während der Programmausführung abzuspielen. Beispielsweise ist das Abspielen von Samples möglich. Dieser Beitrag beschreibt, wie man die interne Tonerzeugung nutzen kann, um mehrstimmige Musik zu programmieren.

Grundlagen

Grundlage der Musikprogrammierung sind die folgenden fünf Blöcke:

Mit diesen fünf Befehlen kann in Snap! ein eigenes Musikstück komponiert werden.

Mit dem Block „Tempo“ kann das Tempo des Musikstücks angegeben werden, wodurch eine Anpassung später einfach möglich ist.

Mit dem „Volumen“ wird die Lautstärke eines Tons festgelegt. Dies ist insbesondere bei mehrstimmigen Arrangements wichtig, da sich die einzelnen Töne sonst aufaddieren können und es möglicherweise zu einer Übersteuerung kommt, welche zu Störgeräuschen führt.

Beim „Instrument“ stehen die Grundvarianten Sinus (1), Rechteck (2), Sägezahn (3) und Dreieck (4) zu Verfügung, wobei Typen mit abruptem Wechsel des Signals (z.B. Rechteck) eher zu Klängen mit mehr Obertoncharakteristik führen.

Mit „Play note“ kann ein Ton der Klaviatur für eine mit „Beats“ angegebene Tonlänge bezogen auf das vorgegebene Tempo abgespielt werden.

Mit „Rest“ wartet das Programm eine vorgegebene Zeit (abhängig) von den Tempoeinstellungen.

Einfache Melodie

Eine einfache Melodie kann abgespielt werden, indem einfach eine Reihe von Tönen aneinandergereiht wird.

Das Beispiel spielt die ersten vier Töne des Kanons „Bruder Jakob“ ab.

Mehrstimmigkeit

Das Abspielen eines ganzen Akkords ist möglich, indem man mehrere zeitgleich abspielt. Dies funktioniert über den Launch-Befehl:

Da alle Töne gleichzeitig abgespielt werden, entsteht ein Akkord.

Polyphonie

Um Mehrstimmigkeit zu erreichen, ergänzen wir die das Abspielen eines Tones innerhalb des Launchblockes mit einem weiteren Befehl, welcher dem Programm mitteilt, ab welchem Zeitpunkt dieser Ton gespielt werden soll. Dazu verwenden wir den „Rest“-Befehl.

Bei diesem Beispiel werden die Töne nicht nur unterschiedlich lang gespielt, sie beginnen auch zu jeweils unterschiedlichen Zeitpunkten.

Musikdaten aus Liste auslesen

Das obige Beispiel zeigt, dass es schnell unübersichtlich wird, wenn man jeden einzelnen Ton über einen separaten Launchbefehl starten muss. Deshalb ist es sinnvoll, die einzelnen Töne in eine Liste zu verpacken und diese Liste zu benutzen, die Launchblöcke zu starten.

Eine entsprechende Liste lässt sich am schnellsten in einer Tabellenkalkulation erstellen und kann dann im CSV-Format in Snap! importiert werden (einfach auf die Programmoberfläche ziehen).

Jede Zeile enthält einen Ton mit entsprechenden Angaben zu den Tönen.

In der Spalte A steht jeweils die Tonhöhe. Die Spalte B gibt an, ab welchem Zeitpunkt ein Ton gespielt wird. Die Spalte C gibt die Tonlänge an und die Spalte D wählt das Instrument aus.

Das folgende Programm liest die CSV-Datei in eine Snap!-Liste (bruder_jakob) ein und arbeitet diese dann zeilenweise ab.

Jeder einzelne Ton wird ab einem vorgegebenen Zeitpunkt mit einer bestimmten Tonhöhe so lange wie angegeben abgespielt.

Mit Hilfe des Befehls „item n of list“ kann auf die einzelnen Werte innerhalb einer Tabellenzeile zugegriffen werden. Dadurch werden folgende Befehle abgearbeitet:

  1. Das Instrument wird gesetzt;
  2. Das Programm wartet eine vorgegebene Zeit.
  3. Der Ton wird für eine gegebene Zeitdauer abgespielt.
  4. Das Programm wartet, bis der Ton fertig gespielt wurde.

Damit wird das Abspielen eines mehrstimmigen Kanons mit Noten unterschiedlicher Länge und mit maximal vier verschiedenen Instrumentenfarben möglich.

Link zum fertigen Beispiel: Polyphonie mit mehreren Instrumenten

Verwendung im Unterricht

Das Programm kann im Musikunterricht verwendet werden, wenn Schülerinnen und Schüler sich mit Computermusik beschäftigen. Es kann aber auch Teil eines Projekts werden, bei denen die Lernenden Musikelemente in Multimediaprojekte (beispielsweise Computerspiele) einbinden wollen.

Darüber hinaus zeigt das fertige Beispiel ein wichtiges Prinzip der Informatik auf, nämlich die Trennung von ausführendem Programm und darin zu bearbeitenden Daten. Durch den Import weiterer Notendateien (in CSV-Format), kann das gleiche Programm zum Abspielen ganz unterschiedlicher Musikstücke verwendet werden.

 

Künstlerische Bildeffekte mit Snap!

Im Kurs „From Media Computation to Data Science“ stellen Jens Mönig und Jadga Huegle verschiedene Aspekte der Datenverarbeitung anhand von Bild und Musik vor. Unter anderem zeigen sie, wie ein Foto mit wenigen Snap!-Befehlen in ein kleines Kunstwerk im Stil des Pointilismus verwandelt werden kann.

Pointilismus

Dazu werden die Werte einzelner Pixel eines Fotos ausgelesen und anschliessend an der Originalstelle ein kleiner Kreis (Konfetti) gezeichnet. Je nach Grösse und Transparenz dieser Kreise entstehen so bereits interessante Bildeffekte.

Ein Foto wird durch das Auftragen von transparenten Kreisen im Stil des Pointilismus dargestellt.

Um ein solches Bild zu erzeugen, braucht man nur wenige Befehle, die viele Male wiederholt werden.

Zentraler Befehlsblock zum Erzeugen von Bildern im Stil des Pointilismus

Innerhalb einer Schlaufe werden die folgenden Befehle abgearbeitet:

  1. Der Zeichenstift wird vom Bild entfernt und über einem zufälligen Pixel platziert.
  2. Die Farbwerte des Pixels werden im HSV-Farbmodell ausgelesen.
  3. Der Stift wird auf die Zeichenfläche gesetzt und zeichnet dort einen Punkt mit vorher gewählter Grösse.

Farbstiftzeichnung

Während die erste Variante eher an ein Aquarell erinnert, kann die Kreisform auch durch Striche ersetzt werden, wodurch der Eindruck einer Farbstiftzeichnung entsteht.

Die Ausrichtung der einzelnen Striche kann über einen Richtungsparameter beeinflusst werden.

Diesen Effekt erzielt man in der Programmierung dadurch, dass man die Spitze des Stifts verkleinert und den Stift eine gewisse Strecke über die Zeichenfläche streichen lässt.

Mit nur wenigen Änderungen werden aus Punkten Farbstriche.

Gegenüber dem ursprünglichen Block (hier mit der umschliessenden Schlaufe dargestellt), verändert sich nur die Strichdicke und die Länge der Striche (von 0 auf 5 gesetzt), wobei alle Striche im 45° Winkel gezeichnet werden.

Der Farbton steuert die Richtung

Interessant wird es, wenn man die Richtung der einzelnen Striche vom Farbton eines Pixels abhängig macht. Dadurch entstehen an Farbübergängen interessante Effekte.

Bei diesem Bild entstehen insbesondere im Hintergrund interessante Strukturen.

Dieser Effekt wirkt bei Fotos mit kräftigen Farben besonders gut.

Die kräftigen Farben des Pfaffenhütchens in Verbindung mit den grünen Blättern und dem blauen Himmel akzentuieren die verschiedenen Strichrichtungen.

Ordnung und Zufall

Um noch etwas mehr Dynamik in solche Bilder zu bringen, kann man die Strichrichtung zusätzlich innerhalb von bestimmten Grenzen zufällig von der durch den Farbton gegebenen Richtung abweichen lassen.

Oft wirkt die Kombination von Ordnung und Chaos besonders reizvoll.

Die Programmierung

Die gesamte Programmierung für einen solchen Effekt, besteht aus drei Befehlsblöcken für den Hintergrund, die Verwaltung der Bilddateien und den eigentlichen künstlerischen Filter.

Zuerst wird der Hintergrund auf weiss gesetzt, wobei bei einigen Bildern ein schwarzer oder farbiger Hintergrund besser wirken mag. Ausserdem werden möglicherweise früher gesetzte Grafikeinstellungen zurückgesetzt.

Für die Einrichtung der Umgebung werden nur wenige Befehle verwendet.

Gleichzeitig wird eines von mehreren Bildern zufällig ausgewählt.

Einem Objekt (Sprite) können in Snap! mehrere Kostüme zugeordnet werden. Eines davon wird zufällig ausgewählt.

Der eigentliche künstlerische Filter unterscheidet sich von den bereits vorgestellten wieder nur durch kleine Anpassungen.

Der Filter selbst kann mithilfe verschiedener Parameter angepasst werden.

Kreative Freiheit durch Parameter

Durch das Anpassen der verschiedenen Parameter (Transparenz, Anzahl, Dicke und Länge der einzelnen Striche) können beliebige Fotografien dem eigenen Stilempfinden angepasst werden.

Mit jeder Generation von Snap! entpuppt sich die blockbasierte Programmierumgebung als universelleres Werkzeug, mit dem Konzepte der Informatik in ansprechender Weise veranschaulicht werden können.

Quelle aller Originalfotos: Ernst Giger

Geografie Quiz mit H5P

Bereits vor rund 2 Jahren entwickelte Fabian Dennler ein Geografie Quiz für H5P, welches aber erst kürzlich dank eines Blogbeitrags von Oliver Tacke mehr Beachtung fand. Obwohl das Lernmodul seither keine Aktualisierung mehr erfuhr, funktioniert es nach wie vor problemlos und gestattet es, Lokalisierungsaufgaben im Geografiebereich zu schreiben.

Dabei sind zwei Aufgabentypen möglich: Erstens kann das Lernmodul erkennen, ob auf ein bestimmtes Gebiet der Weltkarte geklickt wurde. Zweitens kann die Distanz von einer gewählten zu einer vorgegeben Position in Punkte umgerechnet werden.

Einstellungen

Folgende Optionen müssen nebst den einzelnen Orten oder Gebieten angegeben werden:

  • Kartentypen,
  • Geografisches Zentrum der Karte als Koordinate,
  • Zoomstufe der Karte.

Als Hintergrundbild können verschiedene Kartentypen gewählt werden, welche sich aufgrund von Detailgrad und Farbgebung für unterschiedliche Schwierigkeitsstufen eignen.

Das Geografiequiz bietet aktuelle vier funktionierende Kartentypen als Hintergrund an.

Der Kartenmittelpunkt kann über Koordinaten oder mittels einer Suchfunktion für Orte bestimmt werden. Die Zoomstufen reichen von 1 (gesamte Welt) bis 16 (Strassenebene). Für eine Gesamtübersicht über Europa bietet sich z.B. die Zoomstufe 4 an. Zu beachten ist, dass die Zoomstufe erst angezeigt wird, wenn man die H5P-Aktivität speichert.

Der Kartenausschnitt wird über eine Koordinate und die Zoomstufe festgelegt, kann aber später durch Verschieben und Zoomen noch angepasst werden.

Einzelne Fragen

Wie bei H5P üblich, können anschliessend einzelne Fragen der beiden erwähnten Typen (Gebiet und Koordinate) hinzugefügt werden.

Für die Gebiete muss erst die Option „area“ und anschliessend das gewünschte Gebiet (Länder in englischer Sprache) ausgewählt werden.

Im Quiz sind bereits die meisten Länder der Welt als Gebiete vorgegeben. Davon ausgenommen sind Zwergstaaten.

Für die Koordinaten wählt man die Option „location“ und kann anschliessend direkt eine Koordinate eingeben oder diese über eine Ortsbezeichnung direkt in der Aktivität suchen lassen.

    Die Suche nach Koordinaten mittels einer Ortsbezeichnung dauert jeweils ein paar Sekunden.

Sind die Einstellungen gesetzt und die entsprechenden Gebiete oder Koordinaten für die abgespeichert, kann die Aktivität aufgerufen werden.

Länder und Hauptstädte

Das Erstellen von eigenen Übungen kann etwas Zeit in Anspruch nehmen, da die entsprechenden Gebiete zuerst ausgewählt oder die Koordinaten bestimmt werden müssen. Deshalb können die Länder und Hauptstädte für folgende Gebiete hier heruntergeladen und bei Bedarf angepasst werden:

  • Afrika,
  • Asien,
  • Europa,
  • Nord- und Südamerika.

Länder und Hauptstädte Afrikas

Länder und Hauptstädte Asiens

Länder und Hauptstädte Europas

Länder und Hauptstädte Nord- und Südamerikas

Anpassen des Plugins

Falls man für das Plugin weitere Gebiete definieren möchte, lädt man eine Aktivität herunter, benennt diese in eine ZIP-Datei um und kann diese nun mit einem Programm wie 7-Zip editieren.

Im Ordner H5P-GeoQuiz-1.1 editiert man dazu die Datei semantics.json und fügt neue Gebiete nach folgendem Muster ein:

{
"value": "CHE",
"label": "Switzerland"
},

Bei Bedarf könnte man so auch die Gebietsnamen ins Deutsche übertragen.

Die eigentlichen Gebietsdefinitionen speichert man im Unterordner geojson-data im entsprechenden Format und mit dem gewählten Namen ab. Für die Schweiz sieht die entsprechende Datei z.B. so aus:

{"type":"FeatureCollection","features":[
{"type":"Feature","id":"CHE","properties":
{"name":"Switzerland"},"geometry":
{"type":"Polygon","coordinates":
[[[9.594226,47.525058],[9.632932,47.347601],
[9.47997,47.10281],[9.932448,46.920728],
[10.442701,46.893546],[10.363378,46.483571],
[9.922837,46.314899],[9.182882,46.440215],
[8.966306,46.036932],[8.489952,46.005151],
[8.31663,46.163642],[7.755992,45.82449],
[7.273851,45.776948],[6.843593,45.991147],
[6.5001,46.429673],[6.022609,46.27299],
[6.037389,46.725779],[6.768714,47.287708],
[6.736571,47.541801],[7.192202,47.449766],
[7.466759,47.620582],[8.317301,47.61358],
[8.522612,47.830828],[9.594226,47.525058]]]}}
]}

Um die entsprechenden geo.json-Datensätze zu erhalten, kann man ein Online-Werkzeug wie https://geojson.io verwenden. Allenfalls muss man dann anschliessend noch den Typ der Koordinaten in „Polygon“ ändern.

Einsatz im Unterricht

Die sogenannte „Pöstlergeografie“ ist zwar in den letzten Jahren etwas in Verruf geraten, weil sie nur Wissen vermittelt, welches man rasch nachschlagen kann, die meisten Schülerinnen und Schüler üben das Lokalisieren von Orten und Gebieten jedoch gerne. Und die bei Koordinaten von der Treffergenauigkeit abhängige Punktevergabe kann zu einer zusätzlichen Motivation führen, die Aufgabe möglichst gut zu lösen. Ausserdem zeigt sich recht schnell, sobald auf der Karte die Landesgrenzen nicht mehr zu sehen sind, ist es mit dem Wissen über die genaue Lage von verschiedenen Ländern und den Hauptstädten nicht besonders weit her.

Nebst den Ländern und Hauptstädten kann man selbstverständlich auch nach lokalen Orten suchen lassen, z.B. den Wohnadressen der einzelnen Schülerinnen und Schüler. Allerdings sollte man eine solche Übung aus Datenschutzgründen nur in einem geschlossenen System verwenden und den Download verhindern.

Für den Geografieunterricht ist das Geografiequiz auf jeden Fall ein Gewinn und kann gut auch als Zwischenbeschäftigung eingesetzt werden. Es ist zu hoffen, dass dieses in Zukunft weiterentwickelt und bald offiziell in die H5P-Lernaktivitäten integriert wird.

 

H5P: AR Scavenger

AR Scavenger ist ein neuer Aufgabentyp für H5P von Oliver Tacke (siehe dazu https://www.olivertacke.de/labs/). Die Grundidee dahinter ist, dass die Lernenden mit der Kamera ihres digitalen Geräts vorgefertigte Marker erfassen und dadurch bestimmte Aktionen wie einen Text anzeigen, eine Frage stellen, eine Tondatei abspielen etc. ausgelöst werden.

Als Marker dienen einfache Bilder mit möglichst hohem Kontrast. Falls die Möglichkeit zum Anzeigen von 3D-Objekten im Raum genutzt werden soll, müssen die Bilder einen asymmetrischen Aufbau aufweisen.

Unterrichtsbeispiel

AR Scavenger eignet sich überall dort, wo die analoge Umwelt mit der digitalen verknüpft werden soll. Im Unterricht kann der AR Scavenger beispielsweise für die Posten- oder Werkstattarbeit eingesetzt werden. Das folgende Beispiel ist für den Mathematikunterricht gedacht und verknüpft die Themen Platonische Körper und den Eulerschen Polyedersatz.

Das für die Aktivität benötige Material wird unter dem Marker „VORB“ beschrieben. Stellt man diesen den Lernenden nicht zu Verfügung, kann nur die Lehrperson die entsprechenden Anweisungen lesen. Nebst Beispielen für die Platonischen Körper werden noch eine einfache Präsentation und ein Bild von Euler benötigt:

Nach dem Start der Aktivität auf dem digitalen Gerät (z. B. Smartphone) visiert man die nachfolgenden Marker an. Diese informieren dann über den Auftrag oder stellen entsprechende Fragen. Im Klassenzimmer druckt man dazu die Marker aus (siehe weiter unten: Vorlage) und legt sie neben die zu benutzenden Gegenstände.

Damit die Aktivität einmal ohne Ausdruck der Marker ausprobiert werden kann, können stellvertretend drei Marker direkt auf der Webseite „abfotografiert“ werden.

Falls der Einleitungsbildschirm aktiviert wurde, muss man zuerst auf den blauen Startknopf in der App drücken. Nun wird die Kamera aktiviert (bewilligen) und der erste Marker kann anvisiert werden.

Beispielmarker: Start
Der Start-Marker wird im Beispiel verwendet, um in die Aufgabenstellung einzuführen.

Um die Anleitung, die beim Anvisieren des Markers angezeigt wird, zu verlassen, klickt man oben rechts auf das Hamburgermenü (mit den Häkchen), dann schaltet die App wieder in den Kameramodus.

Beispiel: Fragemarker
Wird dieser Fragemarker anvisiert, muss ein Lückentext gelöst werden.

Hat man die Fragen beantwortet, kann man abhängig von den entsprechenden Einstellungen die richtigen Antworten überprüfen oder sich wiederholt daran versuchen.

Beispielmarker: Ende
Der Endmarker verweist auf 10 Fragen, die in zufälliger Reihenfolge angezeigt werden.

Bei der Beispielaktivität werden die Lernenden gemeinsam instruiert und dann lösen sie die Aufgaben und Fragen A1 bis +5, respektive F1 bis F5. Dabei lernen sie Eigenschaften von Platonischen Körpern kennen. Die anschliessend zu bearbeitende Aufgabe 6 (A6 und F6) führt zum Eulerschen Polyedersatz. Die Endfragen werden dann im Klassenverband gelöst, damit vorher noch allfällige Fragen geklärt werden können.

Nun kann man sich natürlich die Frage stellen, weshalb der Aufwand mit dem Smartphone betrieben wird, wenn doch bisherige Posten- und Werkstattarbeiten auch gut mit Papier funktioniert haben. Gegenüber dem traditionellen Verfahren bietet der AR Scavenger folgende Vorteile:

  • Die Arbeitsanweisungen und Fragen können schneller angepasst (korrigiert, erweitert, umformuliert) werden, als dies bei Anweisungen auf Papier der Fall ist.
  • Die Medienvielfalt wird erweitert: Anstelle von Texten können 3D-Objekte, Ton- und Filmdokumente verwendet werden.
  • Die Schülerinnen und Schüler erhalten unmittelbare Rückmeldungen auf ihre Antworten.

Schreiben einer eigenen Aktivität

Nebst dem Erstellen der eigentlichen Inhalte (Anweisungen, Medien, Fragestellungen) benötigt die Verwaltung der Marker (Auswählen der Bilder, Generierung der Marker, Speichern und Ausdrucken am meisten Zeit. Deshalb findet sich hier eine entsprechende Gerüstdatei und die bereits dazu generierten Marker als Einzelbilder und zum Ausdrucken.

Zusatzmaterial zur Vorlage:

Bei den Kärtchen ist folgender Anwendungszweck vorgesehen:

  • START: Einführung in die Aufgabenstellung;
  • VORB: Hinweise zuhanden der Lehrperson;
  • A1 bis A9: Aufgabenstellungen zu den einzelnen Posten oder Objekten;
  • Z1 bis Z9: Zusatzmaterial zu den einzelnen Aufgaben oder Objekten, z. B. in der Form von Texten, Videos, oder Hörbeispielen;
  • F1 bis F2: Fragen zu den einzelnen Aufgaben oder Objekten;
  • ENDE: Schlussinformation oder Fragen zum gesamten Thema.

Weitere Verwendungsmöglichkeiten

Ausser bei der Posten- und Werkstattarbeit kann der AR Scavenger auch verwendet werden, um beispielsweise bei einer Stadtführung zusätzliche Informationen über spezielle Orte in der Form von Audiodateien zu Verfügung zu stellen. Allerdings sollte man dann vorher nachfragen, ob das Aufhängen der entsprechenden Marker in Ordnung geht.

Da alle Daten bereits beim Start heruntergeladen werden, ist der weitere Betrieb mit dem Smartphone dann ohne weitere Datenverbindung möglich.

Auch der Besuch eines Museums kann – ebenfalls in Absprache mit den Verantwortlichen – so einfach vorbereitet werden. Statt die Lernenden mit umfangreichen Dossiers auszustatten, können einfach die entsprechenden Marker angebracht werden.

Hat man mehr Kontrolle über die Lokalitäten, können entsprechende Marker sowohl spontaner als auch langfristiger verwendet werden. Typische Anwendungszenarien bieten sich hier z. B. bei Bestimmung von Pflanzen im Schulgarten, Informationen zu Labormaterialien im Chemie- und Physikunterricht, aber auch zu einzelnen Büchern in einer Bibliothek: Weshalb nicht eine Reihe von Büchern ausstellen, zu denen dann über den AR Scavenger einzelne Textstellen vorgelesen und anschliessend Fragen gestellt werden.

Einfacher Programmieren mit Snap 6.1

Anlässlich der SnapCon 2020 veröffentliche Jens Mönig die Version 6.1.0 von Snap!, welche nun eine Darstellung erlaubt, die sich eng an das textbasierte Programmieren anlehnt. In den Systemeinstellungen kann über den Menüpunkt „Fade blocks“, die farbenfrohe Umrandung einzelner Befehlsbausteine reduziert werden.

Übliche Darstellung von Snap!
Die übliche Darstellung von Snap! ist bewusst farbenfroh, damit die verschiedenen Blöcke gut voneinander unterschieden werden können.
Neue Darstellung von Snap!
Mit der neuen Einstellung lassen sich die Umrandungen der Blöcke komplett ausblenden. Damit wird die „Textstruktur“ von Snap ! sichtbar.

Selbstverständlich können über den entsprechenden Regler auch beliebige Zwischenstufen eingestellt werden.

Hyperblocks

Wichtiger als diese oberflächliche Gestaltung sind aber die Änderungen unter der Haube. So verfügt Snap! nun über sogenannte Hyperblocks, welche einerseits den Umgang mit grösseren Datenmengen (Bildern, Musik, Datensätzen) vereinfachen und Snap! in Bezug auf diese Anforderungen auch viel schneller machen.

Am Beispiel eines Bildes mit invertierten Farben soll gezeigt werden, was genau damit gemeint ist. Die Vereinfachung eines solchen Programms erfolgt in drei Schritten:

  1. Klassische Programmierung mit for-Schlaufen
  2. Programmierung mit dem map()-Befehl von Snap!
    Den gleichen Befehl findet man in etwas unterschiedlichen Varianten auch in der statistischen Programmiersprache R, wo er zu einem übersichtlicheren Code führt.
  3. Die Programmierung mit Hyperblocks

Klassische Programmeriung mit for-Schlaufen

Werden in Snap! for-Schlaufen verwendet, um mehrdimensionale Datensätze zu bearbeiten, kann es schnell unübersichtlich werden. Bilddateien werden in Snap! als Liste von Listen mit den vier Elementen R-, G-, B- und Alphakanal dargestellt. Um alle Pixel zu ändern, müssen zuerst die einzelnen Pixellisten aufgerufen und diese dann in einer verschachtelten for-Schlaufe bearbeitet werden. Durch die vielen Programmschritte steigt die Gefahr von Programmierfehlern und das Programm braucht auch ziemlich viel Zeit, um das neue Bild zu berechnen.

Variante mit for-Schlaufe
Für Programmieranfänger sind verschachtelte for-Schlaufen meist nur mit grosser Mühe nachzuvollziehen.

Progammierung mit dem map()-Befehl

Mit dem map()-Befehl wird das Programm nicht nur wesentlich übersichtlicher, es lauft auch um ein Vielfaches schneller als bei der for-Variante.

Variante mit map-Befehl
Die Variante mit dem map()-Befehl lässt schon wesentlich deutlicher erkennen, was das Snap!-Programm eigentlich tut.

Allerdings ist die Anwendung des map()-Befehls konzeptionell anspruchsvoller, weil die Datenstruktur hier bereits weiter abstrahiert wurde. In der Regel braucht es etwas Übung, bis eine solche Umsetzung problemlos gelingt.

Nachtrag vom 31.7.2020: Der Snap!-Entwickler bh schlug vor, den map()-Block wie folgt zu vereinfachen:

vereinfachter map-Block
Mit der Verwendung von lokalen Variablen kann der map()-Block noch einmal eleganter und effizienter verwendet werden.

Programmierung mit Hyperblocks

Die Verwendung von Hyperblocks abstrahiert die zugrunde liegenden Prozesse, ist aber konzeptionell einfacher zu verstehen als die weiter oben vorgestellten Methoden. Jens Mönig spricht im Zusammenhang mit Hyperblocks bezeichnenderweise von einer „fast naiven“ Programmierung.

Variante mit Hyperblocks
Der Vergleich mit der for-Variante zeigt deutlich, wie mächtig Snap! durch die Hyperblocks geworden ist.

Die wenigen Zeilen sind nicht nur wesentlich einfacher zu lesen, auch die Programmausführung wird dadurch noch einmal wesentlich beschleunigt. Damit erfüllen die Hyperblocks die ursprünglichen Zielsetzungen, Snap! für die Verwendung mit grösseren Datenmengen fit zu machen gleich zweifach: Ein einfacher zu lesender Programmcode geht mit einer für Multimedia-Experimente nun genügend schnellen Programmausführung Hand in Hand.

Verwendung im Unterricht

Schülerinnen und Schüler fertigen mit ihren Smartphones täglich neue Bilder an und verwenden dabei gerne auch Farbfilter. Deren Funktionsweise kann nun mit dem RGB-Farbmodell und wenigen Zeilen Code in Snap! einfach nachvollzogen werden. Die Invertierung eines Bildes ist nur eine Möglichkeit der Bildverfremdung, welche mit dem gezeigten kurzen Code möglich wird. Durch das Setzen der Parameter in liste1 können weitere Farbeffekte erzielt werden.

Farbfilter
Das Originalbild (links) wird invertiert (Mitte) und durch die Anpassung der Parameter farblich weiter verändert (rechts).

 

Schnupperlehrbrief mit Datenbankaktivität in Moodle

Spätestens ab der 2. Klasse der Sekundarstufe I wird die berufliche Orientierung ein Thema. Die Schülerinnen und Schüler sollen die Berufswelt theoretisch und praktisch kennenlernen. Ein besonders geeignetes Mittel dazu sind die Schnupperlehren.

Bevor die Schülerinnen und Schüler eine solche Schnupperlehre antreten, müssen sie häufig eine Schnupperlehrbewerbung schreiben. Den meisten Lernenden fällt dies nicht leicht, weshalb die zuständigen Lehrpersonen solche Schreiben meist mehrfach korrigieren müssen.

Da liegt es nahe, diese zeitaufwändige und im Gegensatz zur Korrektur von Lehrstellenbewerbungen wenig sinnvolle Arbeit zu automatisieren. In Moodle eignet sich dazu die Datenbankaktivtät. Drei Schritte sind notwendig, damit dies funktioniert.
1. Definieren der entsprechenden Eingabefelder,
2. Bereitstellen eines Eingabeformulars,
3. Schreiben eines Ausgabeformulars.

Eingabefelder

Bei den Eingabefeldern kann man sich auf wenige Typen beschränken. Für Namen, Adresszeilen, Telefonnummer und Interessen bietet sich das Textzeilenfeld an. Daten können mit dem Datumsfeld erfasst werden. Für Inhalte mit unterschiedlichen Ausprägungen, z.B. Schulfächer und Niveaus eignet sich das Einfachauswahl-Feld.

Bei der Definition der Eingabefelder lohnt es sich, das Design vorher zu planen, da diese in Moodle anschliessend nicht mehr beliebig umgestellt werden können.

Dateifelder
Für die Generierung der Datenbank wurden nur wenige Feldtypen verwendet.

Eingabeformular

Sind die Felder erst einmal alle definiert, kann das Eingabeformular entworfen werden. Dabei kann eine beliebige HTML-Seite gestaltet werden. Die eigentlichen Eingabefelder werden mit doppelten eckigen Klammern markiert: [[Beruf]]. Sie können an beliebigen Orten auf der HTML-Seite platziert werden.

Definition Eingabeformular
Das Eingabeformular wurde mit einem schlichten linearen Design entworfen.

Wenn die Lernenden einen neuen Eintrag erstellen, sehen sie folgende Eingabemaske.

Eingabeformular
Die Lernenden tragen die entsprechenden Informationen ins Eingabeformular ein.

Ausgabeformular

Genau gleich funktioniert das Erstellen des Ausgabeformular. Zusätzlich gibt es dort noch die Möglichkeit, weitere Funktionen über doppelte Hashtags einzufügen. So erzeugt z. B. ##edit## eine Schaltfläche, um zum Eingabemodus zurückzukehren. Für die Feinanpassung des Formulars kann man zusätzlich JavaScript einbinden.

Um beispielsweise die Anrede automatisch richtig zu verwenden, kann folgendes Script verwendet werden:

function anrede(anrede)
  {
  str = "geehrte"
  if (anrede=="Herr") str=str+"r";
  return str+" "+anrede;
  }

Dieses wird dann an der entsprechenden Stelle im Formular (auf HTML-Ansicht umstellen) wie folgt eingebunden:

<p>Sehr 
<script>
  document.write(anrede("[[Anrede]]"),
  " ",name("[[Person]]"))
</script>
</p>

Praktischerweise schreibt man die JavaScript-Elemente zuerst in einem passenden Editor, bevor man sie in das entsprechende Editierfeld in Moodle einfügt:

Entwurf im Editor
Für die Datenbankvorlage wurden vier Funktionen in JavaScript definiert, welche mithilfe der .split()-Methode die Eingaben der Lernenden etwas gefälliger formatieren.

Eine weitere Anpassung wurde für die Zeitspanne vorgenommen. Wenn z. B. das Anfangs- und Enddatum der möglichen Schnupperlehre in den gleichen Monat fallen, wird der Eintrag „vom 5. Oktober 2020 bis 16. Oktober 2020“ auf „vom 5. bis 16. Oktober 2020“ verkürzt. Das Briefdatum wird jeweils automatisch auf das letzte Speicherdatum gesetzt, wozu die Option ##timemodified## eingesetzt und mit JavaScript entsprechend formatiert wird.

Wurden alle Felder richtig eingesetzt und die entsprechenden Feinanpassungen mit JavaScript vorgenommen, kann der von der Datenbankaktivität derart generierte Text in eine Textverarbeitung kopiert und allenfalls noch nachbearbeitet werden. In der Regel ist dies aber nicht mehr notwendig.

Generierter Brief
Der Briefinhalt wurde aus der Einzelansicht der Datenbank direkt nach Word kopiert und muss nur noch minimal angepasst werden (z.B. Unterschrift).

Anmerkung

Gestaltet man die Listenansicht in der Datenbankaktivität entsprechend, erhält man als Lehrperson zusätzlich einen guten Einblick in den Stand der geplanten Schnupperlehren der Schülerinnen und Schüler.

Listenansicht der Datenbank
Die Listenansicht kann den eigenen Bedürfnissen angepasst werden. Hier werden die Verfasser(unkenntlich gemacht), die gewünschten Berufe und die möglichen Schnupperlehrtermine angezeigt.

Datenbankvorlage

Die Vorlage kann hier heruntergeladen werden: Datenbankvorlage.
Anschliessend kann die Datenbankvorlage in eine eigene Datenbankaktivität importiert und angepasst werden.

Feld zum Import von Datenbanken
Mit dem entsprechenden Dialog können Datenbankvorlagen in das eigene System importiert werden.

Damit die Vorlage verwendet werden kann, müssen nach dem Import noch die Felddefinitionen am Ende der entsprechenden Seite bestätigt werden.