Steganografie mit Snap!

Die Steganografie ist die Kunst, zusätzliche Informationen in einem Medium zu verstecken. In der Digitaltechnik geschieht dies häufig dadurch, dass ein bestimmtes, für Aussenstehende unauffälliges Bitmuster hinterlegt wird.

Das folgende Snap!-Beispiel verwendet eine einfachere Methode und nutzt die Tatsache, dass in einem Computersystem jeder Buchstabe auch durch eine Zahl repräsentiert werden kann. Diese Zahl wird dann einfach in einen Farbkanal von Bildpunkten geschrieben.

In diesem Kunstwerk aus Quadraten versteckt sich eine geheime Botschaft.

Programmierung in Snap!

Das Programm besteht aus zwei Teilen:

  1. Im Hauptteil, welcher direkt beim Start aufgerufen wird, berechnet das Programm für jeden Buchstaben einer Geheimbotschaft den entsprechenden nummerischen Wert und verwendet diesen dann, um den Grünkanal der einzelnen Farbquadrate zu setzen. Damit diese Veränderungen im Grünkanal nicht so augenfällig sind, werden für den Blau- und den Rotkanal zusätzlich zufällige Werte gesetzt.
  2. Das Auslesen der Bildinformation wird gestartet, sobald die Leertaste gedrückt wird. Dazu wird der Grünwert eines jeden Quadrates bestimmt und wieder in einen Buchstaben umgerechnet.
Mit diesen Befehlen kann eine vorher festgelegte Botschaft in das Bild kodiert und anschliessend auch wieder ausgelesen werden.

Um die farbigen Quadrate auf den Bildschirm zu zeichnen werden drei ineinander verschachtelte for-Schlaufen verwendet:

  1. Die z-Schlaufe zeichnet die einzelnen Quadrate, deren Farbe durch jeweils einen einzelnen Buchstaben bestimmt wird.
  2. Die x-Schlaufe rechnet für jeden Buchstaben den passenden Farbwert (Grünkanal) aus und zeichnet jeweils eine Zeile von Quadraten.
  3. Die y-Schlaufen bestimmt, wo die Quadratzeile auf dem Bildschirm platziert wird.

Dabei benutzt das Programm zusätzliche Bibliotheken, welche erst über das Dateimenü importiert werden müssen:

Die Funktion „set pen color“ ermöglicht das einfache Festlegen der Quadratfarbe nach dem RGB-Schema.

Die Funktion „multiline“ aus der Bibliothek „allow multi-line text input into a block“ erleichtert die Texteingabe für die Geheimnachricht.

Verwendung der Steganografie

Bei der Verschlüsselung von Daten sorgt man heute meist für Offenheit, was bedeutet, dass die Verfahren zur Verschlüsselung offengelegt werden können und es einer Drittperson trotzdem nicht in nützlicher Frist gelingt, die Geheimbotschaft zu lesen. Bei der Steganografie hingegen versucht man die Tatsache zu verschleiern, dass überhaupt eine geheime Mitteilung besteht. Verwendung findet dieses Verfahren deshalb in folgenden Situationen:

  • Bei verschiedenen Medien kann mittels der Steganografie ein Wasserzeichen eingebaut werden, welches Rückschlüsse auf die Weitergabe eines solchen Mediums zulässt. Dies ist beispielsweise dann nützlich, wenn überprüft werden soll, ob ein Copyright eingehalten wurde.
  • Mittels des gleichen Verfahrens ist es aber beispielsweise auch möglich, einen Schadcode, z.B. für einen Virus, in eine dafür geeignete Computerdatei einzufügen.

Verwendung in der Schule

In der Informatik können mit dem Programmbeispiel die Konzepte Variable, verschachtelte Schlaufen und die Kodierung von Zeichen und Farben thematisiert werden. Fortgeschrittene Schülerinnen und Schüler können den Kodierungsalgorithmus so anpassen, dass das Auslesen der Informationen durch eine Drittperson erschwert wird, indem beispielsweise mehr als ein Farbkanal für die Verschlüsselung verwendet wird (Rotation oder Auswahl eines RGB-Kanals abhängig vom zuletzt verschlüsselten Buchstaben). Etwas einfacher ist die Anpassung des Farbraums durch geschicktes Auswählen der Zufallszahlen für die nicht kodierten Farbkanäle.

Natürlich können sich die Schülerinnen und Schüler auch mit Geheimbotschaften hinterlegte Bilddateien austauschen. Sie können die Bilder mit einem Rechtsklick auf die Bühnenfläche (stage) speichern.

Ein Bild kann mittels der eingebauten Speicherfunktionen gesichert werden.

Ebenso einfach kann ein Bild geladen werden, indem man dieses dem Hintergrund als neues Kostüm zuordnet.

Ein Bild lädt man, indem man dem Hintergrund oder wahlweise einem anderen Objekt ein neues Kostüm zuordnet.

Damit steht dem Austausch von geheimen Botschaften innerhalb einer Klasse nichts mehr im Wege.

Quellen

Representing Data with Images and Sound (Kurs der Rasperry Pi Foundation auf FutureLearn), https://www.futurelearn.com/courses/representing-data-with-images-and-sound

Wikipedia: Steganografie, https://de.wikipedia.org/wiki/Steganographie#Ziele_der_Steganographie

Snap!-Roboter

Roboter können wesentliche Prinzipien der Informatik wie die Anwendung von Sensoren und Aktoren veranschaulichen. Allerdings kann die Verwendung von Robotern auch erhebliche Kosten bei deren Anschaffung verursachen, weshalb es zumindest für die Vermittlung von Grundprinzipien sinnvoll sein kann, das Verhalten von Robotern erst einmal zu simulieren, bevor man zur Hardware greift.

Der folgende Roboter wurde in Snap! programmiert. Er verfügt über zwei einfache Sensoren, welche dafür sorgen, dass sich der Roboter in eine neue Richtung dreht. (Bei einem richtigen Roboter würden diese Sensoren die Drehzahl von Motoren steuern.) Sobald der Sensor die Farbe Schwarz meldet, dreht sich der Roboter ab.

Pfad eines einfachen Roboters in seiner Umgebung.

Programmierung des Roboters

Die Programmierung des Roboters erfolgte über drei Elemente:

  • Umgebung,
  • Roboter und
  • Sensoren.

Innerhalb der Umgebung wurde ein Zeitgeber programmiert, welcher für die Taktung der weiteren Elemente sorgt, indem jeweils ein Signal versendet wird:

Der Roboter und seine Sensoren werden durch die Umgebung getaktet.

Innerhalb der Umgebung wird auch die Variable für die Laufrichtung des Roboters festgelegt.

Der Roboter selbst bewegt sich in jedem Zyklus um eine bestimmte Anzahl von Schritten in die berechnete Richtung.

Da es vorkommen kann, dass der Roboter aus dem Bild läuft, kann dieser mit der Leertaste auf den Nullpunkt zurückgeholt werden.

Der Zufallswert bei der Vorwärtsbewegung soll Abweichungen bei der Fahrt durch ein „physikalisches“ Gelände simulieren. Diese Ungenauigkeiten sorgen dafür, dass der Roboter sich nicht perfekt verhält, sondern sein Verhalten durch kleine Störungen beeinflusst werden. Lässt man hier einen grösseren Bereich zu, kann man damit Unzulänglichkeiten in der mechanischen Konstruktion nachbilden.

Ausserdem hinterlässt der Roboter eine Spur, durch welche sich sein Bewegungsmuster auch über eine längere Zeit verfolgen lässt.

Die eigentliche Steuerung des Roboters erfolgt über zwei seitlich angebrachte Sensoren:

Der Sensor reagiert auf die Farbe Schwarz. Dadurch zeigt der Roboter ein Vermeidungsverhalten gegenüber der Dunkelheit.

In jeden Schritt werden die Sensoren zuerst relativ zum Roboterkörper positioniert, was bei einem richtigen Roboter nicht notwendig ist. Wenn der Sensor auslöst, wird dies durch einen Kostümwechsel (grün) angezeigt und die Richtung, in welche sich der Roboter bewegt, wird angepasst. Auch hier werden Zufallswerte verwendet, um kleine Ungenauigkeiten einzuführen.

Verwendung im Unterricht

Die Simulation dient der Veranschaulichung von grundlegenden Elementen der Robotik. Die Lernenden können in Snap! den Hintergrund gestalten, um die Grenzen der einfachen Steuerung auszuloten. Mögliche Fragestellungen sind:

  • Welche Auswirkungen haben die Veränderungen von Steuerungswerten wie z.B. bei der Richtungsänderung oder Vorwärtsbewegung?
  • Bei welcher Umgebungsgestaltung verhält sich der Roboter nicht so wie geplant?
  • Kann die Anordnung der Sensoren für allgemeine oder spezielle Umgebungen optimiert werden?

Im Vordergrund steht hier also nicht die eigentliche Programmierung des Roboters, sondern dessen Interaktionen mit der Umgebung. Damit wird für die Lernenden schnell ersichtlich, wo die Grenzen einer einfachen Steuerung liegen und sie können damit besser nachvollziehen, weshalb die Programmierung eines komplexeren Verhaltens seine Tücken haben kann.

Quellen

Online-Kurs „Begin Robotics“ auf FutureLearn: https://www.futurelearn.com/courses/begin-robotics

Ben Ari und Mondada (2018). Elements of Robotics. SpringerOpen: https://link.springer.com/book/10.1007%2F978-3-319-62533-1

Fotofilter mit Snap!

Die Raspberry Pi Foundation bietet über FutureLearn interessante Kurse zum Bereich „Medien und Informatik“ an. Einer dieser Kurse, „Representing Data with Images and Sound: Bringing Data to Life“ greift unter anderem das Thema Foto-Filter auf und bietet dazu auch einige interessante Code-Beispiele mit Python, welche die Fähigkeiten von Anfängerinnen und Anfängern wohl teilweise übersteigen. Eine Umsetzung mit Snap! erleichtert nicht nur die Programmierung, durch die Verwendung der Webcam ist auch das Einbinden von Bilddateien wesentlich einfacher.

In Snap! programmierte Farbfilter. Das Originalbild befindet sich links oben.

Programmierung in Snap!

Ein geeignetes Bild kann man in Snap! mittels der Zusatzbibliothek „Pixels“ leicht über die Webcam aufnehmen.

In Snap! kann man einem Objekt (Sprite) ein Bild der Webcam als Kostüm zuweisen.

Der abgebildete Programmcode verschiebt zusätzlich das aufgenommene Bild in die linke obere Ecke.

Ein zweites Objekt liest nun die Pixel vom Bildschirm ab, rechnet diese um und bildet das Ergebnis an einer anderen Stelle des Bildschirms ab. Der folgende Programmcode erzeugt drei Abbildungen:

  • Graustufenbild: Alle drei Farbkanäle (Rot, Grün, Blau) werden auf den Wert des Rotkanals gesetzt;
  • Negativbild: Für alle drei Farben wird die neue Farbe berechnet, indem der Farbwert des Kanals von 255 subtrahiert wird.
  • Rotierende Farben: Jeder Farbwert wird mit einem Faktor multipliziert. Damit kein Wert grösser 255 entsteht, wird das Produkt anschliessend modulo 255 gerechnet, d.h., es handelt sich um den Rest nach einer Division durch 255.

Im Wesentlichen besteht das Programm aus zwei verschachtelten Schlaufen, die dafür sorgen, dass jeder Pixel ausgelesen wird. In der inneren Schlaufe wird der Farbwert ausgelesen, umgerechnet und ein entsprechender Pixel an der richtigen Stelle geschrieben.

Das Hauptprogramm rechnet die ausgelesenen Farbwerte in drei Varianten um und schreibt die so berechneten Bilder auf den Bildschirm.

Das verwendete Verfahren ist zwar sehr langsam, dafür aber recht anschaulich. Dieses kann gut anhand eines kleinen Bildes von Hand nachvollzogen werden, da die neuen Bilder zeilenweise auf dem Bildschirm erscheinen.

Verwendung im Unterricht

Foto-Filter gehören zum Alltag von Jugendlichen und werden von diesen auch gerne genutzt. Nebst dem technischen Aspekt (Medien und Informatik) kann das Beispiel auch im Kunstunterricht (Bildnerisches Gestalten) verwendet werden. Für ansprechende Farbfilter sind dabei unter Umständen schon recht komplexe Umrechnungen notwendig.

Haben die Schülerinnen und Schüler das Prinzip einmal begriffen, lädt die Aktivität zu umfangreichen Experimenten ein.

Quellen

Representing Data with Images and Sound: Bringing Data to Life: https://www.futurelearn.com/courses/representing-data-with-images-and-sound

Python: https://www.python.org

Raspberry Pi Foundation: https://www.raspberrypi.org

Snap-Programmierumgebung: https://snap.berkeley.edu/snap/snap.html

Zusammenfassen von Texten vorbereiten

An weiterführenden Schulen ist das Zusammenfassen von Texten eine Fähigkeit, die über den Erfolg des Lernens entscheiden kann, deshalb sollte sie auf der Sekundarstufe I regelmässig geübt werden. Allerdings zeigt sich auf, dass viele Lernende damit Schwierigkeiten haben. Dabei stehen sie vor allem vor zwei Herausforderungen:

  • wesentliche Schlüsselbegriffe im Text erkennen;
  • sich bei der Zusammenfassung auf das Wesentliche zu konzentrieren.

Beide Schritte können mit interaktiven H5P-Übungen ohne grossen Aufwand für die Lehrperson vorbereitet werden.

Ausgangsmaterial

Gerne wird auf der Sekundarstufe I darauf verwiesen, dass Lernende sich mittels der Wikipedia selbst schlau machen könnten. Meist zeigt sich dann aber schnell: Der Schwierigkeitsgrad dieser Texte übersteigt die Lesefertigkeiten der meisten Schüler bei weitem. Als geeignetere Quelle bietet sich deshalb das Klexikon an, da dessen Texte in einer leicht verständlichen Sprache verfasst sind.

Das Klexikon bietet zu vielen Themen leicht verständlich geschriebene Sachtexte.

H5P-Übung

Wie auch bei der Wikipedia sind im Klexikon Schlüsselbegriffe verlinkt, was den Aufbereitungsaufwand für H5P-Übungen verringert. Nachdem der Text in eine Textverarbeitung kopiert wurde, kann er dort bearbeitet werden. H5P macht es dem Nutzer besonders leicht, weil Schlüsselbegriffe einfach markiert werden können: *Schlüsselbegriff*.

Für die Übung selbst werden zwei Aufgabentypen von H5P verwendet:

  • Drag Text für den eigentlichen Lesetext,
  • Fill in the Blanks für Lückentexte.

Die Schlüsselwörter aus dem Text werden also zur Rekonstruktion des Texts durch die Lernenden verwendet. Dabei üben die Schülerinnen und Schüler Voraussagen über die mögliche Fortsetzung eines Textes zu machen und die Schlüsselwörter im Text erzielen durch das Verschieben und die anschliessende farbliche Hervorhebung eine grössere Aufmerksamkeit. Damit die Lernenden bei der Erarbeitung des Textes eine unmittelbare Rückmeldung erhalten, kann man die Einstellungen für „Drag Text“ entsprechend setzen.

Mit den richtigen Einstellungen erhalten die Lernenden eine unmittelbare Rückmeldung.

Für die Schülerinnen und Schüler präsentiert sich die Übung dann so (interaktives Beispiel am Schluss des Beitrags):

Bei der Aktivität „Drag Text“ ziehen die Lernenden Schlüsselbegriffe in den Text. Richtige Begriffe werden entsprechend markiert. Falsch platzierte Begriffe können korrigiert werden.

Nachdem die Lernenden den Text rekonstruiert haben, steht nun dessen Zusammenfassung an. Dazu wird die sogenannte „Topic – Comment“-Methode verwendet. Bei dieser Art der Zusammenfassung werden wichtige Schlüsselbegriffe durch weitere Fakten kommentiert. Dies kann relativ einfach in Form einer Liste mit Unterpunkten umgesetzt werden.

Uluru
- ein Berg in *Australien*
- ist auch unter dem Namen *Ayers* Rock bekannt

Um eine solche Liste zu schreiben, müssen die Lernenden nicht nur den Inhalt des Textes verstehen, es ist auch notwendig, dass sie sich Überlegungen zu einer sinnvollen (neuen) Struktur machen. Auf der Sekundarstufe I fällt auch dieser Schritt vielen Lernenden schwer. Eine Vorgabe durch die Lehrperson kann dabei helfen, die Schülerinnen und Schüler nach und nach an die Methode heranzuführen.

Da die Lernenden es nicht mehr mit einem neuen Lerngegenstand zu tun haben, wird nun anstelle der Zuordnungsübung ein Lückentext verwendet. Dessen Einstellungen werden wieder so gesetzt, dass Rückmeldungen unmittelbar erfolgen. Dazu aktiviert man in den Einstellungen die Option „Automatically check answers after input“.

In der Zusammenfassung müssen die Schülerinnen und Schüler wichtige Schlüsselbegriffe selbst ergänzen.

Zusammenfassung

Das Herauslesen und Zusammenfassen von Schlüsselinformationen aus Sachtexten ist für viele Schülerinnen und Schüler der Sekundarstufe eine Herausforderung, weshalb sie schrittweise an diese Aufgabe herangeführt werden sollten. Interaktive Übungen (z.B. mit H5P) sind dabei nicht nur hilfreich, sie können von Lehrpersonen auch mit vergleichsweise kleinem Aufwand schnell hergestellt werden.

Quellen

H5P: https://h5p.org/content-types-and-applications

Klexikon: https://klexikon.zum.de

„Topic – Content“-Methode aus Online-Kurs „Improving your study techniques“: https://www.futurelearn.com/courses/improving-study-techniques

Erweiterungen für Moodle: Gruppenwahl

Vor Beginn eines neuen Schuljahres müssen in Moodle-Installationen diverse Wartungsarbeiten durchgeführt werden. Dazu gehört auch das Einschreiben von Schülerinnen und Schülern in den entsprechenden Lerngruppen. Diese sind wichtig, weil darüber beispielsweise die Zuordnung von Prüfungsdaten im Kalender erfolgt.

Früher war dies eine aufwändige und fehlerbehaftete Angelegenheit, denn die zu Verfügung stehenden Daten waren meist unvollständig oder mit Fehler behaftet (Namen nicht richtig geschrieben, falsche Gruppeneinteilung, Gruppennamen nicht systematisch verwendet, …). Diese Daten mussten dann ins CSV-Format umgewandelt und mit entsprechenden Anpassungen hochgeladen werden. Erfolgte bei einzelnen Schülerinnen und Schülern eine Umteilung innerhalb des Semesters, mussten die Gruppen von Hand nachgeführt werden.

Um dieses Problem auf der Sekundarstufe I zu lösen, wo sich die Gruppen spätestens auf das Semesterende durch Umstufungen wieder verändern können, kann man die Erweiterung „Gruppenwahl“ (Group Choice) einsetzen. Dabei müssen die Lerngruppen zwar immer noch definiert werden, was in der Regel nur wenige Anpassungen bedingt, die Schülerinnen und Schüler können sich nun aber selbständig in die entsprechenden Gruppen einschreiben. Dies funktioniert in der Regel sehr gut, weil die Aktivität Gruppenwahl jeweils ganz am Anfang eines Kurses platziert wird.

Lernende können sich selbst in der entsprechenden Lerngruppe einschreiben. Dies entlastet die Lehrpersonen.

Damit die Lehrperson sieht, welche Schülerinnen und Schüler sich noch nicht in eine Gruppe eingeschrieben haben, ist es sinnvoll, die Option „Spalte für Teilnehmer/innen ohne Wahl“ zu aktivieren.

Lernende, welche sich noch nicht in eine Gruppe eingeschrieben haben, können in einer speziellen Spalte aufgeführt werden. (Im Beispiel wurden die Namen entfernt.)

Falls es sich als notwendig erweist, kann die Gruppeneinteilung nach wie vor über die üblichen Werkzeuge durch die Lehrperson erfolgen oder angepasst werden. Die Lernenden können diese mit der vorgestellten Aktivität jedoch jederzeit überschreiben. Damit die Schülerinnen und Schüler ihre Wahl später anpassen können, sollte man die Option „Änderung der Wahl erlauben“ aktivieren.

Möchte man noch einen Schritt weitergehen, kann man auch Erweiterungen verwenden, bei welchem die Schülerinnen und Schüler einer Gruppe aufgrund gewisser Eigenschaften zugeteilt werden, oder bei denen sie die Gruppen selbst definieren können.

Quellen:

Simulationen mit Snap!

Snap! eignet sich auch dafür, einfache Simulationen durchzuführen. Das vorliegende Beispiel zeigt die Simulation einer Population, deren Verhalten von den vorhandenen Ressourcen abhängt.

Kleine Lebewesen sind auf der Futtersuche. Die Zahlen zeigen an, wie viel sie schon gefressen haben.

Die Programmierung dieser Welt wird in drei Schritten aufgebaut:

  1. Die Welt schafft die Umgebung für die Lebewesen.
  2. Das Futter dient als Ressource für die Lebewesen.
  3. Die Lebewesen sind auf der Suche nach Futter. Der Erfolg dabei entscheidet über Tod, Weiterleben oder Vermehrung.

Die Welt

Die Welt wird durch den Bildschirm begrenzt und gibt den Zeittakt vor. Alle sechs Sekunden beginnt in der Welt ein neuer Tag. Der Tagesanbruch wird in Snap! durch eine Nachricht an alle mitgeteilt.

Die Welt verhält sich zyklisch und der Tagesanbruch wird durch eine entsprechende Mitteilung angekündigt.

Sobald das Programm (grüne Flagge) gestartet wird, beginnt das Programm ein Hintergrundgeräusch (Wellen) abzuspielen. Dieser Aspekt kann auch weggelassen werden, macht die Simulation aber stimmungsvoller.

Anschliessend wird in einer Endlosschleife der Tagesablauf programmiert: Im Laufe der Zeit wird der Hintergrund immer dunkler und zu Beginn jedes Tages wird mit „broadcast“ eine Mitteilung versendet, welche sowohl die Futterquelle als auch die Lebewesen beeinflusst.

Dieser Ansatz unterscheidet sich von vielen Simulationsprogrammen, wo jeweils eine gewisse Anzahl von Schritten für jedes Objekt der Simulation berechnet wird. Die Objektorientierung von Snap! erlaubt hier die parallele Abarbeitung von Befehlen. Es wäre jedoch auch möglich, einen traditionelleren Ansatz zu verfolgen.

Das Futter

Im vorliegenden Programm verhält sich das Futter (die Ressource) passiv. Zu Beginn eines neuen Tages werden Futterstücke zufällig in der Welt verteilt. Sobald sie in Berührung mit einem Lebewesen kommen, werden sie gefressen.

Das Futter wird jeweils zu Tagesbeginn neu in der Welt verteilt.

Das eigentliche Programm besteht aus vier Teilen, die abhängig von Ereignissen sind:

  1. Zu Beginn des Programms wird das bereits vorhandene Futterobjekt versteckt.
  2. Wenn ein neuer Tag beginnt, werden alle alten Futterobjekte gelöscht und Klone des Futterobjekts erzeugt. Klone sind Objekte, welche alle Eigenschaften des ursprünglichen Objekts erben.
  3. Jeder Klon wird an einer zufälligen Position auf dem Bildschirm angezeigt.
  4. Wenn der Klon mit einem Lebewesen in Berührung kommt, wird er gelöscht.

Der in Snap! mögliche Ansatz des Klonens erlaubt es, die Programmierung sehr einfach zu halten. Ausserdem kann das Verhalten der Klone an zentraler Stelle sehr einfach angepasst werden. So wären nur wenige Befehle im Block „When I start as a clone“ notwendig, um die Futterteilchen in der Welt herumschwimmen zu lassen.

Die bereits vorhandene Variable „lifespan“ könnte dazu genutzt werden, dass die Futterteilchen mehr als einen Tag zu Verfügung stehen.

Die Lebewesen

Die Lebewesen irren zufällig in der Welt herum (random walk). Wenn sie auf den Bildschirmrand treffen, drehen sie sich um und setzen ihre Bewegung fort.

In der aktuellen Programmierung sind die Lebewesen nicht in der Lage, aktiv nach Futter zu suchen, sondern sie finden dieses zufällig.

Auch die Programmierung der Lebewesen gliedert sich in vier Teile, welche abhängig von Ereignissen sind:

  1. Bei Programmstart wird das eigentliche Objekt versteckt und Klone werden erzeugt.
  2. Jeder Klon wird initialisiert, begibt sich an eine zufällige Stelle auf dem Bildschirm und wandert zufällig herum. Die Anzahl der bereits gefressenen Futterteilchen wird laufend angezeigt. Entfernt man den Befehl „say(food)“ fällt diese Anzeige weg.
  3. Wenn ein Lebewesen auf ein Futterteilchen stösst, wird die Variable „food“ erhöht.
  4. Zu Tagesbeginn sterben alle Lebewesen aus, welche über keine Futterreserven mehr verfügen. Wenn sie genügend gefressen haben, vermehren sie sich.

Vorteile von Snap! bei Simulationen

Durch die objektorientierte Programmierung, die Möglichkeit Nachrichten zu verschicken und die vorhandenen Befehle (z.B. zu Kollisionen) fällt das Schreiben einfacher Simulationen in Snap! leicht. Hat man einmal verstanden, wie eine solche einfache Simulation funktioniert, kann man diese durch zusätzliche Objekte komplexer gestalten oder zu einem interaktiven Spiel ausbauen.

Dabei kann es sich lohnen, die Simulation erst einmal mit Hilfe von realen Objekten durchzuspielen (z.B. mit Legosteinen), damit man eine bessere Vorstellung davon erhält, welche Ereignisse notwendig sind, damit die Programmierung funktioniert. Beim Ausprobieren der Simulation lohnt es sich auf jeden Fall, mit kleinen Anzahlen von Objekten zu beginnen. Dies vereinfacht es nicht nur, den Überblick zu behalten, sondern funktioniert auf leistungsschwachen Geräten auch reibungsloser.

Verwendung im Unterricht

Simulationen können im Unterricht breit eingesetzt werden. Während das vorliegende Beispiel sich vor allem für die Biologie eignet, kann die Simulation von Teilchen wichtige Konzepte der Physik veranschaulichen. Baut man die Simulation zu einem interaktiven Spiel aus, wird zusätzlich das Erzählen von Geschichten wichtig (Deutsch). Die Gestaltung der Futterquellen und der Lebewesen kann sehr einfach erfolgen, je nach Interesse der Schülerinnen und Schüler kann diese auch bis hin zu animierten Objekten ausgebaut werden (Bildnerisches Gestalten).

Landkarten mit Snap!

Snap! 5.0 verfügt über mächtige Befehle zum Darstellen von Landkarten.

Karte in der Watercolor-Darstellung. Die Darstellung ist nicht nur ästhetisch, sie eignet sich auch für Übungen mit stummen Karten. Abgebildet wurden Verkaufsstellen eines grösseren Anbieters.

Wenn man die Befehle für die Kartendarstellung dem Hintergrund zuordnet, kann man anschliessend beliebige Objekte auf der Karte platzieren. Dazu sind nur gerade drei Befehle notwendig:

Nur gerade drei Zeilen sind notwendig, um eine Landkarte in Snap darzustellen. Die restlichen Befehle dienen der Navigation in der Karte.

Damit der Kartenausschnitt beliebig verschoben und gezoomt werden kann, wurde eine Steuerung über die Pfeiltasten und die Plus- und Minustaste implementiert. Der Broadcast-Befehl sorgt dafür, dass beim Verschieben und Zoomen der Karte die eingezeichneten zusätzlichen Objekte am richtigen Ort positioniert werden.

Diese Objekte können von Hand eingetragen werden, besser ist es aber sicher, wenn man mit einer Liste (mit Längen- und Breitengraden) arbeitet.

Einzelne Objekte können aus einer Liste ausgelesen und auf der Karte platziert werden.

Unter Umständen bereitet die Bereitstellung der Liste Schwierigkeiten, weil die meisten Geolocation-Dienste unterdessen nur noch nach einer Registrierung oder gegen Bezahlung nutzbar sind. Für die Schweiz allerdings bietet das Geoportal des Bundes eine schulfreundliche Lösung: Adressen können in eine Exceltabelle eingetragen werden und diese generiert dann automatisch die entsprechenden von Snap! lesbaren Koordinaten.

Verwendung in der Schule

Mit den vorgestellten Befehlen von Snap! können Schülerinnen und Schüler auf einfache Weise ein rudimentäres Geografie-Informations-System aufbauen. Diese können für die verschiedensten Zwecke eingesetzt werden: Von Standort der Klassenmitglieder über die grössten Städte der Welt bis hin zur Darstellung aktiver Vulkane auf der Weltkarte. Je nach Interessen der Lernenden können unterschiedliche Objekte visualisiert werden. Verwendet man zusätzlich mehrere Kostüme, kann die Darstellung auch mit unterschiedlichen Symbolen erfolgen.

Hinweis: Die Schülerinnen und Schüler sind es gewohnt, dass sie den Standort ihrer Kolleginnen und Kollegen über die Dienste sozialer Netzwerke jederzeit anzeigen lassen können. Die Möglichkeiten von Snap! geben ihnen einen Einblick, wie solche Dienste funktionieren.

Quellen

Einfach Koordinaten von Adressen in der Schweiz generieren (Geoportal des Bundes)

Telefonbuch zum Finden von Adressen: https://tel.search.ch oder https://tel.local.ch/de

Höhenmodell mit Snap!

Höhenmodell der Schweiz mit Snap! visualisiert.

Ein Höhenmodell für die Schweiz kann man in Snap! mit wenigen Zeilen schreiben. Dazu wandelt man erst einmal die Daten des Höhenmodells (Quelle siehe weiter unten) in eine CSV-Datei um, indem man in der Originaldatei die Leerschläge durch Strichpunkte ersetzt. Anschliessend kann man die Datei einfach auf die Programmieroberfläche ziehen. Snap! wandelt die Datei automatisch in eine Variable (oder besser eine Liste von Listen) um.

Koordinatenliste mit x-, y- und z-Werten.

Auf einzelne Elemente einer Liste kann man einfach mit folgendem Befehl zugreifen:

Das Element 1 einer Liste wird zurückgegeben.

Da die Koordinaten der Schweizer Landeskarte von für die x-Werte von ca. 500’000 – 800’000 und für die y-Werte von ca. 70’000 – 300’000 reichen, müssen diese zuerst in die Bildschirmkoordinaten von Snap! umgerechnet werden.

Dafür eignet sich eine entsprechende Funktion:

Das Verwenden einer Funktion hat den Vorteil, dass eine spätere Anpassung nur an einem Ort im Programm durchgeführt werden muss.

Nun müssen an den einzelnen Bildschirmkoordinaten nur noch Punkte mit einer der Höhenangabe entsprechenden Farbe gezeichnet werden.

Das ganz Programm kann dann etwa so aussehen:

Aufgrund der vielen Daten ist die Laufzeit des Programms relativ hoch, deshalb kann auch nur mit einem Teil der Daten gearbeitet werden (Vorschaufunktion).

Wie bei grossen Datenmengen üblich lohnt es sich, in der Versuchsphase mit einem reduzierten Datensatz zu arbeiten. Damit können Fehler schnell korrigiert werden, ohne dass man jedes Mal lange warten muss. Im Programm funktioniert dies so, dass z.B. nur für jeden zwanzigsten Punkt Daten ausgelesen und gezeichnet werden.

Verwendung im Unterricht

Das Höhenmodell bietet eine gute Gelegenheit mit einem einfachen Beispiel in das Thema „Big Data“ einzusteigen. Im vorliegenden Fall ist der Datensatz gross, weil er sehr viele Werten enthält. Die Datenstruktur hingegen ist einfach.

Bei der Visualisierung kann man sich zusätzlich überlegen, welche Farbmodelle zum Einsatz kommen sollen, um die Höhenunterschiede von rund 5000 m in der Schweiz grafisch darzustellen.

Im Geografieunterricht kann das Modell zusätzlich verwendet werden, um verschiedene Höhenstufen darzustellen. Im einfachsten Fall färbt man einfach alle Höhenwerte blau ein, die grösser als ein kritischer Wert sind, und bekommt so ein Modell, welches einen ansteigenden Meeresspiegel visualisiert. Den gleichen Trick kann man für hohe Werte anwenden, um beispielsweise durch Weissfärbung eine mögliche Gletscherbedeckung zu simulieren. Dies dürfte dann unweigerlich zur Frage führen, wie es denn in anderen Gebieten der Welt aussieht. Vorausgesetzt man findet die passenden Daten, kann man das Programm entsprechend anpassen. Allerdings muss man dann sehr wahrscheinlich noch die entsprechenden Koordinaten umrechnen.

Höhenmodell mit Abstufungen: Das Schweizer Mittelland ist deutlich zu erkennen, ebenso wie die alpine Region.

Quellen:

Das digitale Höhenmodell der Schweiz mit einer Maschenweite von 200 m

Schweizer Landeskarte

Audio-Spektrum mit Snap!

In der Version 5.0 von Snap! sind einige neue Funktionen enthalten. Damit ist es beispielsweise möglich, ein Audio-Spektrum darzustellen, wie Jens Mönig (Entwickler von Snap!), im Februar 2019 in einem Youtube-Video zeigte. Basierend auf dieser Grundlage wird hier eine grafisch erweiterte Version gezeigt.

Mit wenigen Zeilen ist es möglich, mit der Programmiersprache Snap! ein Audio-Spektrum anzuzeigen.

Das Hauptprogramm besteht aus einer For-Schleife, welche die Werte für die einzelnen Frequenzen auf dem Bildschirm darstellt.

Die Daten für die grafische Darstellung werden im Mikrofon-Sensor als Liste gespeichert.

Insgesamt liefert der neue Sensor folgende Daten:

  • Volumen als Dezimalzahl,
  • Note als Nummer entsprechend der MIDI-Vorgabe,
  • Frequenz der Hauptnote in Hertz,
  • Spektrum als Liste von natürlichen Zahlen (einschliesslich 0),
  • Samples als Liste Dezimalzahlen zwischen -1 und 1,
  • sowie technische Details zur Samplingrate und Auflösung.

Für das Audio-Spektrum wird die Option „spectrum“ verwendet.

Damit die grafische Ausgabe des Programms etwas hübscher aussieht, werden die Farben bei jedem Durchlauf verändert.

Ausserdem können über zwei Schieberegler die Lautstärke (Höhe in der Grafik) und der Frequenzbereich des Spektrums angepasst werden.

Dazu wurden zwei neue Objekte definiert, welche mit der Maus auf der x-Achse verschoben werden können. Die Position der Objekte beeinflusst dann die Variablen zur Steuerung von Lautstärke und Bereich. Da die Programmierung beider Objekte sehr ähnlich ist, kann zuerst nur ein Objekt hergestellt und dieses dann geklont und anschliessend angepasst werden.

Steuerung der Lautstärke:

Die Lautstärke wird über die x-Position des entsprechenden Objekts gesteuert. Je nach Computer sollten einzelne Werte noch angepasst werden.

Steuerung des Frequenzbereichs:

Die Steuerung für den Frequenzbereich funktioniert fast gleich wie die für die Lautstärke.

Nun ist es möglich, das Spektrum der Qualität der Aufnahme anzupassen.

Anwendung im Unterricht

Nebst der Programmierung im Informatikunterricht, welche in der einfachsten Form wenig Zeit in Anspruch nimmt, kann das Audio-Spektrum vor allem in der Physik (Akustik) und im Musikunterricht angewendet werden, wenn die Bedeutung der Obertöne für das Klangempfinden einzelner Instrumente thematisiert werden. Es kann aber auch durchaus reizvoll sein, die Spektren der Stimmen einzelner Schülerinnen und Schüler miteinander zu vergleichen.

Quellen

Mönig (2019). Making a Guzdial Style Uke Demo with Snap! in 5 Minutes

Harvey und Mönig (2019) Snap! 5.0 Reference Manual (PDF)

Vom Buchstabe zur Sprachgenerierung

Der Sprachwissenschaftler François Conrad führt den harten Klang der deutschen Sprache unter anderem auf die Silbenstruktur des Deutschen zurück. Diese Aussage bietet sich an, um ein einfaches Computerprogramm zu schreiben, welches mittels einer Menge von Buchstaben Morpheme (Laute mit Bedeutung) bildet und daraus Wörter (und Sätze) zusammensetzt.

Hauptbildschirm des mit Snap! geschriebenen Programms: Am oberen Bildrand sind einige Listen zu sehen, welche die Zufallsgenerierung ermöglichen. Unten rechts sind die Werte einiger im Programm verwendeten Variablen sichtbar.

Bei der Programmierung des Sprachengenerators können folgende informatorischen Konzepte eingesetzt werden:

  • Variablen (und Listen),
  • Schleifen,
  • Funktionen (wiederkehrende Programmblöcke).

Bevor man mit der Programmierung beginnt, ist es lohnenswert, sich den Programmablauf vor Augen zu führen.

Flowchart des Programms
Das Flussdiagramm zeigt den Ablauf des Programms. Zwei ineinander verschachtelte Schlaufen erzeugen zuerst einzelne Wörter und dann ganze Sätze.

In einem ersten Arbeitsschritt sollen Morpheme (bedeutungstragende Laute gebildet und zu Wörtern zusammengesetzt werden. Dazu werden Konsonanten und Vokale nach vorgegebenen Regeln (im Programm die morphemes-Liste) aneinandergereiht. Die Anzahl der gebildeten Morpheme bestimmt die Wortlänge.

Das gleiche Verfahren wenden kann dann auch für die Bildung von ganzen Sätzen verwendet werden.

Um das Programm etwas attraktiver zu gestalten, werden die Sätze mit einer Erweiterung von Snap! in gesprochene Sprache umgewandelt.

Das hört sich dann beispielsweise so an:

Natürlich ist die Ausgabe abhängig von den generierten Zeichenketten und der Einstellung der Sprachausgabe.

Das Programm im Detail

Das Programm besteht aus einem Anfangsblock und einer einer bedingten Anweisung, welche immer dann ausgeführt wird, wenn die Leertaste (space) gedrückt wird.

Code des Hauptprogramms in Snap!
Einmal abgesehen von der Initialisierung der Variablen, kann das eigentliche Programm in Snap! mit wenigen Zeilen geschrieben werden.

Die eigentliche Schleife wurde in einen sogenannten „warp“-Block eingefügt, weil damit dieser Programmteil schneller läuft. Ansonsten kann der Ablauf des Programms Schritt für Schritt studiert werden, was vor allem bei der Fehlersuche hilfreich ist.

Abgesehen vom Hauptprogramm kommen noch zwei Funktionen zum Einsatz. Die mehrfach verwendete Funktion randomitem() ist äusserst einfach gehalten:

randomitem() wählt ein zufälliges Element aus einer Liste aus.

Etwas komplexer ist die Funktion zur Generierung der einzelnen Morpheme:

buildmorph() generiert einzelne Morpheme. Dabei verwendet die Funktion die vorgegebene Morphem-Struktur, z.B. CV oder CVC.

Die Morpheme werden also aus einzelnen Konsonanten (C) und Vokalen (V) zusammengesetzt, je nachdem an welcher Stelle eines einzelnen Morphems sich die for-Schleife gerade befindet.

Verwendung im Unterricht

Im Medien- und Informatikunterricht der Sekundarstufe I stehen jeweils im 1. und 3. Schuljahr je eine Jahreslektion zu Verfügung. Deshalb lohnt es sich nicht, Schülerinnen und Schüler das ganze Programm selbständig erarbeiten zu lassen. In Snap! ist es aber möglich, Programmvorlagen zu Verfügung zu stellen, auf denen die Lernenden dann aufbauen können. Je nach Schwerpunkt kann dann ein anderer Teil des Codes ergänzt oder erweitert werden.

Läuft das Programm erst einmal, kann es im Sprachunterricht zum Einsatz kommen, um die Struktur verschiedener Sprachen auf spielerische Weise zu entdecken. Welche Elemente müssen vorgegeben werden, damit der Computer „Italienisch“, „Tamil“ oder „Polnisch“ erzeugt? Die Lernenden können dazu Hypothesen aufstellen und diese anschliessend in kleinen Experimenten überprüfen.

Möglich wäre auch eine Erweiterung zu einer Art Gedichtgenerator für künstliche Sprachen. Für Schülerinnen und Schüler der Sekundarstufe II könnte die Herausforderung darin liegen, das Programm in Hinblick auf eine künstliche Grammatik zu erweitern.

Quellen:

Conrad (2019). Warum klingt das Deutsche so (schön) hart?

Mermaid Live Editor (erzeugt Flussdiagramme aus Textdateien)

Online-Editor der Programmiersprache Snap!