Skip to main content
Skip to Main Content
Skip to main content
Navigation

Strategien und Tipps zum Unterrichten von Debugging

By Audra Selkowitz Feb 24, 2022

Unabhängig vom Qualifikationsniveau des Programmierers ist das Debuggen ein unvermeidlicher und integraler Bestandteil des Codierens. “ 1

Dies mag wie eine etwas offensichtliche Aussage erscheinen, aber dies auf eine komfortable und produktive Weise auszuführen, kann eine Herausforderung sein. In vielen formalen Bildungseinrichtungen wird ein starker Fokus auf vollständige und korrekte Lernprodukte gelegt. Auch wenn wir Klischees wie „Meine Fehler sind meine größten Lehrer“ verwenden, werden diese Gefühle selten so geschätzt, dass das Nachdenken der Schüler über den Fehler und seine Lösung wirklich sichtbar wird und Teil der Kultur des Klassenzimmers ist. STEM und insbesondere Codierung und Robotik bieten jedoch authentische Möglichkeiten, das zu praktizieren, was wir predigen. Die Schüler werden Fehler in ihrem Code, logische Fehler im Programmdesign und andere Fehler haben, wenn sie lernen, im Klassenzimmer zu programmieren und Herausforderungen zu meistern. Wie können wir also diese Gelegenheit nutzen, um den Schülern nicht nur Programmierkonzepte beizubringen, sondern auch, wie sie ihre Fehler als wichtige Schritte auf dem Weg zum Lernen feiern können? Testen und Debuggen wird immer eine Art reaktionsschneller Prozess sein, für den es keine klare, konkrete Formel gibt. Es gibt jedoch allgemeine „Schritte“ und Strategien, die mit den Schülern umgesetzt werden können, um ihnen zu helfen, sich produktiv und kollaborativ mit diesem Prozess auseinanderzusetzen.

Es beginnt mit einer positiven Unterrichtskultur rund um das Debuggen und konzeptionelles Denken über Code. Eine breitere Unterrichtskultur, die Fehler als produktiv und nicht als strafend einstuft, ist unglaublich wichtig, wenn wir möchten, dass sich die Schüler wirklich am Test- und Debugging-Prozess beteiligen. Wenn sie versuchen, Fehler zu verbergen, oder Angst haben, ihre Logik mit anderen zu besprechen, wird der Debugging-Prozess viel schwieriger und weniger nützlich für das Lernen sein. Es gibt viele Möglichkeiten, dies zu tun, von der Feier von Fehlern mit Dingen wie einem "Bug Museum" oder "Bug Hall of Fame"1 , wo Schüler und Lehrer Codierungsfehler und ihre Korrekturen veröffentlichen, über die alle nachdenken können. Die Lehrer haben die Schüler dafür belohnt, dass sie Fehler gefunden haben, indem sie jedes Mal, wenn ein Fehler der Klasse "angekündigt" wurde, Plastikspielzeug verteilt haben, was das Debuggen nicht nur notwendig, sondern auch unterhaltsam macht!

Darüber hinaus hilft der ständige Verweis auf das konzeptionelle Ziel eines Projekts oder einer Herausforderung den Schülern, das Gesamtbild ihres Projekts bei der Arbeit im Auge zu behalten. Indem sie häufig darüber sprechen, was sie konzeptionell zu tun versuchen, oder Pseudocode-Schüler schreiben, können sie potenzielle Fehler erkennen, bevor sie an Größe oder Umfang zunehmen. Strategien wie „Gruppenwiedereingliederung“ können für eine ganze Klasse nützlich sein, um ein fehlerhaftes Projekt gemeinsam zu betrachten, zu identifizieren, was in Bezug auf das Ziel des Projekts funktioniert und warum, und dann, was die Fehler sind. Die Schüler können ein bestimmtes Programmierprojekt mit vielen Augen sehen und lernen, über interessante Codeelemente und kreative Strategien zu sprechen, um Probleme zu lösen, die sie dann auf ihre eigenen Projekte anwenden können.

Der erste "Schritt" zum Debuggen besteht darin, zu erkennen, dass ein Problem im Projekt vorliegt. Die Schüler können ein Problem nicht beheben, wenn sie nicht wissen, dass es eines gibt, und dazu müssen sie in der Lage sein, das Ziel des Projekts zu artikulieren und es mit dem zu vergleichen, was das Projekt tatsächlich tut. In einfachen Projekten, wie der Codierung eines Roboters, um in einem Quadrat zu fahren, ist dies einfacher zu tun. Da Projekte immer komplexer werden, wie das Codieren eines Roboters, um einen roten Würfel zu identifizieren und zu bewegen, kann dies entmutigender erscheinen. Auf der positiven Seite gibt es ein sehr sichtbares und greifbares Zeichen dafür, dass ein Projekt nicht funktioniert – solange die Schüler wissen, was mit dem Projekt beabsichtigt war.

schüler und Lehrer um einen Computer herum

  • Die regelmäßige Verwendung von Pseudocode kann eine hilfreiche Strategie sein, wenn Schüler mit einem Projekt konfrontiert werden, das „nicht funktioniert“. Wenn Sie das Ziel des Projekts und das, was der Roboter oder der Code tun muss, um dieses Ziel zu erreichen, klar und konkret aufschreiben, können Sie den Schülern einen Ausgangspunkt geben, um sicherzustellen, dass ihr Projekt und ihr Code auf der gleichen Seite sind. Wenn beispielsweise ein Roboter so codiert wird, dass er in einem Quadrat fährt und der Roboter nur in einer Linie fährt, liegt ein eindeutiger und sichtbarer Fehler vor.

Der nächste "Schritt" besteht darin, den Fehler im Code zu finden. Jetzt, da die Schüler wissen, dass es ein Problem gibt, können sie Schritte unternehmen, um das Problem im Code zu finden. Mit dem, was sie über das Ziel des Projekts wissen, sollten sich die Schüler zuerst ansehen, welche Teile des Codes wie beabsichtigt funktionieren. Dies ist besonders wichtig für mehrteilige Aufgaben, wie das Codieren eines Roboters, um einen roten Würfel zu identifizieren und ihn zu bewegen. Hier sind einige Strategien, die verwendet werden können, um Schüler beim Auffinden eines Fehlers zu unterstützen:

schüler und Lehrer um einen Computer herum
  • Betrachten Sie die Projektabwicklung blockweise – Dies kann für kurze Projekte nützlich sein, bei denen die Reihenfolge und der Projektablauf einfacher sind und die Schüler Unregelmäßigkeiten leichter erkennen können. Um diesen Prozess zu unterstützen, kann die Funktion "Schritt" in VEXcode 123, VEXcode GO und VEXcode VR verwendet werden, um das Projekt blockweise oder schrittweise auszuführen. Wenn ein Projekt auf diese Weise ausgeführt wird, kann es sehr deutlich werden, wann und wo ein Projekt schief geht. Bei längeren Projekten hebt die Hervorhebungsfunktion in VEXcode 123, VEXcode GO und VEXcode VR jeden Block hervor, während er vom Roboter ausgeführt wird, um die Verbindung zwischen einem Block und dem Verhalten des Roboters sichtbarer zu machen. Die Schüler können den Roboter und die Hervorhebung beobachten und das Projekt am oder um den Fehler herum anhalten, sobald sie ihn sehen.
  • Testen und Debuggen eines Projekts in Teilen – Dies ist eine nützliche Strategie bei der Entwicklung eines längeren oder komplexeren Projekts und eine gute Möglichkeit für die Schüler, ihre Projekte zu entwickeln und zu erstellen. Die Schüler sollten frühzeitig und häufig beim Codieren testen und debuggen, damit jedes Verhalten oder jede Reihe von Verhaltensweisen codiert und getestet wird. Auf diese Weise werden Fehler im Code schneller erkannt und leichter behoben. Die Arbeit in kleineren Stücken kann den Schülern helfen, Frustration zu vermeiden und nicht entmutigt zu werden, wenn ein „ganzes Projekt“ nicht wie beabsichtigt funktioniert, was es Lehrern und Schülern erleichtert, die Motivation und das Engagement hoch zu halten. Wenn die Schüler ein komplexes Projekt auf einmal testen, können sie das Projekt in kleinere Teile zerlegen, um jeweils einen Abschnitt des Codes auszuführen und zu debuggen.
    Am Beispiel der Codierung eines Roboters zum Erkennen und Bewegen eines roten Würfels können die Schüler beispielsweise einzelne Teile dieser gesamten Aufgabe testen – wie das Fahren zum Würfel, das korrekte Melden der Farbe des Würfels mit dem Sensor, das Greifen des Würfels usw. Idealerweise wird dies abgeschlossen, wenn das Projekt gebaut wird, aber wenn sie das Ende erreichen, gibt die Aufteilung des Projekts in Abschnitte den Schülern weniger Zeit, es auf einmal zu bearbeiten, und sie können sich methodisch durch das Projekt bewegen, um es zu beheben.
  • Verwenden Sie Fehlercodes – Dies ist eine nützliche Strategie, wenn Sie mit textbasierten Projekten wie VEXcode VR Python arbeiten, bei denen Linienfehler auf den Bildschirm gedruckt werden. Die Schüler können diese Informationen wie die problematische Codezeile verwenden, um ihren Fehler einzugrenzen. Beachten Sie, dass dies gut für Syntaxfehler ist, aber nicht unbedingt logische Fehler im Programmdesign identifiziert.

Der letzte „Schritt“ besteht nun darin, den Fehler im Projekt zu beheben. Nachdem die Schüler festgestellt haben, dass ihr Projekt nicht wie beabsichtigt ausgeführt wird, und herausgefunden haben, was im Code falsch ist, können sie nun herausfinden, warum dieser Fehler existiert. Ist es ein einfacher Syntaxfehler, wie ein falsch geschriebener Teil eines Befehls? Oder ist es ein logischer Fehler, bei dem das Design oder der Ablauf des Programms falsch ist? Dies kann mehrere Versuche erfordern, um eine funktionierende Lösung zu finden, und das ist nicht nur in Ordnung, sondern kann die Schüler ermutigen, ihr Verständnis von Codierungskonzepten und -strukturen zu vertiefen. Mit einer positiven Einstellung zum Debuggen ist jeder Teil des Prozesses eine Lernerfahrung. Hier sind einige Strategien, mit denen Sie den Schülern helfen können, mögliche Lösungen zu finden:

  • Lesen Sie den Code für Unregelmäßigkeiten – Dies ist besonders nützlich, wenn Sie mit einem Fehlercode oder einem Syntaxfehler arbeiten. Wenn Sie auf Details wie Rechtschreibung, Zeichensetzung und Einrückung achten, können die Schüler einen Fehler mit wenigen Tastendrücken beheben. In VEXcode können die Teilnehmer jederzeit die integrierte Hilfe verwenden, um mehr darüber zu erfahren, wie jeder Befehl in Projekten geschrieben und verwendet wird.
  • Suchen Sie nach einem fehlenden Teil – Eine nützliche Strategie zur Identifizierung logischer Fehler in einem Projekt besteht darin, die einfache Frage zu stellen: "Fehlt Ihnen ein Schritt?" Die Schüler können einen Schritt überspringen, der ihnen intuitiv erscheint, aber notwendig ist, damit der Roboter (der nicht intuitiv kann) die Aufgabe erledigen kann. Es kann hilfreich sein, auf den Pseudocode zurückzugreifen, der mit diesem Teil des Codes übereinstimmt, um sicherzustellen, dass die Schüler das Projekt in die kleinstmöglichen Schritte zerlegen. Wenn Sie die Verhaltensweisen in einer Gruppe oder mit dem Lehrer laut durchsprechen, können Sie den Schülern helfen, „Lücken“ in ihrer Logik oder ihrem Projekt zu identifizieren.
  • Vergleichen Sie den Code mit einem Arbeitsbeispiel – Die Schüler können frühere erfolgreiche Projekte oder in VEXcode integrierte Beispielprojekte verwenden, um zu sehen, wie sie aufgebaut sind, und dies mit ihrem vorhandenen Code vergleichen. Zusammenarbeit ist hier der Schlüssel – ermutigen Sie die Schüler, sich die Projekte anderer Schüler in der Klasse anzusehen, um zu erfahren, wie andere Gruppen die Aufgabe und ihre Projekte verstehen. Wenn mehrere Gruppen das gleiche Problem haben, kann es ein guter Zeitpunkt sein, diese formative Bewertung zu verwenden, um eine ganze Klassendiskussion zu führen und gemeinsam zu debuggen.

schüler und Lehrer

  • „Herauszoomen“ und einen Schritt zurücktreten – Wenn die Schüler Schwierigkeiten haben, eine Lösung zu finden, kann es für sie hilfreich sein, einen Schritt weg vom Code selbst zu machen und sich das größere Ziel des Projekts anzusehen und wie sie ihr Projekt gestaltet haben, um diese Aufgabe zu erfüllen. „Der Wechsel zwischen Abstraktionsebenen [kann] den Schülern helfen, Fehler im Code zu erkennen, den sie übersehen haben [und]...sie können auch feststellen, dass der Fehler nicht im Code, sondern in ihrer Herangehensweise an das Problem liegt.“1

Wie bei allem, je mehr Übung die Schüler beim Testen und Debuggen haben und positiv und konstruktiv über den Prozess sprechen, desto größer wird ihr Komfort und ihr Vertrauen darin. Den Schülern zusätzliche Übung zu geben, außerhalb des Debuggens, das natürlich bei einer Codierungsherausforderung auftritt, hilft, kollektive Kapazitäten nicht nur für Strategien und Fähigkeiten rund um das Debuggen aufzubauen, sondern auch für das Wachstum einer positiven Kultur rund um die kollaborative Problemlösung. Unabhängig von der Strategie, die Sie verwenden, hilft die Suche nach Möglichkeiten, Lernfeiern zu fördern und zu integrieren, auch solche, die so einfach sind wie das Debuggen eines Projekts, den Schülern, sich mit dem Lernprozess auseinanderzusetzen und stolz darauf zu sein, nicht nur auf das Produkt.


Referenzen

1Grover, Shuchi. Informatik in K-12: An A to Z handbook on teaching programming. Edfinity, 2020.