1.3.4 Fehler in einem Programm durch systematisches Testen identifizieren und korrigieren
Unterrichtsmaterial zum Lernziel: Die Maturandinnen und Maturanden können Fehler in einem Programm durch systematisches Testen identifizieren und korrigieren.
MultiKara: Programmieren lernen mit Objekten und Robotern
MultiKara ist eine erweiterte Java-Lernumgebung (basierend auf dem bekannten Kara-Robotersystem), die spielerisch die objektorientierte Programmierung vermittelt. Lernende steuern Marienkäfer durch verschiedene Aufgabenwelten und lernen dabei Algorithmen, Kontrollstrukturen und objektorientierte Konzepte anzuwenden.
Tic Tac Toe in Java
Ein umfassendes Unterrichtsmaterial zur objektorientierten Programmierung in Java anhand des Spiels Tic Tac Toe. Es behandelt schrittweise Themen wie AWT-GUIs, Interfaces, Event Handling, Exceptions und File I/O durch praktische Programmierübungen.
Multi-Modus Roboter mit BBC micro:bit und Maqueen
Dieses Projektmaterial führt Schritt für Schritt durch den Bau eines intelligenten, ferngesteuerten Roboters mit zwei micro:bit-Mikrocontrollern. Die Schülerinnen und Schüler lernen anhand von Challenges, wie man Zustandsmaschinen, Event-Loops, Funkkommunikation und Sensorik in Python kombiniert.
Solange-Schleifen: while
Dieses umfassende Unterrichtsmaterial führt anschaulich in die Verwendung von while-Schleifen in Python ein. Es behandelt Themen wie bedingte Wiederholungen, Endlosschleifen, break-Anweisungen und typische Stolpersteine wie Off-by-one-Fehler anhand von Alltagsbeispielen und Programmierübungen mit Lösungen.
Sortieren durch Aufsteigen / Bubblesort
Das Unterrichtsmaterial führt in das klassische Sortierverfahren Bubblesort ein. Die Lernenden analysieren die Grundidee anhand von Beispielen, beschreiben den Algorithmus, erstellen ein Struktogramm und implementieren den Algorithmus schliesslich selbst.
Verzweigungen für Grafikkompositionen in Python
Dieses Unterrichtsmaterial führt in die Nutzung von if-else und if-elif-else Verzweigungen zur Erstellung von Grafiken und Mustern in Python ein. Lernende wenden Kontrollstrukturen an, experimentieren mit Lambda-Ausdrücken und üben systematisches Testen und Fehlerbeheben in partnerbasierten Aufgaben.
Rocket to Mars: Algorithmen und Debugging (CS Unplugged)
Dieses Unterrichtsmaterial führt spielerisch und ohne Computer (Unplugged) in grundlegende Konzepte der Programmierung ein. Die Lernenden schlüpfen in die Rollen von Entwicklern, Testern und Robotern, um einen Roboter über ein Raster zu navigieren, Sequenzen zu erstellen und Fehler systematisch zu debuggen.
Little Red Riding Hood Algorithmen und Debugging (CS Unplugged)
Dieses praxisnahe Unterrichtsmaterial vermittelt spielerisch und ohne Computer (Unplugged) grundlegende Konzepte der Programmierung, des Testens und des Debuggings. Anhand eines physischen Rasters und Rollenspielen (Programmierer, Tester, Roboter) lernen die Schülerinnen und Schüler, Algorithmen zu erstellen, Fehler zu identifizieren und inkrementell vorzugehen.
Backtracking mit Heuristiken
Dieses Unterrichtsmaterial führt anhand eines alltäglichen Beispiels (Websuchen) in das Konzept des Backtrackings ein und vertieft das Thema mit Algorithmen, Laufzeitbetrachtungen und Anwendungsbeispielen wie Labyrinthen und Springerwegen. Dabei werden auch Heuristiken zur Optimierung der Suche, insbesondere die Warnsdorf-Heuristik, besprochen.
Turing Kara - Lernumgebung zu Turingmaschinen und Algorithmen
Diese interaktive Programmierumgebung (Turing Kara) lässt Lernende den Begriff des Algorithmus und Turingmaschinen spielerisch und praxisnah erarbeiten. Anhand verschiedener Aufgaben wie binärer Addition, Palindromprüfung oder Backtracking schreiben und testen sie schrittweise Befehlsfolgen. Das Material vermittelt fundamentale Konzepte der theoretischen Informatik und des algorithmischen Denkens auf anschauliche Art.
Roboter-Programmierung: Aus der Box und durch das Labyrinth
Dieses Unterrichtsmaterial führt Schülerinnen und Schüler schrittweise dazu, reale Probleme in Teilprobleme zu zerlegen und physische Roboter (micro:bit) mithilfe von Programmen und Sensoren durch eine Box und ein Labyrinth zu steuern. Dabei werden Planungsphasen, Block- bzw. Textprogrammierung und Fehleranalysen kombiniert.
GameGridKara 2.0 – Java lernen mit Kara
Dieses Unterrichtsmaterial führt spielerisch und anschaulich in die Programmierung mit Java ein, indem der Marienkäfer Kara in einer grafischen Mini-Umgebung gesteuert wird. Es enthält strukturierte Handouts, Programmierübungen sowie vollständige Lösungen für mehrere Lektionen.
Prüfung zu Python-Grundlagen und Objektorientierter Programmierung
Dieses Dokument beschreibt eine zweiteilige Prüfung zu den Grundlagen von Python, einschliesslich Kontrollstrukturen, Datentypen und Funktionen, sowie zu grundlegenden Konzepten der objektorientierten Programmierung (OOP).
Advent of Code: Clock Signal
Eine Programmieraufgabe, bei der eine bestehende virtuelle Maschinenarchitektur um einen Befehl erweitert und durch systematisches Testen sowie Experimentieren ein spezifisches Ausgangssignal (Clock Signal) erzeugt werden muss.
Advent of Code 2020 - Day 9: Encoding Error
Eine Programmieraufgabe basierend auf dem Advent-of-Code-Format, bei der eine Sequenz von Zahlen auf Basis eines gleitenden Fensters und bestimmter Summenregeln auf Validität überprüft werden muss. Die Lernenden analysieren Datenströme und implementieren algorithmische Logik zur Fehlererkennung.
Advent of Code: Handheld Halting (Infinite Loop Simulation)
Eine Programmieraufgabe im Rahmen des Advent of Code, bei der ein einfacher Interpreter für eine virtuelle Spielekonsole implementiert werden muss. Dabei sollen Befehlssequenzen Schritt für Schritt ausgeführt und Endlosschleifen identifiziert werden.
Arrays und ArrayIndexOutOfBoundsException in Java
Dieses kurze Unterrichtsmaterial erklärt anhand eines Java-Codebeispiels, was passiert, wenn man auf ein Array ausserhalb seiner Grenzen zugreift. Es zeigt den typischen Fehler auf, dass Java im Gegensatz zu manchen anderen Sprachen bei ungültigen Indizes keine Null-Referenz zurückgibt, sondern eine ArrayIndexOutOfBoundsException wirft.
Recursive Call Sites and Return Statements in Java
Dieses Unterrichtsmaterial beleuchtet einen häufigen Stolperstein beim Programmieren von rekursiven Methoden mit Rückgabewert in Java. Es zeigt anhand von Codebeispielen auf, warum auch bei Endrekursionen (tail recursion) zwingend ein Return-Statement erforderlich ist und korrigiert typische Missverständnisse.
Sortieren durch Auswählen / Selectionsort
Das Material führt anhand des Selection-Sort-Algorithmus schrittweise in die Grundidee des Sortierens ein, lässt Lernende den Algorithmus manuell nachvollziehen, in Struktogrammen modellieren und schliesslich implementieren.
Binäre Suche
Das Unterrichtsmaterial führt in das klassische Suchverfahren der binären Suche ein. Anhand von Aufgaben zur Erläuterung und Ablaufmodellierung sowie einer Programmieraufgabe wird das Prinzip der halbierenden Bereichssuche verstanden und umgesetzt.
Übungen zu rekursiven Algorithmen mit dem RecursionTutor
Dieses Unterrichtsmaterial enthält praktische Programmier- und Analyseaufgaben zur Rekursion anhand konkreter Anwendungsbeispiele wie Zinseszins, Medikamentenabbau und geometrischen Wachstumsprozessen. Lernende nutzen einen interaktiven Tutor zur Visualisierung von Aufrufbäumen, um rekursive Algorithmen zu entwickeln, zu testen und zu verstehen.
Übungen zu Testen, Verifizieren und Algorithmen
Das Unterrichtsmaterial enthält Aufgaben zum systematischen Testen von Algorithmen anhand eines Primzahltests sowie zur mathematischen Verifikation der Korrektheit der ägyptischen Multiplikation. Es fordert Lernende dazu auf, Spezifikationen zu formulieren, Testfälle zu dokumentieren und fakultativ Python-Implementierungen einzusetzen.
Fachkonzept - Korrektheit von Algorithmen
Der Text führt in die zentralen Begriffe rund um die Korrektheit von Algorithmen ein. Es werden Spezifikationen (Vor- und Nachbedingungen), Terminierung, das Testen mit Testfällen sowie die theoretische Verifikation durch mathematische Beweise erläutert.
Korrektheit mit Python testen (Doctests)
Dieses Unterrichtsmaterial zeigt, wie man den grössten gemeinsamen Teiler (ggT) in Python implementiert und mithilfe des Moduls 'doctest' automatisiert testet. Die Lernenden fügen eigene Testfälle hinzu und analysieren das Verhalten bei korrekten und fehlerhaften Ausgaben.
Korrektheit von Algorithmen testen
Dieses Unterrichtsmaterial führt in das systematische Testen von Algorithmen anhand konkreter Testfälle am Beispiel des euklidischen Algorithmus zur ggT-Berechnung ein. Lernende spielen Testfälle durch und reflektieren Fragen zur Vollständigkeit und zum Nachweis der Korrektheit.
Vom Multiplikations- zum Potenzierungsalgorithmus
Dieses Unterrichtsmaterial beleuchtet die historische Bedeutung von Algorithmen am Beispiel der ägyptischen Multiplikation und führt zum modernen Konzept des schnellen Potenzierens über. Die Lernenden analysieren das Verfahren, entwickeln ein Struktogramm und implementieren den Algorithmus eigenständig in Python.
Implementierung der ägyptischen Multiplikation
Ein kurzes Programmier-Praktikum zur ägyptischen Multiplikation. Lernende implementieren den Algorithmus als Funktion in Python oder einer anderen Sprache, testen ihn auf Randfälle und stellen so die Korrektheit sicher.
Fehlermeldungen verstehen und korrigieren in Python
Dieses Unterrichtsmaterial führt Lernende in die Interpretation von Python-Fehlermeldungen und die Behebung häufiger Fehler wie SyntaxError, NameError oder TypeError ein. Anhand praktischer Programmierbeispiele mit der PyTamaro-Bibliothek wird das systematische Finden und Korrigieren von Fehlern geübt.
Grafische Programmierung mit PyTamaro: Der Regentropfen
Dieses Unterrichtsmaterial führt anhand des Zeichnens eines Regentropfens in die modulare Programmierung mit der Python-Bibliothek PyTamaro ein. Die Lernenden zerlegen das grafische Problem in Teilprobleme, nutzen Funktionen wie `pin` und `compose` zur Zusammensetzung von Grundfiguren und testen ihren Code systematisch.
Einführung in Python mit PyTamaro: Rechtecke erstellen und anzeigen
Dieses interaktive Unterrichtsmaterial führt in grundlegende Programmierkonzepte von Python ein. Anhand der Grafik-Bibliothek PyTamaro lernen die Schülerinnen und Schüler, wie man Funktionen aufruft, Bibliotheken importiert, Argumente übergibt und einfache Fehler bei der Ausführung behebt.
Funktionen: Parameter und Argumente in PyTamaro
Das Unterrichtsmaterial führt anhand der Python-Bibliothek PyTamaro in die Konzepte von Funktionsdefinitionen, Parametern und Argumenten ein. Lernende untersuchen Codebeispiele, identifizieren Datentypen und analysieren typische Fehler bei Funktionsaufrufen.
Funktionen definieren und anwenden
Dieses Unterrichtsmaterial führt in das Konzept von Funktionen ein, indem anhand von Python-Code mit PyTamaro (Kreise, Zielscheiben) Funktionsdefinitionen, Parameter, Aufrufe und Rückgabewerte erklärt werden. Die Lernenden führen Codezellen aus, korrigieren bewusst Fehler bezüglich Argumenten und Datentypen und lernen die Wiederverwendbarkeit von Code kennen.
Einführung in Python und PyTamaro
Eine praxisnahe Einführung in die Programmierung mit Python und der Grafik-Bibliothek PyTamaro. Die Lernenden erfahren grundlegende Programmierkonzepte, wenden Funktionsaufrufe an und lernen, einfache Fehler in Programmen zu erkennen.
EAN / Strichcode Prüfziffer berechnen mit Scratch
Eine Programmieraufgabe für Scratch, bei der Schülerinnen und Schüler ein Programm erstellen, das einen 12-stelligen Produktcode einliest, die Ziffern nach bestimmten Regeln gewichtet aufsummiert und prüft, ob die Summe ein Vielfaches von 10 ist.
ISBN-10 Validierung in Scratch
Eine Programmieraufgabe für Scratch, bei der Schülerinnen und Schüler einen Algorithmus zur Überprüfung der Gültigkeit von ISBN-10 Nummern implementieren. Das Material enthält konkrete Testbeispiele und Code-Bausteine zur Unterstützung.
I'm going to be a Bot: Grundlagen der Programmierung und des Debuggens
Dieses unplugged Unterrichtsmaterial lässt Lernende in die Rollen eines Roboters und eines Entwicklers schlüpfen, um sequenzielle Befehle auf einem Raster auszuführen. Dabei werden grundlegende Programmierkonzepte, das schrittweise Abarbeiten von Programmen sowie das Identifizieren und Beheben von Fehlern (Debugging) spielerisch vermittelt.
Fitnessprogramm-Algorithmen und Schleifen (Unplugged)
In dieser unplugged Unterrichtseinheit entwerfen Schülerinnen und Schüler eine eigene Programmiersprache anhand von Fitnessübungen. Dabei lernen sie sequenzielle Befehle, Schleifen und Parameter kennen, führen Programme manuell aus und testen diese auf Fehler.
Rotkäppchen-Algorithmen: Einführung in Programmierung und Debugging
Eine spielerische, unplugged Unterrichtsstunde, in der Schülerinnen und Schüler in den Rollen von Programmierer, Tester und Bot einfache Bewegungsabläufe auf einem Gitterfeld planen, ausführen, testen und Fehler (Debugging) beheben.
Wettkampfprogrammierung: Grader-Strategien und Debugging-Tipps
Das Dokument bietet praxisnahe Tipps und Techniken für die Teilnahme an Programmierwettbewerben wie der SOI, CEOI oder IOI. Es behandelt verschiedene Aufgabentypen, Strategien zur Fehlerbehebung bei Laufzeitfehlern und Optimierungsmethoden für C++.
Einführung in Unit Testing in Python
Dieses Unterrichtsmaterial erklärt die Grundlagen und Bedeutung von Unit Tests anhand von Python-Beispielen. Es behandelt das Schreiben von Testfällen für verschiedene Szenarien, Code-Coverage und das Identifizieren von Fehlern durch systematisches Testen.
Einführung in das Debugging
Dieses Unterrichtsmaterial führt Schülerinnen und Schüler in das Konzept des Debuggings ein. Es behandelt historische Hintergründe, die wissenschaftliche Methode beim Testen von Code sowie praktische Techniken wie Print-Debugging und das Rubber-Duck-Debugging.
Iterative Programm-Optimierung und Datenverarbeitung in Raku
Ein praktisches Programmierbeispiel, das zeigt, wie ein naives Skript zur Analyse von UN-Bevölkerungsdaten schrittweise durch Fehlerbehebung, Performance-Optimierung und den Einsatz von Bibliotheken verbessert wird.
Beginning Student Language (BSL) Referenz und Einführung
Eine umfassende Einführung in die Syntax, Semantik und Fehlersuche der Beginning Student Language (BSL) aus dem Umfeld von DrRacket. Das Material behandelt Datentypen, Grammatikregeln, bedingte Ausdrücke sowie Strukturdefinitionen und dient als Programmierreferenz.
Fehlermeldungen in Python interpretieren
Dieses Unterrichtsmaterial führt in die Unterscheidung von Syntaxfehlern und Laufzeitfehlern beim Programmieren mit Python ein. Anhand konkreter Codebeispiele wird gezeigt, wie Fehlermeldungen des Interpreters analysiert und behoben werden können.
Errors and Exceptions in Python
Dieses offizielle Python-Tutorial behandelt ausführlich den Umgang mit Syntaxfehlern und Ausnahmen (Exceptions). Es wird gezeigt, wie man Fehler abfängt, eigene Exceptions definiert und Bereinigungsaktionen wie 'finally' oder den 'with'-Statement einsetzt.
Python-Missverständnis: Logisches UND vs. Bitweises UND
Dieses Unterrichtsmaterial erklärt anhand von Beispielen in Python den Unterschied zwischen dem logischen UND ('and') und dem bitweisen UND ('&') für boolesche Operanden, einschliesslich des Short-Circuit-Verhaltens.
Missverständnis um das 'this'-Schlüsselwort in Java
Das Unterrichtsmaterial beleuchtet ein typisches Schüler-Missverständnis, bei dem das 'this'-Schlüsselwort in objektorientierten Programmen fälschlicherweise auf 'null' geprüft wird. Anhand von konkreten Code-Beispielen aus rekursiven Datenstrukturen werden die Ursachen und Symptome dieses Programmierfehlers analysiert.
Experimente mit einem CSS-Validierer
In diesem Arbeitsblatt experimentieren die Lernenden mit CSS-Quelltexten, bauen gezielt Fehler ein und untersuchen diese sowohl manuell als auch mithilfe des offiziellen W3C-CSS-Validierers.
Fehler im HTML-Quelltext und Fehlertoleranz
Dieses Unterrichtsmaterial befasst sich mit Fehlern in HTML-Quelltexten, dem Umgang von Browsern und Editoren mit diesen Fehlern sowie dem Konzept der Fehlertoleranz. Anhand praktischer Aufgaben untersuchen die Lernenden, wie Tools fehlerhaften Code korrigieren und warum Syntaxregeln dennoch wichtig sind.
Einführung in die Python-Programmierung
Dieses Material bietet eine praxisnahe Einführung in die Programmiersprache Python für den Informatikunterricht. Anhand von Beispielen und Programmieraufgaben werden grundlegende Programmierkonzepte vermittelt.