Hier werden verschiedene Erkenntnisse aus der Forschung zum Thema Programmieren in der Volksschule vorgestellt. Die Zusammenfassungen sollen dazu anleiten, sich differenziert mit dem Thema auseinanderzusetzen und sich dabei auf wissenschaftliche Erkenntnisse zu stützen.

Eine Diskussion über die Ergebnisse findet auf folgendem Arbeitsdokument statt:

https://docs.google.com/document/d/1MVPlnMX48Gs1UG3ZS3x8yDDZ_oTNBdJdg7AIZnaylKI/edit?usp=sharing

Arbeitstechniken

Verschiedene Arbeitstechniken, die aus der Privatwirtschaft bekannt sind, können auch beim Programmieren in der Volksschule angewendet werden. Dazu gehören Pair Programming (auch: Paarprogrammierung), also das Programmieren zu zweit und das Daily Standup, bei dem die Ziele des Tages oder eben der jeweiligen Lektion bekanntgegeben werden.

Arbeitstechniken und ergänzende Informationen

Die Paarprogrammierung wurde vor allem in der Softwareentwicklung in der Privatwirtschaft und weniger in der Volksschule beforscht. Erste Studien lassen jedoch erahnen, dass in der Volksschule die Arbeit in Teams dazu beiträgt, dass Schülerinnen und Schüler motivierter sind, Aufgaben fertig zu programmieren und qualitativ bessere Artefakte abgeben (Denner et al., 2014). Dies gilt vor allem für Jugendliche, die bisher wenig Vorerfahrung im Programmieren haben. Vorausgesetzt wird jedoch, dass die Lehrperson effiziente Paare bildet. Das heisst: Die Jugendlichen sollen sich kennen und sich mit den jeweiligen Partnern/innen wohl fühlen. Oft ist dies eher in gleichgeschlechtlichen Teams der Fall. Partner/innen sollen über ähnlich weit entwickelte Programmiervorkenntnisse verfügen. Für eine Person ist von Vorteil, wenn der Partner über ein bisschen bessere Vorkenntnisse verfügt. In diesem Fall ist mit einem proportional grösseren Wissenszuwachs zu rechnen. Der Wissensvorsprung darf jedoch nicht zu gross sein.

Schülerinnen und Schüler, die nur ungerne in Gruppen arbeiten, ist davon abzuraten, Pair Programming aufzuzwingen. Dies würde sich nicht nur negativ auf die Motivation der Person auswirken, sondern auch auf das Lernen des Partners, der eigentlich gerne in einer Partnerarbeit programmieren würde.

Beim Paarprogrammieren werden typischerweise zwei Rollen eingenommen: Der Pilot, der an der Tastatur und an der Maus ist, und der Navigator, der den Code kontrolliert und vorgibt, was wie programmiert werden soll. In regelmässigen Abständen von 20 Minuten sollen die Rollen getauscht werden. Im folgenden Video von Code.org zu Pair Programming werden die Rollen detailliert vorgestellt: https://www.youtube.com/watch?v=vgkahOzFH2Q (Datum des Zugriffs: 24.6.2020)

Weitere Techniken des sogenannten «agile project management», die bei Programmierern bekannt und in der Schule eingesetzt werden können, sind folgende: Beim Daily Standup werden die Ziele des Tages oder - in der Schule - der aktuellen Lektion bekanntgegeben. Wichtig hierbei ist, dass alle Schülerinnen und Schüler aufstehen, ihre Geräte und somit potenzielle Ablenkung am Platz zurücklassen und nach vorne kommen. Die Zusammenkünfte sollen kurz und abwechslungsreich gestaltet werden (Grotendorst, 2020). Hierzu fehlen zurzeit noch anknüpfende Forschungsprojekte aus der Volksschule

Der Review am Ende der Lektion dient dazu, zurückzublicken und beispielweise folgende Fragen zu beantworten: «Was haben wir heute gelernt? Welche Konzepte der Informatik wurden angewandt? Wo tauchen diese Konzepte im Alltag auf?» (Grotendorst, 2020).

Wer sagt was

Denner, J., Werner, L., Campe, S., & Ortiz, E. (2014). Pair Programming: Under What Conditions Is It Advantageous for Middle School Students? Journal of Research on Technology in Education, 46(3), 277–296. https://doi.org/10.1080/15391523.2014.888272

In dieser Studie wurden 320 Mittelstufenschüler/innen bezüglich Solo- oder Paarprogrammierung untersucht.

***

Grotendorst, T. (2020, Mai 20). Fobizz—Programmieren lernen mit Scratch: Praktische Tipps zur Unterrichtsplanung. https://plattform.fobizz.com/courses/15-programmieren-lernen-mit-scratch

Auf der Webseite von Fobizz werden verschiedene Kurse für Lehrpersonen rund um die Themen des Programmierens und der Digitalisierung angeboten. Im Kurs «Programmieren lernen mit Scratch» werden verschiedene Arbeitstechniken vorgestellt, die sich gemäss den Aussagen der Autoren in der Schule bewährt haben.

Aufgabentypen

Beim Erlernen von Programmierkonzepten können verschiedene Typen von Aufgaben eingesetzt werden. Diese können zum Beispiel in die Kategorien USE, MODIFY und CREATE unterteilt werden.

Verschiedene Unterteilungen von Aufgabentypen

Katharina Geldreich, Mike Talbot und Peter Hubwieser veröffentlichen im Jahr 2019 (Geldreich et al.,) eine Zusammenfassung von Aufgaben, die beim Programmieren, hier spezifisch mit Scratch, eingesetzt werden können. Diese Weiterführung basiert auf die Arbeit von Irene Lee et al. (2011), die den «Use-Modify-Create»-Zugang für die Arbeit mit Schülerinnen und Schüler vorgeschlagen haben. Ursprünglich wurde dieser Ansatz vorgeschlagen, wenn komplexere Programmierumgebungen in Klassen verwendet wurden. Die aufbauenden Schritte können jedoch generell auf den Programmierunterricht übertragen werden.

USE:

Programme nachbauen (Code zu Code). Z. B. mit einer Anleitung ein Programm nachprogrammieren.

Blöcke erkunden (Code zu Text). Notieren, welche Funktion die einzelnen Blöcke haben. Eignet sich bei der Einführung von unbekannten Blöcken.

Programme lesen (Code zu Text). Kann auch zunächst von einem Blatt gelesen werden. Die Ausführung des Programms dient dazu, Vermutungen zu überprüfen.

Programme lesen und Fehler finden (Code zu Code): Fehler im Programm werden gesucht und markiert.

Programme testen (Code zu Text). Hierbei wird getestet, ob bei der Ausführung des Programms das eintrifft, was erwartet wurde. Auch Randfälle (Eingabe von 0 oder unerwartete Werte und Datentypen) sollen getestet werden, da diese zu fehlerhaften Ausführungen der Programme führen können.

MODIFY:

Programme debuggen (Code zu Text und Code). Fehler werden gesucht und das Programm korrigiert.

Programme erweitern (Code zu Text und Code). Ausnahmen werden getestet und das Programm so optimiert, dass es in jedem Fall ausgeführt werden kann.

CREATE:

Programmieren nach bildlichen Vorgaben (Bild zu Code). Das Produkt soll nach einer Bildergeschichte nachprogrammiert werden.

Programmieren nach Vorgaben als Video (Video zu Code). Das Endprodukt wird als Video präsentiert. Die Schülerinnen und Schüler überlegen sich, wie sie die Vorgaben erfüllen können und erstellen das Programm dazu (siehe Scratch-Challenges).

Programmieren nach textlichen Vorgaben (Text zu Code). Die Schülerinnen und Schüler programmieren nach einer Vorgabe als Text. Hier können gewissen Ziele als Bonus-Ziele bezeichnet werden.

Programmieren eigener Ideen nach textlichen Vorgaben (Text zu Code). Eine Grundidee wird vorgegeben, welche mit individuellen Umsetzungen erreicht werden kann.

Eine Variante des UMC-Zugangs («use-modify-create») stellen Sue Sentance und Jane Waite (2017) vor: Die Einteilung PRIMM.

Predict: Voraussage und Zusammenfassung, was ein ausgeführtes Programm machen wird.

Run: Programme ausführen, um eine Voraussage zu überprüfen

Investigate: Erklären, Verfolgen, Kommentieren, Debuggen von bestehenden Programmen

Modify: Bestehende Programme modifizieren, um deren Funktion zu ändern

Make: Neue Programme erstellen

Predict, run und investigate sind hierbei bei Use (von «Use-Modify-Create») zu verorten. Die beiden weiteren Schritte sind deckungsgleich.

Wer sagt was

Lee, I., Martin, F., Denner, J., Coulter, B., Allan, W., Erickson, J., Malyn-Smith, J., & Werner, L. (2011). Computational thinking for youth in practice. ACM Inroads, 2(1), 32–37. https://doi.org/10.1145/1929887.1929902

Detaillierte Auseinandersetzung mit dem Zugange «Use-Modify-Create».

***

Sentance, S., & Waite, J. (2017). PRIMM: Exploring pedagogical approaches for teaching text-based programming in school. Proceedings of the 12th Workshop on Primary and Secondary Computing Education, 113–114. https://doi.org/10.1145/3137065.3137084

Vorstellung des Zuganges PRIMM («Predict, Run, Investigate, Modify, Make»). Basiert auf UMC von Irene Lee (2011)

***

Geldreich, K., Talbot, M., & Hubwieser, P. (2019). Aufgabe ist nicht gleich Aufgabe – Vielfältige Aufgabentypen bewusst in Scratch einsetzen. https://doi.org/10.18420/INFOS2019-C3

Aufgabensammlung zum Zugang «use – modify - create». Spezifisch für Scratch. In deutscher Sprache

Blockbasiert VS textbasierte Programmierung

Programmierkonzepte lassen sich sowohl mit block- wie auch mit textbasierten Programmierlernumgebungen einführen. Beide Zugänge haben verschiedene Vor- und Nachteile.

Vorteile und Nachteile der verschiedenen Programmierlernumgebungen.

Blockbasierte Programmierlernumgebungen:

Auswahl von Plattformen:

Argumente für blockbasierte Programmierlernumgebungen:

  • Verständliche Beschreibung der Blöcke

  • Interaktion durch «Drag-and-Drop»

  • Programmiersprache einfach zu durchsuchen

  • Einfach zu bedienen

  • Weniger Fehleranfällig, weil die Befehle nicht eingetippter werden müssen (Syntax)

Sarah Otts (2016) schätzt die Scratch als verzeihende Programmierlernumgebung, die zum Ausprobieren, Tüfteln, Erforschen und Erschaffen von spannenden Spielen und Animationen einlädt. Trotzdem sei Scratch ist eine Turing-vollständige Sprache, was bedeutet, dass sie alle grundlegenden Funktionen eines Algorithmus erfüllen kann. Weitere genannte Vorteile der Plattform sind, dass sie sich besonders gut eignet, um Ideen schnell umzusetzen und Programmierkonzepte spielerisch zu erlernen. So gelingt der Einstieg in andere, zum Beispiel textbasierte Programmiersprachen viel einfacher, wenn grundlegende Konzepte in Scratch bereits bekannt sind (Weintrop & Wilensky, 2015).

Resnick et al. (2009), die geistigen Väter und Mütter von Scratch, betonen, dass die Idee der Programmierumgebung auf Prinzipien von Papert basiert. Dieser hat bereits in den 1970er und 80er-Jahren mit Logo eine erste Programmiersprache für den Unterricht erschaffen. Papert hielt bereits damals fest, dass eine Programmierlernumgebung folgende Prinzipien zu erfüllen habe:

  • Low floor: Einfach zu starten, unkomplizierter Einstieg.

  • Wide walls: Viele verschiedene Arten von Projekten unterstützen, damit viele Interessen und Lerntypen angesprochen werden (siehe Abschnitt Projektarten).

  • High ceiling: Die Programmiersprache soll auch für grössere und komplexe Projekte verwendet werden können.

Gerade das letzte Prinzip wird von blockbasierten Lernwerkzeugen nicht oder nur schlecht erfüllt. Darum verfolgen die Erschaffer von Scratch zusätzlich weitere Prinzipien, die sich gut mit der Idee des Lehrplans 21 vereinbaren lassen:

More Tinkerable: Scratch setzt viel Wert darauf, ein unkompliziertes «Basteln» zu ermöglichen: Ideen sollen möglichst widerstandslos ausprobiert werden können, um so schnell über Prototypen zu verfügen, die sukzessive weiterentwickelt werden können. Die Programmierung soll auch dazu dienen, mit Sensoren und Aktoren (z. B. einem Lego Mindstorms) zu interagieren.

More Meaningful: Die Programmierung soll für den Ersteller sinnvoll und von grosser Bedeutung sein. Das wird vor allem dann erfüllt, wenn viele verschiedene Typen von Projekten ermöglicht werden. So können die persönlichen Interessen der Schülerinnen und Schüler verfolgt werden, anstatt lediglich mit vorgegebenen Aufgaben zu lernen, die wenig Eigenkreativität zulassen. Ebenfalls ist es wertvoll, wenn die Projekte personalisiert werden können, z. B. indem eigene Grafiken, Fotos und Audioaufnahmen darin integriert werden können.

More Social: Als letztes Prinzip verfolgt die Plattform von Scratch den sozialen Austausch zwischen den Programmiererinnen und Programmierern. Das soll zu einer Gemeinschaft führen, in der gegenseitige Unterstützung, Kollaboration und Kritik von Projekten ermöglicht wird. Auch sollen Projekte übernommen und weiterentwickelt werden können, ohne jemandem das Gefühl zu geben, die eigene Arbeit sei gestohlen worden. Bei einem sogenannten «Remix» wird automatisch auf den Ursprung des Projekts hingewiesen, was den/die ursprüngliche/n Erschaffer/in des Programms würdigt und verfolgen lässt, wie eigene Ideen weiterentwickelt werden können. Mittlerweile entstehen ca. 15% aller Projekte auf Scratch aus einem sogenannten Remix.

Textbasierte Programmierlernumgebungen:

Auswahl von Plattformen:

Argumente für textbasierten Programmierlernumgebungen:

  • Die kognitive Belastung (cognitive load) auf die Schülerinnen und Schüler wird vermindert, indem einzelne Programmierkonzepte nacheinander eingeführt werden.

  • Reduktion der sichtbaren Elemente: Der gesamte Sprachumfang muss nicht sichtbar sein, sondern nur das, was tatsächlich verwendet wird.

Eine ausführlichere Klassifikation von didaktischen Programmierumgebungen wurde durch Hielscher und Döbeli Honegger (2015) vorgenommen und ist auf folgender Webseite aufrufbar: https://mia.phsz.ch/Informatikdidaktik/ProgrammierUmgebungen (Datum des Zugriffs: 25.6.2020)

Wer sagt was

Weintrop, D., & Wilensky, U. (2015). To block or not to block, that is the question: Students’ perceptions of blocks-based programming. Proceedings of the 14th International Conference on Interaction Design and Children - IDC ’15, 199–208. https://doi.org/10.1145/2771839.2771860

In dieser Studie werden verschiedene Vor- und Nachteile der blockbasierten Programmierung aufgezählt. Bei einer Befragung von Schülerinnen und Schüler geben mehr als die Hälfte der Schülerinnen und Schüler an, dass blockbasierte Programmierumgebungen einfacher seien zu bedienen. Nur 4 von 84 befragten Schülerinnen und Schülern bevorzugen Java (textbasierte Programmierumgebung) im Vergleich zu Snap! (blockbasierte Programmierumgebung)

***

Hielscher, M., & Honegger, B. D. (2015). Lernumgebungen für den Einstieg ins Programmieren: Versuch einer Klassifikation. Pädagogische Hochschule Schwyz.

Arbeit aus dem Jahr 2015, welche sieben Kriterien zur Einschätzung von Programmierlernumgebungen vorschlägt. Die Frage zur blockbasierten oder textbasierten Programmierumgebung wird im Abschnitt «Bedienbarkeitsaspekt» kurz aufgegriffen.

***

Otts, S. (2016). How I Think about Scratch and Computer Science. Medium. https://medium.com/scratchteam-blog/how-i-think-about-scratch-and-computer-science-b376111a5df

Eine Zusammenstellung der Vorteile und Möglichkeiten bei der Arbeit mit Scratch. Ebenfalls wird darauf eingegangen, welche überfachlichen Kompetenzen beim Programmieren gelernt werden.

***

Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., Millner, A., Rosenbaum, E., Silver, J., Silverman, B., & Kafai, Y. (2009). Scratch: Programming for all. Communications of the ACM, 52(11), 60–67. https://doi.org/10.1145/1592761.1592779

Eine Zusammenstellung der Vorteile und Möglichkeiten bei der Arbeit mit Scratch. Hier wird auch auf die Überlegungen zur Weiterentwicklung erster Programmierlernsprachen wie Logo eingegangen, die bei Scratch eine wichtige Rolle gespielt haben.

Kompetenzen

Verschiedene Kompetenzen beeinflussen die Programmierfähigkeiten und können auch für sich alleine gestellt geübt und gestärkt werden.

Kompetenzen, die einen Einfluss auf die Programmierfähigkeiten haben.

Probleme lösen

Larissa Meyer (2022) stellt auf ihrer Webseite wichtige Erkenntnisse und Strategien zur Problemlösung vor:

https://problemloesen.weebly.com/

Kompetenzen im digitale Zeitalter

Sarah Genner (2019) sammelt Kompetenzen, die im 21. Jahrhundert wichtig sind. Viele davon beeinflussen die Programmierfähigkeiten:

https://www.researchgate.net/publication/333652891_Kompetenzen_und_Grundwerte_im_digitalen_Zeitalter


[Liste (noch) nicht komplettiert. Um Hinweise und Ideen an adrian.degonda@gmail.com bin ich sehr dankbar]

Programmierkonzepte (Didaktik)

Welche Programmierkonzepte sollen Schülerinnen und Schüler erlernen? Diese Frage wird zumindest in der Deutschschweiz teilweise durch den Lehrplan 21 beantwortet. Einige weitere Konzepte werden immer wieder erwähnt, finden jedoch im Lehrplan 21 keine direkte Nennung.

Programmierkonzepte, die in der Volksschule gelernt werden (sollen).

Im Lehrplan 21 werden verschiedene Programmierkompetenzen namentlich aufgeführt. Im Zyklus 2 sind das folgende:

  • Schleifen

  • Bedingte Anweisungen

  • Parameter

Diese sollen zuerst erkannt, beschreiben und strukturiert dargestellt werden. Später kommen das Lesen und die manuelle Ausführung dazu. Zuletzt werden Programme mit ebendiesen Programmierkonzepten geschrieben und getestet.

Im Zyklus 3 kommen folgende Konzepte hinzu:

  • Variablen

  • Unterprogramme

Die genannten Konzepte dienen dazu, Abläufe genau zu beschreiben, später eigene Programme damit zu kreieren, zu überprüfen und zu verbessern. Hinzu kommen der Vergleich und die Beurteilung von Algorithmen.

In der Kompetenz MI.2.1: "Datenstrukturen" werden logische Operatoren aufgeführt, die eine wichtige Rolle beim Programmieren spielen. «Und», «oder» und «nicht» sollen im Zyklus 3 erlernt und angewendet werden.

Der Lehrplan 21 beschränkt sich somit auf einige wenige Kompetenzstufen, die mit verschiedene Programmierlernumgebungen erlernt und angewendet werden können.

In Studien werden oft weitere Programmierkonzepte aufgeführt, die für die Schülerinnen und Schüler wichtig sind und beim Erlernen des Programmierens früher oder später miteinbezogen werden sollen. Diese werden sind unter anderen folgende:

In der Studie von Meerbaum-Salant et al. (2010) werden folgende Programmierkonzepte aufgeführt und bei den Schülerinnen und Schülern in einem Posttest überprüft, wie gut sie diese verstanden haben.

  • Initialisierung (speziell schwierig zu verstehen. Kann sprachlich verwechselt werden mit einem Ereignis)

  • Schleifen

  • Bedingte Schleifen

  • Nachrichtenübermittlung

  • Variablen (speziell schwierig zu verstehen)

  • Nebenläufigkeit (speziell schwierig zu verstehen).

  • Zwei verschiedene Arten von Nebenläufigkeit:

    • Typ 1: Mehrere Figuren werden zum gleichen Zeitpunkt ausgeführt (z. B. zwei Tänzer/innen).

    • Typ 2: Nebenläufigkeit in einer einzelnen Figur: (z. B. Pac-Man bewegt sich auf dem Spielfeld und bewegt seinen Mund).

Hierbei ist den Autoren aufgefallen, dass vor allem Initialisierung, Variablen und Nebenläufigkeit als besonders abstrakte und somit schwierig zu verstehenden Konzepten gelten. Sie weisen jedoch auch darauf hin, dass eine klare und verständliche Einführung der Konzepte im Unterricht wesentlich dazu beiträgt, dass diese besser und nachhaltiger verstanden werden.

Michael Hielscher und Beat Döbeli Honegger (2015) schlagen folgende Programmierkonzepte vor, um die Mächtigkeit einer Programmierlernumgebung einzuschätzen:

  • Bedingungen

  • Wiederholungen (Schleifen)

  • Rekursion

  • Variablen

  • Datentypen

  • Objektorientierung

  • Prozedur (Unterprogramm)

Diese scheinen also eine wichtige Rolle bei den meisten Werkzeugen zu spielen, die erstens zum Erlernen des Programmierens genutzt werden und zweitens sowohl für block- wie auch für textbasierte Programmiersprachen eine wichtige Rolle spielen.


Wer sagt was

Meerbaum-Salant, O., Armoni, M., & Ben-Ari, M. (Moti). (2010). Learning computer science concepts with scratch. Proceedings of the Sixth International Workshop on Computing Education Research - ICER ’10, 69. https://doi.org/10.1145/1839594.1839607

Studie mit quantitatven und qualitativen Tools. Hier wurden Pre-, Interim- und Posttests mit Klassen von 18 und 28 Schülerinnen und Schüler im Altern von 14 bis 15 Jahre durchgeführt. Der Kompetenzzuwachs wurde gemessen, nachdem während eines Semesters je 2 Lektionen mit Scratch programmiert worden ist.

***

Hielscher, M., & Honegger, B. D. (2015). Lernumgebungen für den Einstieg ins Programmieren: Versuch einer Klassifikation. Pädagogische Hochschule Schwyz.

Arbeit aus dem Jahr 2015, welche sieben Kriterien zur Einschätzung von Programmierlernumgebungen vorschlägt.

***

Deutschschweizer Erziehungsdirektoren-Konferenz (D-EDK), Hrsg. 2016. «Medien und Informatik, 2 Informatik, 2 Algorithmen» In Lehrplan 21. Von der D-EDK Plenarversammlung am 31.10.2014 zur Einführung in den Kantonen freigegebene Vorlage, bereinigte Fassung vom 29.2.2016, 15–47. Luzern: D-EDK-Geschäftsstelle. https://zh.lehrplan.ch/101kksSVtTYN3Zf8Ad8WhTrCgB8HhPgbd (Datum des Zugriffs: 15.06.2020)

Kompetenzbereich Informatik, Kompetenz 2: Algorithmen.

Programmier-lernumgebung

Programmierumgebungen lassen sich mit verschiedenen Kriterien unterscheiden. Abgesehen davon, ob textbasiert oder blockbasiert programmiert wird, können weitere Kriterien zur Einschätzung von Programmierumgebungen verwendet werden.

Beispiele von Kriterien für Programmierumgebungen

Michael Hielscher und Beat Döbeli Honegger (2015) schlagen sieben Kriterien vor, um eine Programmierlernumgebung einzuschätzen. Diese sind:

  • Repräsentation: Dieser reichen von einem Physischen System (z. B. der Programmierung eines Roboters) bis hin zu einer Simulation auf dem Computer.

  • Interaktivität: Sind Inputs möglich? Kommen Sensoren vor?

  • Koordination: Wird ein oder werden mehrere Objekte programmiert?

  • Ausführung: Sequentiell und/oder ereignisbasiert?

  • Notation: Textbasierte, blockbasierte-, oder grafische (Icons) Programmierung?

  • Didaktisierung: Vorgegebene Aufgaben oder offene Lernumgebung?

  • Mächtigkeit: Welche Konzepte lassen sich anwenden? Bedingungen / Wiederholungen / Rekursion / Variablen / Datentypen / Objektorientierung / Prozedur (Unterprogramm)

Wer sagt was

Hielscher, M., & Honegger, B. D. (2015). Lernumgebungen für den Einstieg ins Programmieren: Versuch einer Klassifikation. Pädagogische Hochschule Schwyz.

Arbeit aus dem Jahr 2015, welche sieben Kriterien zur Einschätzung von Programmierlernumgebungen vorschlägt.

Sammlung von Programmierumgebungen

Eine Sammlung von Programmierumgebungen steht zum Beispiel auf dem Portal von SRF Digital zur Verfügung:

https://www.srf.ch/radio-srf-3/digital/spielend-programmieren-lernen (Datum des Zugriffs: 25.6.2020)

Ebenfalls haben Michael Hielscher und Beat Döbeli Honegger eine ausführliche Sammlung erstellt. Hier werden die einzelnen Plattformen mit den von ihnen vorgestellten Kriterien beurteilt.

https://programmingwiki.de/index.php?title=Lernumgebungen

Projektarten

Schülerinnen und Schüler können verschiedene Arten von Projekten programmieren. Diese können sich in Aufwand und Komplexität unterscheiden (Funke et al., 2017). Mögliche Unterscheidungen sind Story, Animation und Game. Games gelten als komplexere und herausforderndere Projekte als Story oder Animation.

Beispiele von verschiedenen Projektarten

Story (Geschichte)

Eine Geschichte wird erzählt. Mehrere Figuren kommunizieren miteinander. Hierbei wird nicht zwangsläufig eine Interaktion durch den/der Benutzer/in vorausgesetzt ausser dem Starten des Programms.

Beispiel einer Story in Scratch:

Animation

Figuren bewegen sich und werden hierbei animiert (Wechsel zwischen verschiedenen Bildern). Auch hier wird keine Interaktion des/der Benutzer/in vorausgesetzt. Der Fokus liegt hier weniger auf der Geschichte und dem Erzählen als auf der Bewegung von verschiedenen Objekten. Zusätzlich können Animationen ohne einen Abschluss programmiert werden – zum Beispiel in Form einer Uhr, bei der die einzelnen Zifferblätter programmiert werden.

Beispiel einer Animation in Scratch:

Game (Computerspiel)

Eine oder verschiedene Figuren werden vom Benutzer des Programms gesteuert. Ein zu erreichendes Ziel wird vorgegeben und das Spiel kann entweder gewonnen oder verloren werden.

Beispiel eines Games in Scratch:

Simulation

Bei der Simulation können ein oder verschiedene Parameter eingestellt, was zu einer unterschiedlichen Ausführung des Programms führt. Es wird also ein Modell eines Problems oder eines Ereignisses erstellt, um dieses besser untersuchen zu können. Eine Simulation gibt typischerweise nach einer gewissen Zeit ein Ergebnis aus, das dann untersucht und besprochen werden kann.

Beispiel einer Simulation in Scratch:

Weitere Arten von Projekten

Weiter werden interaktive Nachrichten, virtuelle Rundgänge, Geburtstagskarten, animierte Tänze, interaktive Tutorials und viele weitere Arten von Produkten von verschiedenen Autoren aufgezählt, die oft nicht ganz genau einer Art zugewiesen werden können (Resnick et al., 2009).

Wer sagt was

Funke, A., Geldreich, K., & Hubwieser, P. (2017). Analysis of scratch projects of an introductory programming course for primary school students. 2017 IEEE Global Engineering Education Conference (EDUCON), 1229–1236. https://doi.org/10.1109/EDUCON.2017.7943005

Studie mit 58 Kindern im Alter von 9 bis 10 Jahren. In der Studie wird zwischen Story, Animation und Game unterschieden. In der Studie werden die drei Arten Story, Animation und Game eingeführt. In einem Abschlussprojekt können die Schülerinnen und Schüler eigene Projekte erstellen.

***

Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., Millner, A., Rosenbaum, E., Silver, J., Silverman, B., & Kafai, Y. (2009). Scratch: Programming for all. Communications of the ACM, 52(11), 60–67. https://doi.org/10.1145/1592761.1592779

Bei dieser Einführung von Scratch werden verschiedene Artefakte aufgezählt, die in Scratch erstellt werden können.

Verständnistiefe und Beurteilung

Die Verständnistiefe des Programmierens kann anhand von Projekten von Schülerinnen und Schülern analysiert werden. Hierfür stehen verschiedene Beurteilungswerkzeuge oder Taxonomien zur Verfügung. In verschiedenen Studien wurden die Taxonomiestufen nach Bloom und die SOLO-Taxonomie verwendet. Oft wurde hierbei jedoch kritisiert, dass diese Werkzeuge sich nur bedingt eignen, um die Verständnistiefe von Programmierkonzepten bei Jugendlichen zu ermitteln.

Beurteilungswerkzeuge zur Ermittlung der Verständnistiefe:

Mögliche Abstufungen (Level) des Verständnisses gemäss SOLO-Taxonomie (Funke et al., 2017) (Meerbaum-Salant et al., 2010):

  • Vorstrukturiert (L1): Wenige Sequenzen werden im Programm verwendet. Kein Verständnis, wie das Projekt zu einem sinnvollen Programm erweitert werden kann.

  • Einfach strukturiert (L2): Das Programm beinhaltet einfache Sequenzen. Kontrollstrukturen werden kaum oder zusammenhangslos verwendet.

  • Mehrfach strukturiert (L3): Die Projekte erfüllen gewisse Vorgaben (mehrere Figuren, Bewegung in den Figuren, Schleifen, bedingte Anweisungen) und weisen verschiedene Blocktypen auf.

  • Relational (L4): Das Programm ist logisch strukturiert, verbindet Skripts miteinander und weist keine Redundanzen auf.

  • Erweitert abstrakt (L5): Das Programm weist mehr Konzepte und Blöcke auf (??) als die Vorgaben (mehrere Figuren, Bewegung in den Figuren, Schleifen, bedingte Anweisungen) um eine verbesserte Lösung zu gestalten.

Beurteilung der Verständnistiefe mit der Taxonomie von Bloom (Meerbaum-Salant et al., 2010):

Die kognitiven Dimensionen der Taxonomie nach Bloom lauten: Wiederholen, Verstehen, Anwenden, Analysieren, Evaluieren und Kreieren.

Die vier Wissensdimensionen lauten: Fachwissen, Konzeptwissen, Prozedurales Wissen und Metakognitives Wissen.

Meerbaum-Salant et al. (2010) haben ein neues Beurteilungswerkzeug kreiert, das sich aus den beiden Taxonomien SOLO und Bloom zusammensetzt. Hierbei wurden jeweils die drei sinnvollsten Kategorien beider Taxonomien verwendet und miteinander kombiniert. Bei diesem neuen Werkzeug können jeweils Einfach strukturierte, mehrfach strukturierte und relationale Programme darauf überprüft werden, ob diese (1) verstanden worden sind, (2) angewendet werden oder (3) kreiert werden können. Verstehen, Anwenden und Kreieren werden folgendermassen unterschieden (vergleiche Abschnitt «Aufgabentypen»):

  • Verstehen: Die Fähigkeit, Programmierkonzepte zusammenzufassen, zu erklären und ein Beispiel zu liefern.

  • Anwenden: Die Fähigkeit, Algorithmen oder Programme auszuführen und dabei Schritt für Schritt zu verstehen und deren Ziel zu erkennen.

  • Kreieren: Die Fähigkeit, Programme oder Algorithmen zu planen und herzustellen.

Um im Unterricht Programmierprojekte, hier speziell solche, die mit Scratch erstellt worden sind, zu beurteilen, eignen sich verschiedene Methoden, die Carlos Leon und Katie MacDonald (2016) vorstellen. Die Autoren weisen auch darauf hin, ob die Methoden eher formativ oder summativ bewerten, ob eher die Lehrperson oder der/die Schüler/in beurteilt und wer die zu erreichenden Ziele definiert. Die vorgestellten Methoden sind:

  • Kriterienraster [summativ]

  • Dr. Scratch [summativ]

  • Projektportfolio (nicht nur 1 Projekt, sondern Portfolio) [sowohl summativ wie auch formativ]

  • Checkliste (angepasst an Projekte) [summativ]

  • Galerie (Ausstellung der Produkte) [formativ]

  • Gespräche/Austausch (Interviews) basierend auf Artefakte [sowohl summativ wie auch formativ]

  • Kriterien anhand Computational Thinking. [sowohl summativ wie auch formativ]

  • Design Szenarien? [formativ]

  • Schüler Design Tagebücher [formativ]

  • Peer Feedback in kleinen Gruppen [formativ]


Wer sagt was

Funke, A., Geldreich, K., & Hubwieser, P. (2017). Analysis of scratch projects of an introductory programming course for primary school students. 2017 IEEE Global Engineering Education Conference (EDUCON), 1229–1236. https://doi.org/10.1109/EDUCON.2017.7943005

Studie mit 58 Kindern im Alter von 9 bis 10 Jahren. In der Studie wird erkannt, dass vor allem Projekte der Art Game höhere Level erreichen. Die Autoren der Studie erwähnen jedoch auch, dass die SOLO-Taxonomie nur bedingt geeignet ist, um Projekte zu analysieren.

***

Meerbaum-Salant, O., Armoni, M., & Ben-Ari, M. (Moti). (2010). Learning computer science concepts with scratch. Proceedings of the Sixth International Workshop on Computing Education Research - ICER ’10, 69. https://doi.org/10.1145/1839594.1839607

Studie mit quantitatven und qualitativen Tools. Hier wurden Pre-, Interim- und Posttests mit Klassen von 18 und 28 Schülerinnen und Schüler im Altern von 14 bis 15 Jahre durchgeführt. Der Kompetenzzuwachs wurde gemessen, nachdem während eines Semesters je 2 Lektionen mit Scratch programmiert worden ist.

***

Leon, C., & MacDonald, K. (2016, Mai 16). Beyond the Rubric: Methods for Assessing Scratch Projects | ScratchEd. ScratchEd. beyond-rubric-methods-assessing-scratch-projects.html

Carlos Leon und Katie MacDonald stellen in einem öffentlich zugänglichen Dokument verschiedene Methoden zur Beurteilung vor.

Zugänge zum Programmieren

Informatikunterricht kann mit verschiedenen grundlegenden Ausrichtungen oder Ideologien stattfinden. Diese beeinflussen, wenn konsequent umgesetzt, auch den Programmierunterricht massgebend. Mit Blick auf aktuelle Lehrmittel und Unterrichtsmaterialien kann behauptet werden, dass verschiedene dieser Zugänge auch aktiv eingesetzt werden.

Beispiele von Zugängen zum Programmierunterricht

Die folgende Auflistung (Döbeli Honegger & Hielscher, 2019) wurde in einer Vorlesung vorgestellt und deckt mehrere mögliche Auseinandersetzungen mit Informatik, oder hier genauer mit dem Programmieren ab. Somit ermöglicht sie eine Kategorisierung und zeigtgewissen Tendenzen, die eine genauere Einteilung des Programmierunterrichts ermöglichen. Dort wo sinnvoll und möglich, wurden die Zugänge mit aktuellen Beispielen ergänzt.

Zugang Mathematisch / Problemlösend

Hier wird vor allem eine mathematische Sichtweise der Informatik beleuchtet. Typisches Beispiel für diesen Zugang ist das Lehrmittel «einfach Informatik», bei welchem fast ausschliesslich Aufgaben gelöst werden, die eine mathematische oder geometrische Herausforderung darstellen.

Zugang Robotik (be-greifbar machen)

Verschiedene Programmierlernplattformen erlauben es, Roboter zu steuern. So zum Beispiel Scratch, mit welcher unter anderen die Roboter von Lego Mindstorms und der Thymio von Mobsya programmiert werden können. XLogo Online 1 bietet die Möglichkeit, die programmierten Sequenzen auf einen Blue Bot zu übertragen. Weiter stehen zu wohl jedem Roboter, welcher im Unterricht eingesetzt werden kann, eine Programmierumgebung zur Verfügung.

Zugang Making/Microcomputer

Als niederschwelligen Zugang zu Making eignen sich Produkte wie der Makey Makey (https://makeymakey.com/). Auch dieser kann mit Scratch programmiert werden. Eingesetzt werden kann diese Platine jedoch mit allen Programmierumgebungen, welche die Eingabe einer bestimmten Taste überprüfen können. Weitere bekannte Platinen sind der micro:bit (https://microbit.org/) und der Calliope mini (https://calliope.cc/en). Auch hier stehen meistens verschiedene Programmiersprachen und -umgebungen zur Verfügung, um die Platinen sinnvoll in den Unterricht einbinden zu können und den Zugang zum Programmieren zu vereinfachen.

Zugang CS-unplugged

Das Ziel dieses Zuganges besteht darin, Konzepte der Informatik ohne Zuhilfenahme eines Computers zu erlernen. Dazu können verschiedene Spiele, szenische Lesungen und weiteres Anschauungsmaterial verwendet werden, um die meisten Kompetenzen aus der Informatik zu erlernen. Beim Programmieren wird es jedoch schwierig, auf Strom zu verzichten. Eine Möglichkeit bieten Aufgaben wie Code lesen oder ausgeschnittene Holzblöcke, mit denen blockbasiert programmiert werden kann. Ob die gemachten Überlegungen jedoch schlussendlich funktionieren, muss sinnvollerweise wieder am Computer überprüft werden.

Zugang «Computational Participation»

Diesen Zugang vertreten vor allem Plattformen, die einen Austausch von Projekten ermöglichen. Diese Funktion wird beispielsweise auf der Webseite von Scratch angeboten. Hier können Projekte veröffentlicht, kommentiert und kopiert (Remix) werden. Dies soll zu einer Gemeinschaft führen, in der es erlaubt und erwünscht ist, Teile oder ganze Projekte zu übernehmen und weiterzuentwickeln. So können Ideen weitergegeben und gemeinsam ausgebaut werden. Nicht zuletzt die vielen möglichen Arten von möglichen Projekten führen dazu, ein Verständnis von Algorithmen aufzubauen und schlussendlich die Welt besser zu verstehen, in der wir uns tagtäglich bewegen. Kafai, Burke und O’Byrne (Burke et al., 2016) bestätigen dieses höchste Ziel des Programmierunterrichts. Es geht nicht darum, alle Jugendliche zu Informatikern zu machen, sondern Programmieren als Mittel zu folgendem Zweck einzusetzen: Schülerinnen und Schüler sollen dazu zu motiviert werden, sich aktiv mit den digitalen Medien auseinanderzusetzen, die sie tagtäglich umgeben. Dieses Vorhaben wird unterstützt, wenn diese Punkte eingehalten werden: Statt ganze Programme sollen lediglich Abschnitte programmiert werden, über die sich in einer Gemeinschaft ausgetauscht werden kann. Da ist es naheliegend, wenn Programme nicht immer von Grund auf neu entwickelt werden, sondern vorhandene übernommen und weiterentwickelt werden.

Wer sagt was

Döbeli Honegger, B., & Hielscher, M. (2019). Präsenz 1: Welcher Zugang im Informatikunterricht? Aus: Didaktik der Informatik HS 2020 [Vorlesungsnotizen].

Auflistung der verschiedenen Zugänge zum Informatikunterricht.

***

Burke, Q., O’Byrne, W. I., & Kafai, Y. B. (2016). Computational Participation: Understanding Coding as an Extension of Literacy Instruction. Journal of Adolescent & Adult Literacy, 59(4), 371–375. https://doi.org/10.1002/jaal.496

Kurze Erklärung des Begriffs Computational Participation und wie sich der Programmierunterricht verändern muss.

Vorkenntnisse und Anknüpfung

Programmieren wurde neu als Kompetenz im Lehrplan 21 aufgenommen. Es ist somit davon auszugehen, dass keine Vorkenntnisse der abstrakten Programmierkonzepte bei den Schülerinnen und Schüler vorhanden sind, bis diese in der Schule thematisiert werden. Dies bestätigen auch zahlreiche Studien.

Vermutete Vorkenntnisse und Anknüpfungen an Bekanntes.

Schülerinnen und Schüler können mit sich vor der aktiven Auseinandersetzung mit der Thematik wenig bei den Programmierkonzepten vorstellen. Höchstens die Variablen können mit Gleichungen vergleichen werden, wobei zum Beispiel eine Variable X anders in der Mathematik als beim Programmieren verwendet werden (Meerbaum-Salant et al., 2010) Hier ist somit mit einem falschen Präkonzept zu rechnen, welches in einen neuen Kontext eingebettet werden muss.

Ebenfalls wurden im englischsprachigen Raum Nebenläufigkeit (concurrency) mit überschneidende Linien (concurrent lines) verwechselt (Meerbaum-Salant et al., 2010) was jedoch wohl auf die englische Sprache zurückzuführen ist und im deutschsprachigen Raum wohl keine relevante Rolle spielen sollte.

Wer sagt was

Meerbaum-Salant, O., Armoni, M., & Ben-Ari, M. (Moti). (2010). Learning computer science concepts with scratch. Proceedings of the Sixth International Workshop on Computing Education Research - ICER ’10, 69. https://doi.org/10.1145/1839594.1839607

Studie mit quantitativen und qualitativen Tools. Hier wurden Pre-, Interim- und Posttests mit Klassen von 18 und 28 Schülerinnen und Schüler im Altern von 14 bis 15 Jahre durchgeführt. Der Kompetenzzuwachs wurde gemessen, nachdem während eines Semesters je 2 Lektionen mit Scratch programmiert worden ist.

Heterogenität/Differenzierung

Heterogenität im Informatikunterricht kann in verschiedene Arten auftreten. Beispiele: Interesse, Vorwissen, sozio-ökonomische Voraussetzungen, intellektuelle Fähigkeiten, Arbeitsweise, Geschlecht usw.. Unterschiedliche Voraussetzungen der Schülerinnen und Schüler können und sollen zu Anpassungen des eigenen Unterrichts führen.

Arten von Differenzierung

Interesse

Vorwissen

Sozio-ökonomische Voraussetzungen

Intellektuelle Fähigkeiten

Arbeitsweise

Geschlecht

🚧 in Bearbeitung 🚧

Wer sagt was

Thema: Gender


Genderbewusster Informatikunterricht auf der 5. / 6. Primarstufe. Projekt von Céline Scheider und Christina Utzinger. https://sites.google.com/view/gen-inf/start

🚧 in Bearbeitung 🚧


Teilkompetenzen

Verschiedene Teilkompetenzen helfen, besser zu programmieren. Sie werden oft unter dem Begriff «Computational Thinking» zusammengefasst.

Auflistung von Teilkompetenzen

Probleme lösen / Problemlösestrategien

Dekomposition

Abstraktion

Mustererkennung

Algorithmisierung

🚧 in Bearbeitung 🚧

Wer sagt was

Thema: Probleme lösen


Problemlösen tranineren. Projekt von Larissa Meyer-Baron und Barbara Amstalden (2022): https://problemloesen.weebly.com/

🚧 in Bearbeitung 🚧



Fehlvorstellungen

«Misconceptions», also oft gesehene Fehler beim Programmieren von Schüler:innen können aktiv thematisiert und verhindert werden.

Beispiele von Fehlvorstellungen

Variablen falsch verwenden.

🚧 in Bearbeitung 🚧


Wer sagt was

Wie funktioniert’s? Vorstellungen von Kindern zu Informatik und Programmieren, Eva Marinus, https://www.nfp77.ch/portfolio/wie-funktionierts-vorstellungen-von-kindern-zu-informatik-und-programmieren/

🚧 in Bearbeitung 🚧