Stunde des Codes mit PyTamaro

Programmiere Deine Burg
Informationen für Lehrpersonen

Sie wollen Ihre Klasse ihre eigene Burg programmieren lassen? Dieses einstündige Tutorial kombiniert Programmierung und Geschichte. Es richtet sich an Schülerinnen und Schüler ab 13 Jahren, die bereit sind, ihre ersten Schritte in einer textbasierten Programmiersprache zu machen.
Photo of Castle

Leitfaden

Dieser Leitfaden enthält Informationen über die Didaktik und den Inhalt (Programmierung und Geschichte) dieses Stunde des Codes-Tutorials. Wenn Sie über dieses einstündige Tutorial hinausgehen möchten, sehen Sie sich unsere vielen kostenlosen Ressourcen auf dieser PyTamaro-Website an. Viele der Ressourcen werden im Fach Informatik an verschiedenen Schweizer Gymnasien verwendet.

Diese Stunde des Codes wurde von Studentinnen und Studenten entwickelt!

Ja! Diese Stunde des Codes wurde von Informatikstudierenden an einer kleinen öffentlichen Universität in der Schweiz entwickelt.

Agnese
Zamboni
Lead Developer
Davide
Frova
Developer
Giorgia
Lillo
Developer
Jamila
Oubenali
Developer

Der Inhalt (Aktivitäten und Sequenzierung, Anweisungen, Starter- und Lösungscode, sowie alle vorgefertigten Grafiken, die mit Python/PyTamaro-Code programmiert und nicht gezeichnet wurden) wurde von einem kleinen Team von Bachelorstudierenden der Fakultät für Informatik an der USI, der Università della Svizzera italiana, im italienischsprachigen Teil der Schweiz entwickelt. Finanziert durch ein Didaktik-Innovationsstipendium, verbrachten sie einen Monat im Sommer 2023 mit dem Besuch der echten Fortezza Bellinzona, dem Bau der grössten Spielzeugburgen, der Recherche bestehender Hour Of Code-Aktivitäten und der Entwicklung dieser Aktivität in Python auf der PyTamaro Web-Plattform.

Luca
Chiodini
Platform
Igor
Moreno
PL Advice
Joey
Bevilacqua
Engineering
Matthias
Hauswirth
Organization

Die PyTamaro Web-Plattform und die kompositionale PyTamaro-Grafikbibliothek für Python wurden hauptsächlich von Luca Chiodini entwickelt, einem Doktoranden im Lugano Computing Education Research Lab an der USI. Luca unterrichtete Schweizer Gymnasiallehrer, die in Zukunft Python-Programmierung in ihren Klassen unterrichten sollten. Er erkannte die Vorteile einer einfachen, kompositionellen Grafikbibliothek und implementierte PyTamaro. Um Lehrerinnen und Lehrer bei ihrem zukünftigen Unterricht zu unterstützen, entwickelte er die PyTamaro Web-Plattform. Diese ermöglicht es den Schülerinnen und Schülern, Python mit PyTamaro direkt im Browser zu programmieren, in einer Notebook-ähnlichen Umgebung, in der Anweisungen und Code in interaktiven Übungen verflochten sind.

Didaktik

Hier sind einige didaktische Tipps, die Ihnen helfen, das Beste aus einer Stunde des Codes zu machen:

  • 💡
    Pair Programming

    Diese Stunde des Codes kann besonders gut mit Pair Programming durchgeführt werden, indem zwei Lernende gemeinsam an einem Computer arbeiten. Bei der Paarprogrammierung übernehmen die beiden Lernenden eines Paares normalerweise unterschiedliche Rollen: Der Fahrer sitzt an der Tastatur und schreibt den Code, und der Navigator prüft jede eingegebene Codezeile. Sie können die Lernenden bitten, die Rollen zwischen den einzelnen Aktivitäten zu wechseln (beachten Sie aber, dass die ersten paar Aktivitäten nicht viel Schreibarbeit erfordern).

  • 💡
    Platforms

    We tested this tutorial on the Firefox, Chrome, Safari, and Edge browsers and on macOS, Windows, iOS, iPadOS, and Android. While it can be used on mobile phones, we recommend devices with larger screens and keyboards.

  • 💡
    Kompetenzen

    Jede Aktivität ist mit einer oder mehreren Programmierkompetenzen verbunden. Jedes Mal, wenn eine Schülerin oder ein Schüler eine Aktivität abschliesst, werden die gerade geübten Kompetenzen als blaue "Abzeichen" in der linken Seitenleiste angezeigt. Ermuntern Sie Ihre Schülerinnen und Schüler, auf die Abzeichen zu klicken, um deren Beschreibungen zu lesen. Auf diese Weise werden sie mit der Terminologie der Programmierkonzepte vertraut gemacht. Unten finden Sie eine Matrix, die Aktivitäten und Kompetenzen aufeinander abstimmt.

  • 💡
    Fehlvorstellungen

    Ihre Schülerinnen und Schüler haben möglicherweise bereits verschiedene Fehlvorstellungen von Python. Als Lehrperson können Sie sich darauf vorbereiten, diese Fehlvorstellungen zu erkennen und zu beseitigen, indem Sie sich selbst auf Progmiscon.org, einem aus der Informatikdidaktik-Forschung stammenden Katalog von Programmiersprachen-Fehlvorstellungen, mit einem Self-Check testen. Dadurch werden Sie Fehlvorstellungen wie AssignCompares (Zuweisung als Vergleich interpretieren) oder OutsideInFunctionNesting (von aussen nach innen ausführen von verschachtelten Funktionsaufrufen) besser erkennen.

  • 💡
    Aufgaben

    Jede Aktivität besteht aus einer oder mehreren kleinen Programmieraufgaben. Die Aufgaben sind mit 🎯 gekennzeichnet, in der Regel oberhalb der entsprechenden Codezelle, und innerhalb des Codes mit Kommentaren.

  • 💡
    Platzhalter

    Im Code verwenden wir ... als Platzhalter für den von Lernenden zu schreibenden Code. Falls Lernende den Platzhalter nicht ersetzen, führt das zu einem Fehler, wenn sie den Code ausführen.

  • 💡
    Fehler

    Ein wichtiger Teil des Programmierenlernens ist das Verstehen und Beheben von Fehlern. Wenn bei der Ausführung des Codes ein Fehler auftritt, wird der Fehler unter der entsprechenden Codezelle angezeigt. Übliche Fehlerarten sind NameError, SyntaxError, TypeError und ImportError. Beachten Sie, dass die Fehlermeldung die Zeilennummer (und eine Kopie der Zeile) enthält wo der Fehler aufgetreten ist. Diese Informationen sind wichtig, um den Fehler zu finden und zu beheben.

  • 💡
    Stecken geblieben? Code durcheinander?

    Wenn Lernende bei einer Aufgabe nicht weiterkommen, zum Beispiel weil sie Fehler erhalten, die sie nicht beheben können, können sie eine Codezelle auf ihren ursprünglichen Inhalt zurücksetzen (mit der Schaltfläche mit den drei senkrechten Punkten unten rechts in der Codezelle).

  • 💡
    TypeError

    Ein häufiger TypeError (Typ-Fehler) ist, wenn Schüler vergessen, ein ... (auf Englisch ellipsis genannt) durch eigenen Code zu ersetzen. Dieser Fehler tritt häufig auf, wenn zeige_grafik versucht, den Wert anzuzeigen, den es als Argument erhält, aber dieser Wert ein ... anstelle einer gültigen Grafik ist. Dies führt zu dem folgenden Fehler: TypeError: Invalid type for parameter graphic: expected Graphic, got ellipsis

  • 💡
    NameError

    Wenn Lernende einen Namen falsch schreiben (z. B. agische_brustwehr statt magische_brustwehr), erhalten sie möglicherweise einen NameError (Namensfehler). Manchmal verursachen Lernende einen NameError, weil sie Text zum Kopieren und Einfügen auswählen, aber ihre Auswahl nicht das gesamte Wort umfasst. Unserer Erfahrung nach sind NameError für viele Lernende einfacher zu beheben.

  • 💡
    SyntaxError

    Wenn Lernende die Struktur des Codes so verändern, dass sie die Python-Grammatik verletzt, erhalten sie einen SyntaxError. Häufige Gründe sind nicht zusammenpassende Klammern, wie ((...) oder ([...), oder fehlende Kommas, wie mauer(lila ohne_raender).

  • 💡
    ImportError

    Wenn Lernende eine der Import-Anweisungen ändern und einen Namen importieren, der nicht existiert, erhalten sie einen ImportError.

Über diese Stunde des Codes Hinaus

Diese Stunde des Codes kann sich gut als Einstieg in eine Unterrichtssequenz zur Programmierung mit Python eignen. Wenn Sie beabsichtigen, Python in Ihrem Unterricht weiter zu verwenden, möchten Sie vielleicht die PyTamaro-Grafikbibliothek nutzen, die dieser Stunde des Codes zugrunde liegt. Wenn Sie das tun, können Sie gerne die TamaroCards auszudrucken, um diese in unplugged Aktivitäten zu verwenden.

Inhalt: Programmierung

Komposition einer Burg

Lernende bauen Burgen aus vorgefertigten Teilen zusammen. Wir stellen Funktionen zur Verfügung, um jedes Teil (Dach, Brustwehr, Mauer und Zugbrücke) zu erstellen. Wir stellen auch zwei Funktionen zur Verfügung, um Listen von Teilen zu erstellen, indem man sie übereinander (ueber_liste) oder nebeneinander (neben_liste) platziert.

Photo of Castle

Diese Aktivität führt die Schülerinnen und Schüler in eines der grundlegenden Konzepte in der Programmierung ein: die Idee einer Funktion. Funktionen sind eine Möglichkeit, Code in wiederverwendbare, unabhängige Teile zu organisieren. Eine Funktion nimmt einige Werte entgegen und liefert ein Ergebnis. Werte werden der Funktion explizit als Argumente übergeben. Das Ergebnis wird von der Funktion als Rückgabewert zurückgegeben.

Keine Eingabe, Kein Zustand ausserhalb der Funktion
Argumente
Diagramm einer reinen Funktion
Rückgabewert
Keine Ausgabe, Kein Zustand ausserhalb der Funktion

Eine reine Funktion kommuniziert ausschliesslich über ihre Argumente und Rückgabewerte. Sie liest oder schreibt keinen Zustand ausserhalb der Funktion und kommuniziert nicht mit der Welt ausserhalb des Computers (sie empfängt keine Eingabe und erzeugt keine Ausgabe). Reine Funktionen können isoliert verstanden werden, ohne etwas über den Rest des Programms zu wissen.

Dies bietet einen schönen Ansatz für die Problemlösung: Wir können ein Problem in unabhängige Teilprobleme zerlegen, diese Teilprobleme in kleinere unabhängige Teilprobleme zerlegen, bis sie klein genug sind, um sie direkt zu lösen. Aufgrund ihrer Unabhängigkeit müssen wir uns keine Gedanken über andere Teilprobleme machen, während wir uns auf eines konzentrieren.

Diagramm der Problemlösung und Lösungskomposition

Reine Funktionen sind eine grossartige Möglichkeit, unabhängige Teilprobleme zu lösen. Sie eignen sich auch hervorragend dazu, die Lösungen mehrerer unabhängiger Teilprobleme zu einer einzigen Lösung zusammenzufügen. Neben diesem pädagogischen Vorteil machen reine Funktionen Programme auch sicherer und vereinfachen verteilte Berechnungen in modernen Rechenzentren und Supercomputern.

Die Python-Bibliothek, die in dieser Aktivität für die Grafik verwendet wird, PyTamaro, besteht aus einer kleinen Anzahl solcher reinen Funktionen. Einige dieser Funktionen erzeugen eine Grafik (ein Burgteil) basierend auf einigen Informationen (wie z.B. ihrer Farbe), die als Argumente übergeben werden. Andere Funktionen komponieren mehrere Teile (als Argumente übergeben) zu einer grösseren Burg.

Die reinen Funktionen in dieser Aktivität können genauso gesehen werden wie Funktionen in der Mathematik. Es ist nur so, dass unsere PyTamaro-Funktionen mit attraktiven Grafiken spielen anstatt mit Zahlen.

Die Wahrheit hinter unseren vorgefertigten Teilen

Dieses Tutorial bietet Funktionen zum Erstellen von vier verschiedenen Arten von vorgefertigten Teilen: Mauern, Dächer, Brustwehren und Zugbrücken. Wussten Sie schon, dass diese vorgefertigten Teile selbst aus kleineren Teilen zusammengesetzt sind? Sie bestehen vollständig aus Rechtecken, Dreiecken, Ellipsen und Kreissektoren. Jemand (die Bachelor-Studierenden, die diese Stunde des Codes entworfen haben) hat diese vier Funktionen für vorgefertigte Teile programmiert, so dass sie primitive Grafiken kreieren und zu den vorgefertigten Teilen zusammensetzen, die in diesem Tutorial verwendet werden. Wenn Sie möchten, können Sie selbst ganz andere Teile erstellen! Schauen Sie sich das Welcome-Curriculum auf dieser Website an, um mehr zu erfahren.

Lernziele in der Programmierung

Die folgende Tabelle zeigt die Aktivitäten und die Lernziele des 'Programmiere Deine Burg' Curriculums:

Ausgabe durchführenKommentare unterscheidenArgumente übergebenFunktion aufrufenRückgabewert erhaltenNamen importierenNamen verwendenNamen definierenListen-Literal
Einfache Mauer Anzeigen
Eingang Anzeigen
Brustwehr Anzeigen
Magische Brustwehr Anzeigen
Lieblingsmauer Auswählen
Zugbrücke Schliessen
Dach Produzieren
Brustwehr Produzieren
Mauer Produzieren
Turm Bauen
Schildmauer Bauen
Programmiere Deine Burg

Mehr Informationen finden Sie auf der Informationsseite des Curriculums.

Weitere in Schweizer Gymnasien eingesetzte Programmieraktivitäten

Falls Sie mehr über die Python-Programmierung mit dem grafischen PyTamaro-Ansatz erfahren möchten, besuchen Sie unsere zahlreichen Aktivitäten und Curricula auf dieser Website. Sie sind frei zugänglich. Viele von ihnen werden im Programmierunterricht in Schweizer Gymnasien verwendet. Einige wurden von Gymnasiallehrpersonen selbst entwickelt. Wir empfehlen Ihnen, mit dem Welcome Curriculum (momentan nur auf Englisch verfügbar) zu beginnen.

Sollten Sie die Aktivitäten in Ihrem Unterricht einsetzen, würden wir uns sehr freuen, von Ihnen zu hören. Wir entwickeln und pflegen diese Website im Rahmen unserer Forschung über den effektiven Programmierunterricht. Zu erfahren, was funktioniert hat und was nicht, kann uns sehr helfen!

Inhalt: Geschichte

Diese Stunde des Codes wurde von den mittelalterlichen Burgen der Fortezza Bellinzona inspiriert. Während die Geschichte der ältesten Burg, Castelgrande, bis ins Römische Reich zurückreicht, wurde der grösste Teil der Befestigung im Spätmittelalter, im 14. und 15. Jahrhundert, erbaut.

Historische Zeitleiste der Fortezza Bellinzona

Sie können mehr auf der offiziellen Fortezza Bellinzona Webseite erfahren. Oder wenn Sie die Chance haben, den mediterranen Schweizer Kanton Tessin, südlich der Alpen und nördlich der italienischen Städte Como und Mailand, zu besuchen, können Sie diese mittelalterliche Festung in der Schweizer Stadt Bellinzona persönlich besuchen. Sie ist ein in Europa einzigartiges UNESCO-Weltkulturerbe, bestehend aus drei separaten Burgen und ihren Befestigungen!

Glossar der Burgarchitektur

Hier sind die für unser Tutorial relevanten Begriffe, illustriert mit unseren Fotos aus der Fortezza Bellinzona.

Foto von Brustwehr
Brustwehr

Der obere Teil einer Mauer, der zwischen Brusthöhe und Kopfhöhe liegt und eine Reihe von Zinnen und Lücken aufweist.

Foto von Schildmauer
Schildmauer

Die Verteidigungsmauer zwischen zwei Wehrtürmen, die oft mit einer Brustwehr versehen ist.

Foto von Zugbrücke
Zugbrücke

Eine bewegliche Brücke, die normalerweise am Eingang einer Burg steht. Die Burg Montebello in Bellinzona ist mit einer Folge von zwei Zugbrücken geschützt.

Foto von Zinne
Zinne

Fester, aufrechter Teil einer Brustwehr zwischen zwei Lücken. Es gibt viele verschiedene Formen von Zinnen.

Literatur über Burgen

J. E. Kaufmann & H. W. Kaufmann; Robert M. Jurga (Illustrator). The Medieval Fortress: Castles, Forts, And Walled Cities Of The Middle Ages. Da Capo Press, 2004. ISBN 978-0-306-81358-0.

David Macaulay. Castle. Clarion Books, 2013. ISBN 978-0-544-10226-2.

Horst Wolfgang Böhme, Reinhard Friedrich, Barbara Schock-Werner (Hrsg.) Wörterbuch der Burgen, Schlösser und Festungen. Heidelberg: arthistoricum.net-ART-Books, 2020.

The Hour of Code ® is an initiative by Code.org to introduce millions of students to one hour of computer science and computer programming, especially during CSEdWeek, the computer science education week that takes place every year during the week of Grace Hopper's birthday (December 9, 1906), a pioneer of computer science who invented the first compiler and coined the term “bug”.
Hour of Code® and Hora del Código® are registered trademarks of Code.org.

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version f9e590c (Sun, 19 May 2024 10:38:32 GMT)