Tipps zum Unterrichten mit Live Coding

11

Ich bin an einem Programmier- und Algorithmuskurs im ersten Jahr beteiligt. In einem kürzlich gehaltenen Vortrag habe ich beschlossen, das Material mithilfe von Live-Codierung zu präsentieren. Dies bedeutet im Wesentlichen, dass ich mich hinter die Tastatur setze, Code schreibe und ihn mit Emacs auswerte, um den Prozess zu vereinfachen.

Dies war ziemlich erfolgreich und die Schüler kommentierten, wie sehr sie das (inter) aktive Format schätzten. Da dies mein erster Versuch war, dieses Unterrichtsformat zu verwenden, weiß ich, dass es nicht perfekt lief. Einige der Probleme waren darauf zurückzuführen, dass ich nicht so gut mit Emacs umgehen konnte, wie ich es sollte, und andere hatten damit zu tun, dass Schülerfragen mich zu weit von meinem Skript entfernt haben. Ich weiß, dass ich es besser machen kann.

Was sind einige Richtlinien für Vorträge (und andere Demonstrationen) mit Live-Coding-Vorträgen?
Welche Fallstricke sind zu vermeiden?

Dave Clarke
quelle
2
Ich habe meine Vorbehalte gegen Live-Codierung (hauptsächlich in Bezug auf den Durchsatz und die Illusion des Verstehens). Dennoch zwei Vorschläge: 1) Haben Sie überlegt, Klassenzimmer-Antwortsysteme zur Strukturierung von Fragen zu verwenden? 2) Ich habe keine Ahnung, wie praktisch das ist, aber die Verwendung von ideone.com kann interessant sein, da die Schüler nach der Vorlesung auf Ihren Code zugreifen und ihn ausführen können, ohne etwas installieren zu müssen.
Raphael
@ Raphael: Ich hatte ihre Aufmerksamkeit viel besser als zuvor, was sicherlich ein Plus ist. Ihre beiden Vorschläge sind sehr gut. 1) Derzeit bieten nur die wirklich folgenden Personen Feedback. 2) Meine Sprache ist nicht auf der Liste. Der gesamte Code ist jedoch in Folien verfügbar (die ich ignoriert habe).
Dave Clarke

Antworten:

8

Hier sind einige Tipps und Fallstricke, die ich gesammelt habe, nachdem ich eine Woche lang Live-Codierung verwendet und mit einem Kollegen gesprochen habe.

DOS

  • Bereiten Sie ein Skript vor und versuchen Sie, sich daran zu halten.
  • Löschen Sie die Puffer häufig, um sich auf das relevante Teil zu konzentrieren.
  • Beginnen Sie für jedes neue Thema neu.
  • Verwenden Sie eine größere Schriftart.
  • Beherrschen Sie das von Ihnen verwendete Tool, um zu vermeiden, dass Sie zu viel Zeit mit Kleinigkeiten verschwenden.
  • Hintergrundfunktionen vorcodieren lassen. Wenn dies nicht besonders relevant ist, stellen Sie sicher, dass sie importiert werden können, anstatt in der Arbeitsdatei angezeigt zu werden.
  • Arbeiten Sie idealerweise in einer Sprache, die Ihnen sofortiges Feedback gibt. Sprachen mit einer interaktiven Shell sind in dieser Hinsicht am besten geeignet.
  • Geben Sie bei Verwendung eines Typs den erwarteten Typ der Funktion an, die Sie schreiben. Dies bietet den Schülern ein richtungsweisendes Licht.
  • Machen Sie frei Fehler (wenn auch nicht zu viele). Schritt durch, wie diese behoben werden sollten.
  • Vergessen Sie nicht - ein Bild sagt mehr als tausend Worte: Interleave-Folien und Black / Whiteboard arbeiten mit Ihrer Codierungssitzung.
  • Haben Sie zusammenfassende Folien für die Punkte, die Sie behandelt haben
  • Wenn Sie Code ändern, erstellen Sie manchmal eine Kopie und ändern Sie die Kopie. Dies bietet einen Vergleichspunkt.
  • Bereinigen Sie den Code regelmäßig.
  • Akzeptieren Sie, dass Sie Fehler machen und den Schülern offen erlauben, Sie zu korrigieren - dies erleichtert Ihre Arbeit und befähigt sie.
  • Schreiben Sie Code in Ihrem eigenen Stil. Beispielsweise haben Sie den Code möglicherweise von einer anderen Stelle kopiert. Dies wird jedoch schwer zu reproduzieren sein. Schreiben Sie es besser in Ihrem eigenen Stil. Zum Beispiel schreibe ich immer Curry-Funktionen, weil ich hauptsächlich Haskell programmiere. Aber Standard ML verwendet die Redewendung weniger häufig. Das Erwarten von Curry-Funktionen ist der häufigste Fehler, den ich im Unterricht mache.
  • Stellen Sie physisch sicher, dass Ihr Raum gut eingerichtet ist. Gute Tastatur in der richtigen Höhe, Kabel an den richtigen Stellen, physische Hindernisse aus dem Weg usw. Nehmen Sie sich eine Minute Zeit, bevor Sie beginnen, Ihren Platz für Sie zu nutzen, nicht gegen Sie.
  • Ein Ansatz besteht darin, zu schreiben, was die Schüler sagen, auch wenn es falsch ist. Dies bringt die Schüler dazu, die Codierung und die Korrektur vorzunehmen. Es ist eine gute Idee, den Code am Ende zu bereinigen. Dieser Ansatz kann ein Klassenzimmermodell für Aufmerksamkeit und Interaktion schaffen, da die Schüler darauf achten müssen, zu verfolgen, was vor sich geht.

NICHT

  • Optimieren Sie Ihren Code nicht im laufenden Betrieb und brechen Sie ihn so, dass Sie ihn nicht reparieren können.
  • Vermeiden Sie es, mit dem Computer zu sprechen. Sprich mit den Schülern!
  • Vermeiden Sie zu viel Eingabe, insbesondere von Boilerplate-Code. Nutzen Sie Ihre Umgebung, um die Vorlagen für Sie auszuspucken.
  • Wenn Sie einen Texteditor verwenden, sollten Sie nicht ständig scrollen. Es wird Reisekrankheit verursachen, wenn diejenigen versuchen, zu folgen.
  • Wenn Sie einen Texteditor verwenden, warnen Sie die Schüler, bevor Sie radikale Änderungen an Ihrem Code vornehmen, dass Sie dies tun werden, damit sie verfolgen können, was gerade passiert.
Dave Clarke
quelle
1
Wie viele Schüler sind in deiner Klasse? Ich mag Ihre DOs in Richtung Interaktivität, frage mich aber, wie sich das auf 50, 100, 250 Schüler skaliert.
Raphael
1
Veröffentlichen Sie Ihren Code nach dem Unterricht? Ich stelle mir ein Github-Repository vor, in dem die Schüler verschiedene von Ihnen erstellte Versionen durchsuchen können (möglicherweise einschließlich einer polierten Kommentarversion, die nie im Unterricht erschienen ist) und die Unterschiede untersuchen können. Sie könnten auch das Repository klonen, um einmal geschriebene Algorithmen einfach als Unterprogramme in ihren Hausaufgaben zu verwenden (falls dies wünschenswert ist).
Raphael
1
Bereiten Sie Unit-Tests vor, mit denen Sie Ihren Code ausführen können? Ich bin mir nicht sicher, ob dies in jeder Klasse angemessen ist (liegt der Schwerpunkt auf dem Erlernen der Prinzipien von Programmiersprachen, Softwareentwicklung oder Algorithmen?), Aber es werden möglicherweise einige bewährte Methoden vermittelt.
Raphael
2
1) 128 Personen haben sich für die Klasse angemeldet, obwohl ungefähr 60-80 auftauchen. 2) Ich habe den Code bereits auf Folien, aber ich verwende die Folien nicht. Die Schüler haben also eine Version von dem, was ich mache, niemals einen der Zwischenschritte. Ich bin mir nicht sicher, wie interessant es ist, alle Variationen zu haben. 3) Nein, ich nicht, obwohl sie informelle Spezifikationen schreiben. Der Schwerpunkt liegt auf dem Erlernen einer ersten Programmiersprache und einiger Algorithmen / Datenstrukturen. Ich stimme jedoch zu. Unit-Tests werden wir in Betracht ziehen, stärker in den Kurs zu integrieren. Danke für die Fragen / impliziten Tipps.
Dave Clarke