|
S. Spolwig |
[Aktuelles
| Dokumente | Inhalt | Literatur
| Organisation] |
Aufgabenstellung: * Einführung *
Häufig wird immer noch Informatikunterricht in den Schulen als
Programmierkurs durchgeführt und missverstanden, wobei den Schülern
oft ein völlig falsches Bild von den Aufgaben der Informatik und
Softwareentwicklung vermittelt wird. In der jüngeren didaktischen
Diskussion hat sich eine Verschiebung der Inhalte abgezeichnet, die
Modellierung und Objektorientierung in den Mittelpunkt stellt. Das Ergebnis soll ein Lehrplanentwurf sein sowie die Entwicklung von
2 bis3 Unterrichtseinheiten, die gewissermaßen 'starkes' auf dem Wege
zum gewünschten Ergebnis darstellen. Im Folgenden möchte ich eine Unterrichtseinheit von 18 Unterrichtsstunden vorstellen, die den Einstieg in die Programmierung bzw. den Einstieg in den Unterricht der Informatik in der Klasse 11 eines allgemeinbildenden Gymnasiums des ersten Halbjahres darstellen könnte. Ich halte es dazu für notwendig, einen Überblick über die wichtigen Komponenten und Begriffe zu geben, die im ersten Unterrichtsjahr besprochen und berücksichtigt werden sollten. Im Einstieg sollte ein Teil dieser Begriffe eingeführt werden, so dass später darauf zurückgegriffen werden kann. Ausgangspunkt im Unterricht ist immer ein Problem, welches für einen Computer umgesetzt werden muss. Hierzu ist es wichtig, dass der Schüler zwischen verschiedenen Sichtweisen auf ein Programm zu unterscheiden vermag. Ein vorliegendes Problem muss für den Rechner in eine bestimmte Struktur gebracht werden. Hierzu muss der Schüler mit verschiedenen Entwurfs- und Analysemethoden vertraut gemacht werden. Mit Hilfe eines Modells wird ein reeller Sachverhalt nachgebildet, der mit Hilfe von Algorithmen umgesetzt wird. Dieses muss geübt werden! Einen wichtigen Stellenwert nehmen dabei die Kontrollstrukturen in der Computersprache ein. Hier sind die Zählschleife (FOR-Schleife), die Vor-, die Nachprüfende-Schleife (WHILE- , REPEAT-Schleife) und die Fallbehandlung (IF ) zu benennen. Mit den Schlüsselworten sind die vorgegebenen Codewörter (FOR, WHILE, REPEAT, PRINT, INPUT und alle weiteren Befehle), mit denen vorgegebene Funktionen abgerufen werden können, gemeint. Der Schüler sollte den Rechner zu einem bestimmten Maß selbständig beherrschen lernen. Hier seien nur Starten von Programmen, Programmieren in vorgegebenen Programmierumgebungen und Fehlerbehebung durch bestimmte Werkzeuge, dem Debugger genannt. Beim Entwickeln eigener Programme ist es häufig nötig, dass der Schüler sich konzeptionelle Gedanken bezüglich der Variablen, der Typenwahl, der Funktionseinheiten (Prozeduren) und Parameterübergaben macht. Diese und weitere Aspekte sind in folgender Tabelle als Übersicht dargestellt.
Überblick der zu behandelnden wichtigen Komponenten und Begriffe des ersten Unterrichtsjahrs:
( aus dem Hauptseminar Fachdidaktik der Informatik, HU-Berlin unter der Leitung von Herrn Spolwig, 2.7.2002)
Neben den Inhalten, für die sich eine Programmierumgebung eignet, sind auch einige wichtige "äußere" Faktoren, die sich im Umgang im Schulalltag bemerkbar machen, zu berücksichtigen. Da sind zunächst einmal die Kostenfaktoren. Sinnvoll ist sicherlich eine kostengünstige Programmierumgebung zu wählen (am besten kostenlos), die der Schüler auch zu Hause benutzen kann ohne Schutzrechte zu verletzen. Zum anderen sollte sie auch im Unterrichtsalltag leicht konfigurierbar und störungssicher sein, so dass systembetreuende Arbeiten möglichst gering gehalten werden. Diese und weitere Faktoren sind unten tabellarisch dargestellt.
Anforderungen an eine Programmierumgebung für den Unterrichtseinsatz: ( aus dem Seminar "Analyse, Planung, Beurteilung von Informatikunterricht", HU-Berlin unter der Leitung von Herrn Penon, 26.5.2002)
Wie sollte man die Schüler in die Programmierung einführen? Beginnt man unmittelbar mit einer Programmiersprache wie Java, so muss man von Anfang an sehr viele Details berücksichtigen, die aber für das Verständnis des Programmierens nicht relevant sind. Im Gegenteil, sie behindern die Schüler bei der Arbeit, ihre Ideen und Abläufe in ein Programm umzusetzen. Diese bewirkt häufig Frust und Demotivation. Was ist die Grundlage der Programmierung? Was macht die Tätigkeit eines Programmierers aus, unabhängig von der Sprache, in der er programmiert? In erster Linie muss vermittelt werden, dass das Problemlösen im Vordergrund steht. Dabei sollen die Schüler lernen, strikt analytisch vorzugehen und ihre Gedanken, Problemlösungen in Abläufe zu fassen. Für meinen Unterrichtseinstieg wählte ich daher eine leicht zu bedienende variablenfreie pädagogische Programmierumgebung. Die Schüler werden an eine graphische Programmierumgebung herangeführt, wobei die Elemente mit der Maus zusammengestellt werden. Dadurch können keine Syntaxfehler entstehen, so dass die Konzentration im Unterricht auf die Modellierung der Aufgabe konzentriert wird. Das Produkt der Schüler ist die bildliche Darstellung eines endlichen Automaten. Die Funktionstüchtigkeit und die Erfüllung der Aufgabenstellung kann sofort durch Ausführung des Programms erprobt werden. Durch den spielerischen handlungsorientierten Ansatz können die Schüler sich selbständig den Unterrichtsstoff erarbeiten. Die Staffelung der Aufgaben im Schwierigkeitsgrad ermöglicht ein leistungsdifferenzierendes Arbeiten der Schüler und führt zu einer besseren Verinnerlichung des Gelernten an immer komplexeren Modellen und Lösungswegen.
Vorstellung meiner gewählten Programmierumgebung "Kara" Kara ist ein Marienkäfer, der in einer einfachen graphischen Welt auf dem Bildschirm lebt. Er kann programmiert werden, um in seiner Welt Aufgaben zu erledigen. Wenn die Programme laufen, ist dieses sofort erkennbar. Kara lebt in einer rechteckigen Welt, die aus einzelnen Feldern besteht. Er kann sich nur von Feld zu Feld bewegen. Auf den Feldern in dieser Welt gibt es
Damit Kara programmiert werden kann, verfügt er über Sensoren. Diese erlauben es ihm, seine unmittelbare Umgebung wahrzunehmen:
Das ist alles, was Kara über die Welt weiß! Er weiß nicht, auf welchem Feld er steht oder in welche Himmelsrichtung er schaut. Natürlich könnte man Kara zwei Sensoren für seine Richtung spendieren. Aber die vorhandenen fünf Sensoren sollten ausreichen, um viele interessante und anspruchsvolle Aufgaben zu lösen! Kara kennt nur wenige Befehle:
Kara und Automaten – Kara’s Programmierung Kara wird programmiert, indem ein Automat erstellt wird. Als Beispiel wird ein einfaches Programm geschrieben, das Kara bis zum nächsten Baumstumpf führt und dort um 180° dreht. Die Abbildung zeigt eine mögliche Situation. Die erste Frage beim Entwurf eines Automaten ist immer, welche Zustände brauche ich? Hier lautet die Antwort: einen Zustand "suche Baum" und einen Zustand "STOP". Im Zustand "suche Baum" soll Kara solange verweilen, bis er einen Baum gefunden hat. Dann soll er in den Zustand "STOP" gehen. Dieser Zustand existiert in jedem Automaten, der für Kara erstellt wird! Aus ihm gibt es keine Übergänge. Wenn er erreicht ist, hört Kara mit der Programmausführung auf. Für den Zustand "suche Baum" stellt sich die Frage, welche Sensoren braucht Kara in diesem Zustand? Der Einfachheit halber kann der Benutzer bei Kara auswählen, welche Sensoren in welchem Zustand relevant sind. Alle anderen werden einfach ignoriert. Für "suche Baum" braucht es nur den Sensor "tree in front?" Nach der Auswahl der Sensoren für den Zustand "suche Baum" kommen die Übergänge an die Reihe. Mit den Sensoren erkundet Kara seine Umwelt. Sie sind gleichermassen die Fragen, die er an seine Umgebung stellt: "Stehe ich vor einem Baum?" Je nachdem, wie die Antwort auf diese Frage ausfällt, muss Kara sich anders verhalten. "Verhalten" heisst, vorgegebene Befehle ausführen und in einen Zustand übergehen. In unserem Beispiel: Wenn Kara noch nicht vor einem Baum steht, kann er einen Schritt nach vorne tun und im Zustand "suche Baum" verharren. Steht er aber vor einem Baum, vollzieht er die 180° Drehung und geht in den Zustand "STOP" über. Damit ist die Aufgabe erfüllt und das Programm beendet. Die Abbildung zeigt, wie das Programm in Kara’s Entwicklungsumgebung aussieht. Die Tabelle muss zeilenweise gelesen werden. Die oberste Zeile ist nur Beschriftung. Ganz links in ihr sind die Sensoren abgebildet, die für diesen Zustand ausgewählt wurden. Diese Sensoren sind die "Fragen". Die erste Spalte gibt in der restlichen Tabelle an, für welche Sensorwerte der Rest der Zeile ausgeführt wird. Anders gesagt, bei welchen "Antworten" der Übergang gewählt wird. Der Übergang ist in der zweiten und dritten Spalte beschrieben. Er gibt die Befehle an, die Kara auszuführen hat, und den Zustand, in den Kara nach der Ausführung der Befehle übergehen soll. Jeder Zustand ist eine Reihe von "wenn-dann"-Anweisungen an Kara. Die Tabelle ist zu lesen als:
Das ist das ganze Programm! Es ist unabhängig davon, wo und mit welcher Himmelsrichtung Kara gestartet wird. Kara ist es egal, ob er horizontal oder vertikal läuft. Allerdings terminiert das Programm natürlich nur dann, wenn Kara zu Beginn geradeaus auf Bäume sieht! Hätten wir einen Logikfehler im Programm wie zum Beispiel zweimal die Antwort "yes", dann würde Kara während der Programmausführung darauf hinweisen. Er bleibt stehen, wo er gerade ist und zeigt die entsprechende Fehlermeldung an. Im Programmierfenster sieht man den Zustand, in dem der Fehler aufgetreten ist. So hilft Kara den Schüler/innen, Logikfehler in ihren Programmen zu beseitigen. Vor und Nachteile der variablenfreien Programmierumgebung "Kara" ( aus dem Seminar "Analyse, Planung, Beurteilung von Informatikunterricht", HU-Berlin unter der Leitung von Herrn Penon, 3.6.2002) Das Programmieren mit Kara hat gegenüber anderen Programmierumgebungen gewisse Vorteile, aber auch erhebliche Nachteile. Diese Programmierumgebung ist sehr einfach und somit fast intuitiv, selbsterforschend zu erlernen und eignet sich somit als Einführung in die Programmierung in der Oberstufe. Die Schüler können sich durch bloßes ausprobieren Schritt für Schritt an die Lösung der Aufgaben herantasten. Dieses erweist sich aber als nicht ökonomisch, da die Modellierung auf einem Stück Papier vorzustrukturieren ist, bei komplexen Aufgaben viel schneller bzw. nur so im vorgegebenen Zeitrahmen zum Ziel führt. Diese Erkenntnis hat mich verblüfft und diese Erfahrung den Schülern zu vermitteln halte ich für wertvoll und reizvoll. Die Modellierung oder die Umsetzung der Lösung des Problems mit den Mitteln des Programms steht eigentlich immer im Mittelpunkt, da die Befehle die zu dessen Lösung zur Verfügung stehen sehr eingeschränkt sind und dabei häufig umgedacht werden muss. Dieses führt meines Erachtens sogar dazu, dass Schüler mit Programmiererfahrungen in Pascal oder anderen höheren Sprachen den Anfängern gleich gestellt sind. Dieses liegt daran, weil eigentlich die Umsetzung der Logik im Vordergrund steht und nicht die Umsetzung des Problems in eine maschinenverständliche Form. Als Kontrollstrukturen gibt es nur die Fallunterscheidungen, die durch geschickte Verknüpfung zu Schleifen umgesetzt werden. Beim Umstieg auf eine höhere Programmiersprache kann immer wieder auf Kara zurückgegriffen und es kann überlegt werden, wie dieses in Kara umgesetzt wurde. Die Notation von Kara hat eine von Grund auf verschiedene Notation von allen mir bekannten Programmiersprachen, da Zustandsgrafiken in einen Algorithmus umgesetzt werden. Diese führt zwangsläufig zu einem Umdenken. Dieses führt zu einem Zeitnachteil, den man sich vom Stundenplan her leisten können muss! Ein Vorteil ist, dass die Schüler bereits innerhalb relativ kurzer Zeit eine eigenständige Programmierumgebung kennengelernt haben und der Lehrer immer wieder auf Kara zurückgreifen kann, um dieses da zu erklären. (z. B Unterschied einer Fallunterscheidung (IF-Anweisung ) von einer vorprüfenden (WHILE-Schleife). Dabei muss man aber auch sehen, dass gewisse Probleme sich durch Kara nicht modellieren lassen. Hierzu sei die Nachprüfende Schleife erwähnt. Die Programmierumgebung "Kara" hat ihre Einschränkungen, denen sich Schüler und Lehrer bewusst sein müssen, aber die sich auch leicht durchschauen lassen. Es lassen sich zum Beispiel auch keine Befehlsfolgen zu einer Funktionseinheit zusammenfassen (PROCEDURE). Die Aufgaben die man mit Kara lösen kann, sind somit sehr eingeschränkt lösbar und komplexere Aufgabe lassen sich nur unter nicht zu vertretendem Aufwand bzw. nicht umsetzen. Man könnte Kara somit eine gewisse Realitätsfremdheit vorwerfen. Aber da muss man sich auf die Möglichkeiten besinnen und sich bewusst sein, dass Kara anfängertauglich ist und "man hoffentlich" damit in der Oberstufe einen guten Unterrichtseinstieg bilden kann. Im Folgenden sind diese und weitere Vor- und Nachteile tabellarisch dargestellt.
Einordnung der Stunden in den Berliner Rahmenplan für Unterricht Für meinen Unterrichtseinstiegsentwurf habe ich mich an dem o. g. Rahmenplan des ersten Unterrichtsjahrs mit dem Thema: Einführung in die Informatik (I und II) orientiert. Die Doppelstunden 1 bis 7, 9 bis 12 und 15 bis 17 orientieren sich an der Vorgabe von : "1.2. Konstruktion von Teilalgorithmen zu Anwendungsfällen". In den Doppelstunden 8 und 13 werden jeweils fertige Programme vorgegeben, die durch die Schüler modifiziert werden. Dieses entspricht der Vorgabe des Lehrplans unter "1.1 Benutzung und Analyse eines dokumentierten Systems".
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
27. Juli 2006 Mark Ausborn |