Lernaufgabe: „Input-Providing Tasks“ für die Lehre des Programmierens

Kurzzusammenfassung:

Bei Input-Providing Tasks im Programmiersprachenlernen geht es darum, dass Studierende angeleitet werden Programmcode wie eine Fremdsprache zu lesen, um auf diese Weise zentrale Konzepte des Programmierens besser verstehen zu können. Die Studierenden erhalten zunächst Code und sollen beschreiben, was hierbei passiert, wobei ausdrücklich die Verwendung von Alltagssprache gewünscht wird. In einem zweiten Schritt wird der Code in logische Einheiten zerlegt (z.B. for-Schleife, Variablendeklaration und Initialisierung etc.) und mit dem nötigen Fachvokabular beschrieben. Während diesen Arbeitsschritten können sich die Studierenden untereinander in Kleingruppen austauschen, zudem bestehen Austausch- und Feedbackschleifen mit der gesamten Gruppe und dem Dozierenden.


Übersicht

Ziele:

  • Die Studierenden können Programmcode lesen und verstehen.
  • Die Studierenden können das „Fachvokabular“ beim Programmieren anwenden.
  • Die Studierenden können Programmcode dokumentieren.

Didaktische Funktion(en):

  • Einstieg & Aktivierung
  • Informationsaneignung
  • Wiederholung & Festigung

Hintergrund / didaktisch-methodische Einordnung:

Das Prinzip der Input-Providing Tasks stammt aus dem Ansatz des „Task-based Programming Learnings“ (TBPL), welches in Anlehnung an das fremdsprachdidaktische Konzept des sogenannten „Task-based Language Learnings“ (TBLL) nach Willis (1996) entwickelt wurde. In dem Ansatz von Willis werden für das Fremdsprachenlernen zwei relevante Aufgabenformen unterschieden: „Output-Prompting“ (Schreiben und Sprechen) sowie „Input-Providing“ (Lesen und Hören). Zudem wird unterschieden zwischen einer sogenannten „Meaningful Interaction“, bei welcher der Fokus auf dem allgemeinen Verständnis liegt, und einer „Formful Interaction“, bei welcher der Fokus bei syntaktischer Korrektheit liegt. Darüber hinaus wird der Aufgabenprozess in die Phasen Pre-Task, While-Task und Post-Task unterteilt (diese Phasen werden später im Ablauf näher beschrieben). Diese Kernelemente, welche sich im Fremdsprachenlernen als ausgesprochen effektiv erwiesen haben, wurden für den hier vorgestellten Ansatz auf das Programmiersprachenlernen übertragen (siehe Figas, Bartel & Hagel 2015; Figas et al. 2016).

Sozialform(en):

Einzelarbeit, Kleingruppenarbeit (3-5), Plenum

Anzahl der Lernenden:

ab 2 Personen


Voraussetzungen und Ressourcen

Voraussetzungen:

Lehrperson(en) benötigen sehr gute Kenntnisse im Programmieren. Lernende benötigen je nach Aufgabentyp Vorkenntnisse im Bereich Programmieren.

Ausstattung & Medien:

Seminarraum je nach Anzahl der Lernenden, PC, 1 Beamer


Ablauf

Beispiele oder Materialien:

Beispielaufgabe:

Welche Ausgabe erzeugt das folgende Programm auf der Konsole? Geben Sie schrittweise für jede ausführbare Zeile Code an, was der Code tut:

public static void main(String[] args) { // opt. Definition der statischen Methode "main()" mit dem Rückgabetyp "void" (=keine Rückgabe) und dem Parameter "String[] args"
int a = 2; // Definition der Variable "a" vom Typ "int", Zuweisung des Werts 2 zur Variable "a"
int b = 7; // Definition der Variable "b" vom Typ "int", Zuweisung des Werts 7 zur Variable "b"
System.out.println(a+b); // Ausgabe der Summe von den Variablen a und b. Das Ergebnis der Rechnung und damit die Ausgabe auf der Konsole ist: 7
}

Hinweise zur Vorbereitung:

Konzeption von Aufgaben mit geeignetem Programmcode. Vorbereiten von einem Lösungsvorschlag, in welchem der Programmcode ordentlich und präzise dokumentiert ist.

Hinweise zur Nachbereitung:

Die Ergebnisse werden ggf. gespeichert und den Lernenden zur Verfügung gestellt.

Hinweise zur Dauer: Insgesamt ca. 55 Minuten


Kritische Einordnung

Vorteile und Stärken:

Sehr gut geeignet für Anfänger(innen), es unterstützt die Kommunikation und Interaktion zwischen den Studierenden.

Grenzen und Schwächen:

Vergleichsweise zeitaufwändig

Sonstige Hinweise:

Das hier beschriebene Lehr-Lern-Arrangement beschreibt die Version Input-Providing, was darauf abzielt, dass die Studierenden lesen und verstehen. Das gleiche Arrangement existiert auch für die Output-Prompting-Variante, in welcher es darum geht, dass die Studierenden eigenen Programmcode schreiben. Diese beiden Verfahren eignen sich zur kombinierten und gestaffelten Anwendung (beispielsweise in einer ersten Stunde Input-Providing, in einer zweiten Output-Prompting).


Literatur und weiterführende Hinweise
  • Figas, P; Bartel, A; Ebert, M; Müller-Amthor, M; Weilemann, E; Brune, P; Hagel, G. (2016): Learning Programming Languages through Input-Providing Tasks. IEEE: Global Engineering Education Conference EDUCON, Abu Dhabi, S. 419-424.
  • Figas, P.; Bartel, A.; Hagel, G. (2015): Task-based Programming Learning in Higher Education, In: Global Engineering Education Conference (EDUCON), Tallinn, IEEE (S. 634- 639).
  • Willis, J. (1996): A Framework for task-based learning. Longman: Harlow and Essex.