Code Zeile für Zeile nachverfolgen: warum Lesen vor dem Schreiben kommt

Tracing heißt, Code im Kopf auszuführen, Zeile für Zeile. Warum Lernende, die das nicht können, beim Programmieren straucheln, und wie du es im Video erklärst.

Vom Chasca-Team 6 Min. Lesezeit

Dieses Video wurde mit dem Skill Code-Aufgaben gemacht. Das Video ist auf Englisch vertont. Transkript lesen

Code nachzuverfolgen heißt, ihm so zu folgen, wie es der Computer tut, Zeile für Zeile, und jedes Mal, wenn sich der Wert einer Variablen ändert, ihn aufzuschreiben. Lernende, die nicht zuverlässig nachverfolgen können, tun sich schwer damit, Programme zu schreiben. Darum prüfen Prüfungsgremien es direkt, und darum meinen manche Forschende, man sollte es vor dem Schreiben von Code lehren.

Warum ist Tracing so wichtig?

Weil viele Lernende ihren ersten Programmierkurs beenden, ohne programmieren zu können, und schwaches Tracing ein Teil der Erklärung ist. 2001 gab eine Arbeitsgruppe unter Michael McCracken Informatikstudierenden im ersten Jahr an vier Universitäten eine Probeaufgabe im Programmieren: Die 216 Studierenden erreichten im Schnitt 22,89 von 110 Punkten.

Eine Folgegruppe fragte, warum. Raymond Lister und Kolleginnen und Kollegen testeten Studierende aus sieben Ländern im Lesen und Nachverfolgen kurzer Codestücke: vorhersagen, was ein kurzes Stück Code ausgibt, und die fehlende Zeile eines fast fertigen Codes wählen. Viele waren in beidem schwach, was die Autorinnen und Autoren als brüchigen Umgang mit den Fertigkeiten deuteten, von denen das Problemlösen abhängt.

Das prägte eine Lehridee. In einer Instruktionstheorie für die Einführung ins Programmieren von 2019 unterscheiden Benjamin Xie und Kolleginnen und Kollegen an der University of Washington vier Fertigkeiten, mit dem Tracing an erster Stelle, und plädieren dafür, das Lesen vor dem Schreiben zu lehren. In ihrer explorativen Studie führte Material, das die Fertigkeiten in dieser Reihenfolge lehrte, zu einem höheren Anteil bearbeiteter Übungsaufgaben, weniger Fehlern und besserem Verständnis in einem Nachtest.

Wie wird Tracing geprüft?

Direkt. Die GCSE-Spezifikationen für Informatik in England bauen es ein. Die Spezifikation von AQA nennt das Nachverfolgen von Code unter den Fertigkeiten, die die erste Klausur prüft, und erwartet, dass Lernende Trace-Tabellen nutzen, um herauszufinden, wie einfache Algorithmen funktionieren und wozu sie dienen. Die von OCR verlangt, dass Lernende Trace-Tabellen erstellen und verwenden, um einem Algorithmus zu folgen, sowie Fehler im Code erkennen und Korrekturen vorschlagen. Beide verlangen auch Wahrheitstabellen, und die von AQA enthält einfache SQL-Abfragen.

Wie sieht ein Trace aus?

Nimm eine kurze Frage, wie sie eine GCSE-Klausur stellt: Was gibt dieses Programm aus?

total = 0
for n in range(1, 5):
    total += n
print(total)

Ein Trace folgt dem Computer Änderung für Änderung:

Schritt n total
Start 0
Erster Durchlauf 1 1
Zweiter Durchlauf 2 3
Dritter Durchlauf 3 6
Vierter Durchlauf 4 10

Entscheidend ist, dass range(1, 5) vor der 5 aufhört, die Schleife also viermal läuft und das Programm 10 ausgibt. Wer 15 antwortet, hat die Schleife einmal zu oft durchlaufen, und eine gute Erklärung sagt das.

Warum ist Tracing allein schwer zu lernen?

  • Den Code auszuführen zeigt die Ausgabe, nicht das Warum. Die Lernenden sehen „10“ und wissen trotzdem nicht, welche Zeile es erzeugt hat.
  • Eine fertige Trace-Tabelle zeigt alles auf einmal, sodass die Reihenfolge, in der sich Werte geändert haben, also der ganze Sinn, verloren geht.
  • Die Unterrichtszeit ist knapp. Eine Lehrkraft kann ein, zwei Beispiele an der Tafel nachverfolgen; das Hausaufgabenblatt hat viel mehr.
  • Erklärungen im Netz behandeln Themen, nicht genau den Ausschnitt, an dem die Lernenden hängen, und selten in der eigenen Sprache der Lernenden mit den Codewörtern unverändert.

Was zeigt ein gutes Tracing-Video?

  1. Den Code, die ganze Zeit im Bild, neben dem Rechenweg, mit der gerade ausgeführten Zeile markiert.
  2. Jeden Wert, wenn er sich ändert, gesagt und geschrieben, eine Änderung pro Zeile: „i = 2 → total = 3“.
  3. Die entscheidende Idee, benannt: Die Schleife läuft viermal, die ganzzahlige Division verwirft den Rest, der Basisfall stoppt die Rekursion.
  4. Bei einem Fehler die Zeile, warum sie scheitert und die Korrektur. Bei einer Zahlenumwandlung jede Division durch die Basis. Bei SQL, welche Zeilen bleiben und warum.
  5. Die Ausgabe eingerahmt, dann eine kurze Probe.
  6. Code so gelesen, wie Programmierende ihn sagen, Namen und Schlüsselwörter auf Englisch, auch wenn die Erklärung in einer anderen Sprache ist.

Code und Trace zusammenzuhalten ist wichtig. Die Metaanalyse von 50 Studien von Paul Ginns aus dem Jahr 2006 ergab: Wenn zusammengehörige Informationen räumlich und zeitlich zusammengebracht werden, bringt das erhebliche Lerngewinne, besonders bei komplexem Stoff. Mehr von dieser Forschung behandeln wir in Warum Whiteboard-Videos funktionieren.

Was macht der Skill Code-Aufgaben?

Wir machen Chasca, nimm unseren Teil hier also mit dieser Vorsicht. Der Skill Code-Aufgaben bearbeitet Informatikfragen an einer Lehrertafel:

  • Bring den Code und die Frage mit, eingetippt oder eingefügt, oder als Fotos, PDF-Datei oder Dokument des Blatts, bis zu 20 Seiten: Fragen zur Ausgabe, Fehlersuche, Zahlensysteme, Wahrheitstabellen und SQL auf einer kleinen Tabelle.
  • Dein Code steht von Anfang an neben dem Rechenweg, genau so kopiert, und wird so durchgegangen, wie der Computer ihn ausführt, mit der entscheidenden Zeile hervorgehoben.
  • Der Trace wird an die Tafel geschrieben, eine Änderung nach der anderen, während sie gesprochen wird. Trace-Tabellen, Wahrheitstabellen und Abfrageergebnisse werden als Tabellen gezeichnet, ein Algorithmus in Schritten als Flussdiagramm und rekursive Aufrufe als Baum.
  • Codewörter werden so gelesen, wie Programmierende sie sagen, auf Englisch, mitten im Sprechertext in deiner Sprache, mit einer von 30 Sprecherstimmen oder deiner eigenen Stimme.
  • Jedes Ergebnis wird ein zweites Mal getrennt gelöst, bevor es eingerahmt wird. Weicht etwas ab, oder weicht es von deinem Schlüssel ab, nennt dir die Seite des Videos, welche Frage du prüfen solltest.
  • Bitte um Fragen zu einem Thema, ohne welche mitzubringen, und er schreibt dafür kurzen Code im Stil einer Prüfung, in Python, solange du keine andere Sprache nennst.

Für wen ist das gedacht?

Für Informatiklehrkräfte, die zu jeder Frage auf einem Blatt einen ausgearbeiteten Trace wollen, für Nachhilfelehrkräfte, die auf Schulprüfungen vorbereiten, und für Lehrende in Einführungskursen ins Programmieren, deren Lernende Code flüssig lesen müssen, bevor sie ihn schreiben.

Was macht er nicht?

  • Deinen Code ausführen. Er wird so nachverfolgt, wie es eine Lehrkraft an der Tafel täte, und dann durch erneutes Lösen geprüft; auf einem Computer wird er nicht ausgeführt.
  • Schaltbilder mit Logikgattern zeichnen, noch nicht. Wahrheitstabellen ja, Gattersymbole noch nicht.
  • Eine ganze Sprache lehren. Er erklärt Fragen, eine nach der anderen.

Wie machst du eines?

  1. Öffne „Code problems“ in Chasca.
  2. Füge den Code und die Frage ein, mit ihren Optionen und deinem Schlüssel, falls sie welche hat, oder füge ein Foto oder eine PDF-Datei des Blatts hinzu.
  3. Wähle die Sprache, die Stimme und eine schwarze Tafel oder ein Whiteboard, und erstelle das Video.
  4. Sieh dir die Seite des Videos auf markierte Fragen an, bevor du es teilst.

Deine ersten zwei Videos sind kostenlos, je bis zu einer Minute lang, mit Wasserzeichen und ohne Kreditkarte; ein kostenloses Video behandelt die ersten Fragen, die in seine Minute passen. Die Tarife beginnen bei $9.99 im Monat (Preise).

Quellen

Transkript zum Video Der Sprechertext des Erklärvideos oben (2:25).

In this video, we trace a Python list and convert a decimal number to binary and hexadecimal.

Question one. What is the output?

First, x equals a list containing one, two, and three.

Next, y equals x, so both names refer to the same list. The call y dot append with four adds four to that shared list. Now x and y both refer to the list containing one, two, three, and four.

The print call evaluates len of x, which is four.

Notice that assigning y equals x does not copy the list. Hence, the output is four.

Question two. Convert forty-five to binary, then to hexadecimal.

First, repeatedly divide forty-five by two, keeping each remainder. Forty-five divided by two gives twenty-two with remainder one.

Twenty-two divided by two gives eleven with remainder zero.

Eleven divided by two gives five with remainder one.

Five divided by two gives two with remainder one.

Two divided by two gives one with remainder zero.

One divided by two gives zero with remainder one.

Reading the remainders from bottom to top gives one zero one one zero one in binary. For hexadecimal, divide forty-five by sixteen to get two with remainder thirteen.

Then divide two by sixteen to get zero with remainder two.

In hexadecimal, thirteen is written as D. Reading those remainders from bottom to top gives two D. As a check, two times sixteen plus thirteen equals forty-five.

Hence, forty-five is one zero one one zero one in binary and two D in hexadecimal.

Häufige Fragen

Tracing heißt, ein Programm Zeile für Zeile so zu verfolgen, wie es der Computer tut, und jedes Mal, wenn sich der Wert einer Variablen ändert, ihn aufzuschreiben, um vorherzusagen, was das Programm tut oder ausgibt. Üblicherweise hält man das in einer Trace-Tabelle fest.

Die Belege sprechen dafür. Eine Instruktionstheorie für die Einführung ins Programmieren von 2019 stellt das Tracing an den Anfang, und in ihrer explorativen Studie verbesserte das Lehren der Fertigkeiten in dieser Reihenfolge das Bearbeiten der Übungen und senkte die Fehler.

Gib jeder Variablen und der Ausgabe eine eigene Spalte. Geh den Code Zeile für Zeile durch und füge jedes Mal eine Zeile hinzu, wenn sich ein Wert ändert; die letzte Zeile enthält die Endwerte und die Ausgabe.

Weil sie jede Variable im Kopf behalten müssen, während sie der Reihenfolge folgen, in der der Computer die Zeilen ausführt. Eine Studie in sieben Ländern von 2004 fand, dass viele Programmieranfänger schwach darin waren vorherzusagen, was kurze Codestücke ausgeben.

Nein. Der Skill Code-Aufgaben verfolgt den Code so nach, wie es eine Lehrkraft an der Tafel täte, und jedes Ergebnis wird ein zweites Mal getrennt gelöst, bevor es eingerahmt wird. Weichen die beiden voneinander ab, nennt dir die Seite des Videos, welche Frage du prüfen solltest.

Fragen zur Ausgabe und zum Tracing, das Finden und Beheben von Fehlern, Zahlenumwandlungen wie Dezimal in Binär, Wahrheitstabellen und SQL-Abfragen auf einer kleinen Tabelle. Schaltbilder mit Logikgattern zeichnet er noch nicht.

Weiterlesen

Dein nächstes Erklärvideo dauert keine Minute.

Deine ersten 2 Videos sind kostenlos, je bis zu 1 Minute lang, mit Wasserzeichen. Keine Kreditkarte nötig. Das komplette Produkt, inklusive aller Stimmen und Stile.