Vom Quelltext zur Unterrichtsgestaltung

Vom Quelltext zur Unterrichtsgestaltung Teresa Busjahn, Carsten Schulte Institut für Informatik Freie Universität Berlin Königin-Luise Str. 24-26 1419...
Author: Kai Schmid
2 downloads 2 Views 387KB Size
Vom Quelltext zur Unterrichtsgestaltung Teresa Busjahn, Carsten Schulte Institut für Informatik Freie Universität Berlin Königin-Luise Str. 24-26 14195 Berlin {busjahn,schulte}@inf.fu-berlin.de Abstract: Das Blockmodell ist ein informatikdidaktisches Modell des Programmverstehens. In diesem Artikel wird es als Werkzeug vorgestellt, um ausgehend von vorliegendem Quelltext Unterrichtsideen zu entwickeln. Die Blockanalyse bereitet den Quelltext in Form einer didaktischen Sachanalyse auf. Zusammen mit weiteren Überlegungen können anhand der Analyse-Ergebnisse zu erreichende Kompetenzen beschrieben, Lernwege und Aufgaben konstruiert sowie Hinweise auf Lernschwierigkeiten und –stufen gefunden werden.

1 Einleitung Nichts sei praktischer als eine gute Theorie – so heißt es, doch im Kontext der Fachdidaktik wirkt dieser Satz leider eher fremd. Häufiger ist von der Kluft zwischen Theorie und Praxis zu lesen: von der Frage, wieso die Praxis die neuen Erkenntnisse der Fachdidaktik nicht übernimmt. Die Gründe für diese Problematik sind vielfältig. Zum einen ist die Theorie oft nicht praxisgerecht aufbereitet, zum anderen stellt die Praxis zu hohe Anforderungen an die Passung abstrakter Theorien auf konkreten Unterricht. Ziel des vorliegenden Artikels ist, für einen Bereich des Informatikunterrichts die Theorie zugänglicher zu machen und das an einem spezifischen Beispiel zu konkretisieren. Zuvor wird kurz begründet, weshalb das nicht in Form eines Unterrichtsrezepts gemacht wird, wie man sich das ggf. aus Praxissicht wünschen würde: Unsere Grundüberzeugung ist, dass professionelles Lehrerhandeln nicht auf Rezeptwissen aufgebaut werden kann, sondern u.a. fachwissenschaftlicher und fachdidaktischer Kompetenzen bedarf, mittels derer fachliche Lerngegenstände situationsspezifisch, adressatengerecht und unter Berücksichtigung des jeweiligen Curriculums in effektive Lernangebote umgesetzt werden können. Dazu ist natürlich Wissen über Methoden, Lernsequenzen, Lernhürden, Anfangsvorstellungen und Ausgangsbedingungen des Lernens, über diagnostische Verfahren etc., erforderlich, das man isoliert als Rezept darstellen kann. Wesentlich ist jedoch die fachdidaktische Kompetenz, mittels derer diese isolierten Möglichkeiten und Bedingungsfelder aufeinander bezogen und – trotz oft widersprüchlicher Anforderungen – in ein kohärentes Lernarrangement integriert werden. Meyer drückt das in prägnanter Weise folgendermaßen aus: „Professionelle Lehrer sind Meister im Ausbalancieren konkurrierender Ansprüche an Unterricht und Erziehung“ ([Me04], S.167). Versteht man die Rolle von Theorie in dieser Hinsicht, dann stellt sie einen Rahmen bereit, mit der diese

Ansprüche ausbalanciert werden können. Auf diese Weise verstanden, dient sie nicht als Rezept, das entweder befolgt wird oder nicht, sondern als ein - im Wortsinne - praktisches Werkzeug, das die Arbeit für den Unterrichtsalltag unterstützt. Das Blockmodell (BM) hat den Anspruch, ein solches fachdidaktisches Modell zu sein (bzw. zu werden), das in der beschriebenen Art und Weise nutzbringend eingesetzt werden kann. Insbesondere erhebt es den Anspruch, das verfügbare fachdidaktische Wissen zum Themenbereich zu repräsentieren, einen (auch sprachlichen) Referenzrahmen zu bilden und dennoch handhabbar genug zu sein, dass es einfach zu lernen ist und unmittelbar auf die unterrichtliche Praxis angewendet werden kann.

2 Beispielhafte Blockanalyse Wir werden die Blockanalyse zunächst anhand eines Beispiels präsentieren (für den Artikel haben wir einen einfachen Quelltext gewählt, damit der Fokus nicht auf dem Beispiel, sondern auf Anwendungsmöglichkeiten liegt). Die Analyseergebnisse stammen aus einem Testlauf mit Master-Studierenden (einige davon Lehramtsstudierende). Die Funktion BinaereSuche gibt die Position von „Schluessel“ in Array „A“ zwischen „links“ und „rechts“ aus.

Abbildung 1: Binäre Suche mit Blockstruktur, Quelle des Codes: http://www-i1.informatik.rwthaachen.de/~algorithmus/algo1.php, abgerufen am 02.05.2011

Die obige Abbildung zeigt einen einfachen Pseudocode, wie ihn die Recherche im WWW zutage fördert. Wie gelangt man nun von so einem Quelltext zur Unterrichtsgestaltung? Zunächst könnte man sich – ggf. mittels Literatur – in die Gliederung des Quelltextes einarbeiten. Wir bestimmen also zunächst die Blockstruktur: Die while-Schleife bildet

den Hauptblock, darin finden sich je nach Abstraktionsniveau vier oder zwei Unterblöcke. Zwei Blöcke könnten sein: a) Bestimmen von mitte (Zeile 2) b) Vergleich mit Schlüssel und Auswertung des Ergebnisses (Zeilen 3-5). Da der Text insgesamt so kurz ist, könnte man hier auch von vier Unterblöcken sprechen, d.h. jede Zeile als einen Block ansehen. Das Bestimmen der Blockstruktur stellt also eine erste Auswahlentscheidung bzw. Schwerpunktsetzung dar, da im späteren Unterricht Blöcke zusammenfassend behandelt werden können bzw. sollen – konkret also werden die Zeilen 3-5 ausführlich einzeln oder ggf. auch zusammengefasst betrachtet. Für jeden Block können nun verschiedene Aspekte herausgearbeitet werden:   

Besonderheiten der Textoberfläche werden im Hinblick auf den Lernstand der Klasse oder „eigentümliche“ Formulierungen / Schlüsselwörter / Programmierkonzepte untersucht und notiert. Der eigentliche Ablauf – die Ausführung - wird ebenfalls knapp dargestellt und somit auf allgemeine Ausführungsregeln, den eigentlichen Algorithmus, hin abstrahiert. Idealerweise wird so der implementierte „Mechanismus“ deutlich. Getrennt von der Beschreibung des „Mechanismus“ wird die Funktion, die eigentliche Intention oder Bedeutung der einzelnen Elemente des Quelltexts (d.h. der Blöcke als den eigentlichen Bedeutungsträgern) beschrieben. Idealerweise wird deutlich, weshalb der im jeweiligen Block implementierte Mechanismus notwendiger Teil des Quelltexts ist.

Das Ergebnis einer solchen Analyse wurde im Anhang in Form einer Tabelle dargestellt. Diese Zerlegung gilt es wieder zusammenzuführen, d.h. die Rolle der einzelnen Blöcke für die Gesamtfunktionalität und die Art ihrer Verknüpfung zu klären. Das geschieht tatsächlich bei der Analyse der Blöcke mit, wird aber der Übersichtlichkeit halber getrennt dargestellt. Wir nennen einige Überlegungen:      

Relation zwischen den Blöcken 1.1 und 1.2-1.4: Das berechnete Element mitte ist gleichzeitig die Mitte des aktuellen Suchfelds und die aktuelle Suchposition. Relation zwischen den Blöcken 1.1. und 1.3-1.4: links und rechts markieren die linke und rechte Grenze einer beliebigen Teilmenge aus dem gesamten Suchfeld. Innerhalb des Schleifenrumpfs muss 1.1 tatsächlich als erstes bleiben. Die Blöcke 1.3-1.4 können in beliebiger Reihenfolge stehen. Relation zwischen den Blöcken 1 (bzw. im Inneren:1.2-1.4) und 2: Wieso kann das gesuchte Element eigentlich nicht übersehen werden? Die spezifische Implementierung setzt voraus, dass das Feld A sortiert ist, es wird davon ausgegangen, dass links kleiner ist als rechts. Relation von 1.3 und 1.4 zu 1.1: Wieso kann man nicht einfach links und rechts auf mitte setzen (anstelle von mitte-1 bzw. mitte+1)?



Relation von Block 1 zu 1.3 und 1.4: Beim Suchen werden die Ränder des Suchfelds (links und rechts) jeweils eingegrenzt, sodass irgendwann das gesamte Feld durchsucht worden ist.

Zusammenfassend kann die Blockanalyse als Vorgehen beschrieben werden, bei der ein Quelltext zunächst in Blöcke eingeteilt wird, welche dann mit Hilfe der Dimensionen Textoberfläche, Ausführung und Funktion genauer analysiert werden. Schließlich werden die Verbindungen zwischen den einzelnen Blöcken sowie weitere Ideen notiert. Die meisten Ergebnisse dürften dem erfahrenen Lehrer bzw. dem Informatik-Experten klar sein, sodass man sich eventuell fragt, wozu der Aufwand überhaupt nützt. Zur Erklärung kann eine Beobachtung dienen. Eine Studentin hat zur ersten Zeile unter der Spalte Ausführung sofort den Inhalt der Spalte Funktion gelistet: „Sucht, solange das Suchfeld mindestens ein Element enthält“. Nach einmaligem Lesen (und WiederErinnern des Algorithmus) war ihr also sofort die Bedeutung der zweiten Zeile (while links ≤ rechts do) klar. Als Expertin kann sie den gelesenen Quelltext unmittelbar interpretieren und auf der Funktionsdimension beschreiben. Das ist ja auch die Ebene, die beim Verstehen erreicht werden soll. Die Blockanalyse hilft in diesem Fall, sich selbst die eigentlich „klaren“ und unbewusst durchlaufenen Verstehensschritte deutlich zu machen und präzise zu beschreiben. Die Frage ist natürlich, ob dieses Analyseverfahren tatsächlich – wie eingangs versprochen – so konstruiert ist, dass die nach dem Stand der Fachdidaktik lernwesentlichen Aspekte durch die Analyse hervorgehoben werden.

3 Das Blockmodell 3.1 Einführung in das Blockmodell Das Blockmodell umfasst die bereits behandelten Dimensionen Textoberfläche, Programmausführung und Funktion. Diese drei Dimensionen werden in den Spalten der Tabelle verortet und können sich auf unterschiedliche Teile des Programmtexts beziehen – dargestellt in den Zeilen: Auf ein einzelnes Schlüsselwort, ein so genanntes Atom, auf einen in sich geschlossenen Abschnitt, den sogenannten Block oder auf die Verknüpfungen der einzelnen Teile, die Relationen, sowie schließlich sogar auf den gesamten Text, die Makroebene. Die Makroebene entsteht, weil die einzelnen Blöcke in einem Zusammenhang stehen, der ebenfalls ergründet werden muss; das ist die Ebene der Relationen (zwischen den Blöcken).

Abbildung 2: Das Blockmodell

Die fachdidaktische Literatur zu diesem Gebiet ist umfangreich und wird zudem laufend ergänzt (vgl. zusammenfassende Darstellungen wie [Sc10], [RRR03]). Die Repräsentation dieser Literatur im BM stellt daher eine abstrahierende Modellierung bzw. Konstruktion dar. Dass etwa die jeweils verwendete Programmiersprache eine Rolle spielt, ist selbstverständlich. Schließlich müssen die Sprachkonstrukte entziffert werden können (Textoberfläche). Es hat sich jedoch gezeigt, dass viele Fehler auf einige Fehlvorstellungen zurückgeführt werden können, die sprachunabhängig sind. Pea hat 1986 [Pe86] drei Fehlerklassen (parallelism, intentionality und egocentrism) identifiziert, die alle auf einen „Super-Bug“ zurückgeführt werden können: Die Vorstellung, dass eine Intelligenz (der Computer als Superhirn) die Programmausführung aufgrund der Interpretation des Programms steuert (und z.B. Dinge parallel erledigt, wenn sinnvoll, oder Dinge weglässt, wenn zweckmäßig, etc.). Die Programmausführung ist also eine zweite wesentliche Dimension. Daneben gilt es aber auch die Funktion, d.h. die Ziele des Programms zu bestimmen – und hier ist die soeben abtrainierte interpretierende Einschätzung des Programmtexts wieder notwendig! Diese dritte Dimension spielt daher in nahezu allen Modellen des Programmverstehens [Sc10] eine wichtige Rolle. Exemplarisch sei hier Lister genannt (vgl. etwa [Li06]); seinen Angaben zufolge würden in Vorträgen die anwesenden Dozenten auf Fragen zu „Was macht Quelltext xy?“ entsprechende Quelltextschnipsel immer sofort die Funktionsdimension beschreiben, während Studierende bzw. Anfänger zumeist auch nach längerem Studium auf der Dimension der Ausführung und der Beschreibung einzelner Zeilen bleiben, sie sehen sprichwörtlich den Wald vor lauter Bäumen nicht. Verstehen ist insgesamt also die Fähigkeit, das Programm mit eigenen Worten zusammenfassend zu erklären. Diese Erklärung muss qualitativ über das Nachvollziehen eines Programmablaufs hinausgehen, etwa indem die dahinter liegende algorithmische Idee erkannt wird und beschrieben werden kann. Wenn ein Programmtext verstanden wurde, dann kann man Schlussfolgerungen ziehen, Vorhersagen erstellen, den Programmtext in andere Darstellungen übersetzen und daran gezielt Änderungen vornehmen. Verstehen bedeutet aber auch abstrahieren. Aufgrund des begrenzten Kurzzeitgedächtnisses können nicht alle Informationen des Programmtextes gleichzeitig bearbeitet werden. Das heißt,

wenn jemand über den Zusammenhang der einzelnen Blöcke nachdenkt, dann können auf dieser Ebene die einzelnen Atome kaum mehr beachtet werden. Stattdessen wird „das Wesentliche“ des gelesenen Blocks mit dem „Wesentlichen“ eines zuvor gelesenen Blocks verknüpft (ausführlich in [Sc07]).

3.2 Das Zusammenwirken von Blockanalyse und didaktischer Strukturierung Die oben am Beispiel angedeutete Blockanalyse ist nun das Verfahren, einen vorliegenden Quelltext mittels des Blockmodells zu analysieren. Diese Analyse dient dazu, die nach dem theoretischen Modell wesentlichen Aspekte des Lerngegenstands hervorzuheben und zur Konstruktion von Unterrichtssequenzen, zur Beschreibung von Lernzielen/Kompetenzstufen bzw. zur Einschätzung des Schwierigkeitsgrads zu nutzen. Die Blockanalyse kann zwar nicht allein die Grundlage für die Aufbereitung von informatischen Inhalten für den Unterricht bilden, aber sie kann die didaktische Strukturierung für die Unterrichtsplanung in wesentlichen Aspekten bereichern, indem sie die Fragen nach dem „Was“ (Sachanalyse), dem „Wozu“ (didaktische Aspekte) und dem „Wie“ (methodische Aspekte) zu beantworten hilft. So kann sie als Werkzeug bei der (didaktischen) Sachanalyse dazu dienen, die Inhaltsstruktur herauszuarbeiten. So wie Bäume erheblich vom Erdreich zehren, aber u.a. auch Sonne zum Wachsen benötigen, kann die Unterrichtsplanung jedoch nicht ausschließlich auf der Blockanalyse gründen, sie hat hierfür aber durchaus einen fachdidaktischen Nutzen. Auch können sich die Sachanalyse und methodische/didaktische Gesichtspunkte gegenseitig auf verschiedenen Ebenen, wie der Wurzel und den Ästen berühren und beeinflussen. Gleichzeitig liefert eine solche Analyse das Vokabular, um diese wesentlichen Aspekte präzise zu beschreiben.

Abbildung 3: Die Blockanalyse im Kontext der didaktischen Strukturierung

4 Die Ergebnisse der Blockanalyse für Unterrichtsgestaltung nutzen In diesem Abschnitt weisen wir auf Möglichkeiten hin, wie die Ergebnisse der Blockanalyse für die Unterrichtsgestaltung genutzt werden können.

4.1 Vokabular für Unterrichtseinheiten, Diagnostik und Lernstufen Das Blockmodell liefert eine Reihe von „Vokabeln“, um Verständnisprobleme, Unterrichtssequenzen oder auch Aufgabenformen zu beschreiben. Dabei werden diese Sachverhalte formal erfasst und somit handhabbarer. Beschreibt man eine Reihe von Unterrichtsstunden in dieser abstrakten Weise, lassen sie sich vergleichen und klassifizieren und erhalten so Metadaten, was zum einen ihre Analyse und zum anderen ihren Austausch erleichtert. Damit können bspw. verschiedene Unterrichteinheiten zu einem Thema gesammelt werden, wobei zu jeder der behandelte Algorithmus mit Kontextinformationen (also der Funktion auf Makroebene) und das Vorgehen als Weg durch das Blockmodell vermerkt wird. Eine Einheit, welche zunächst die Funktion des Quelltexts und dann bisher unbekannte Konstrukte der Programmiersprache behandelt, startet bei der Funktion auf Makroebene und wird dann auf Atomebene fortgeführt. Konzentriert sich der Kurs auf die Besonderheiten der Programmierung, liegt der Schwerpunkt auf der Programmausführung, während ein Pseudocode eher die Funktion in den Mittelpunkt stellt. Durch diese Annotationen können die jeweils passende Lerneinheit herausgesucht oder auch Schwächen benannt werden. Bei einer Stunde, in welcher es Schwierigkeiten gab, weil nicht alle Sprachkonstrukte ausreichend vertraut waren, wäre anzumerken, dass die Atomebene nicht genügend berücksichtigt wurde. Ähnliche Beschreibungsmöglichkeiten bieten sich ebenso für Übungsmaterial. Mithilfe von Übungen zu verschiedenen Zellen des Blockmodells bzw. den Blöcken lässt sich ermitteln, in welchem Bereich sich der jeweilige Kenntnisstand ungefähr befindet. Solche Ergebnisse können u.a. zur inneren Differenzierung der Lerngruppe herangezogen werden. Auch ist durch Lerneinheiten und Übungen, welche genau das ermittelte Verständnisdefizit abdecken, eine gezielte Förderung möglich. Ein Lernender, der bspw. in der Lage ist, einen gegebenen Quelltext auf dem Papier auszuführen, jedoch die allgemeine Intention des Programms nicht erkennt, hat ein Problem bei der Abstraktion von der Ausführung zur Funktion (bspw. kann für konkrete Eingabewerte der Rückgabewert genannt werden, die algorithmische Idee, z.B. der ggT dagegen nicht).

4.2 Aufgaben ableiten Aus der Blockanalyse kann eine Vielzahl von Aufgaben generiert werden. Die Inhalte der Zellen können als Schablonen für Multiple-Choice- und Wahr-Falsch-Fragen sowie Lücken- und Schütteltexte verwendet werden. Im Folgenden werden einige Aufgabenschablonen vorgestellt.  In welcher Reihenfolge müssen die folgenden Quelltextzeilen stehen, damit die folgende Funktion erfüllt ist: X (Innerhalb eines Blocks von der Textoberfläche auf die Funktion schließen; ggf. wird dazu die Ausführung benötigt)  Welcher dieser Quelltexte erfüllt die folgende Funktionen X: a / b / c (Text zur Funktion, je nach Beispiel Schwerpunkt ggf. auf bestimmten Konstrukten)

 

An welcher Stelle muss Zeile X stehen, damit Funktion Y realisiert wird? (Von der Funktion oder Programmausführung zur Textoberfläche; zumeist innerhalb eines Blocks) Erfüllt der folgende Quelltext Funktion X? (Wahr-Falsch-Frage) (Funktion)

4.3 Konstruktion von Lern-Sequenzen Lernsequenzen, die zeitliche Anordnung wesentlicher Lernbereiche, kann man sich als verschiedene mögliche Wege durch die in Abbildung 2 dargestellte zweidimensionale Matrix des Blockmodells vorstellen [Sc07]. Wurde für einen Programmtext eine Blockanalyse durchgeführt, also die Blockstruktur beschrieben, kann diese als Grundlage für die Sequenzierung dienen. Eine U-förmige Sequenz ließe sich etwa auf folgende Weise realisieren: Schritt 1 Ziel des Algorithmus aufzeigen

Arbeitsweise

Zelle des Blockmodells

Tafelbild …

BM[M,F]1

2 Teilfunktionen des Algorithmus Tafelbild … herausarbeiten

BM[R,F] BM[B,F]

3 Wiederentdecken der Funktio- Einzelarbeit am Rechner, BM[B,TPF] nen im Quelltext mit Arbeitsblatt … BM[R,TPF] 4 Rückbezug zur algorithmischen Plenum Grundidee

BM[M,F]

Tabelle 1: U-Sequenz

Neben der U-Form, welche zunächst nur die Funktions-Dimension betrachtet und diese dann im Programmtext lokalisiert, gibt es weitere Möglichkeiten (Tabelle 2):

Zickzack-Form

U-Form

Visualisierung der Ausführung

Leseansatz

Tabelle 2: Sequenzen

Die Zickzack-Form erfasst bottom-up die Ausführung von einzelnen Quelltextsegmenten und ordnet ihnen die Funktion zu. Ein in Lehrbüchern beispielsweise häufig verwendetes 1

Der Index bezieht sich auf die Zeilen und Spalten des Blockmodells. BM[M,F] bezieht sich auf die rechte obere Zelle, Makroebene und Funktion.

Sequenzmuster steigt mit einem generellen Überblick über den vorzustellenden Algorithmus ein (BM[M,F]), um dann von unten her einzeln die weiteren Aspekte abzuarbeiten (Spaltenweise, Zeilenweise oder in „Schlangenlinien“). Reines Lesen, wie eines natürlich sprachlichen Texts, würde verlangen, den Text sequentiell zu verstehen. Sind für einen Programmtext die Zellen des Blockmodells erfasst, können die Elemente aus dieser einmal durchgeführten Analyse ohne großen Aufwand in verschiedenste Abfolgen gebracht und so der aktuellen Lehr-Lernsituation angepasst werden. Dabei ist es nicht notwendig, dass immer jede einzelne Zelle behandelt wird, es kann durchaus sinnvoll sein, bestimmte Zellen temporär oder auch insgesamt auszulassen.

5 Schlussbemerkung Die Blockanalyse anhand der Dimensionen und Ebenen des Modells dient zur Aufbereitung von Programmtext für den Unterricht und stellt damit ein spezifisch informatikdidaktisches Instrument der Sachanalyse dar. Der so aufbereitete Quelltext ist unmittelbar für die Unterrichtsgestaltung anwendbar. Mithilfe der beschriebenen Dimensionen und Ebenen lassen sich ganz allgemein Verstehensprozesse und Vorgehensweisen abbilden, das Blockmodell dient hierbei als sprachliches Referenzsystem. Neben der Generierung von Aufgaben können daraus Lernstufen abgeleitet werden, welche zur Lernstandsdiagnose und Darstellung von Kompetenzen herangezogen werden können. Zusätzlich lässt sich das Blockmodell zur Konstruktion von Lernsequenzen heranziehen.

Anhang Zeile(n)

Block (Nr. & Titel)

Textoberfläche

Ausführung

Funktion

1-6

1

Suchschleife

While, sprechende Variablennamen

Eingangsprüfende Schleife solange links