MUPIS - Modellieren und Programmieren in der Schule
MUPIS - Modellieren und Programmieren in der Schule
Kein OOP am Anfang!
Bei Java muss man am Anfang viele Paradigmen gleichzeitig lernen
... und kämpft mit Klammern aller Art
Modellieren statt Codieren
Erfahrungen zeigen, dass Lernende beim Einsatz von Sprachen wie Pascal, Delphi oder Java mehr Zeit mit dem Codieren verbringen als mit dem Modellieren der Problemstellung:
Systematische Konstruktion von Funktionen
(Konstruktionsanleitung)
Eingaben: Seite a = Zahl, Seite b = zahl
Ausgabe: zahl
(define (umfang a b)
...)
(define (umfang a b)
..a.. ..b..)
(define (umfang a b)
(* 2 (+ a b)))
Programmier-Techniken (oder -Paradigmen)
Die Einteilung der Programmiertechniken, also der Denkstile oder der fundamentalen Denkmuster beim Programmieren sowie deren Bezeichnungen sind bekanntlich nicht einheitlich.
Für die allgemeinbildende Schule sind i.A. funktionale Modellierung, imperative Modellierung und objektorientierte Modellierung (00P) angemessen und üblich.
Nach Möglichkeit sollten die Schüler diese drei Techniken kennen und verstehen lernen, mindestens jedoch die ersten beiden.
–> multiparadigmatische Ausbildung
Von großer Bedeutung ist dabei die Reihenfolge: Für Anfänger ist objektorientierte Programmierung (OOP) völlig ungeeignet, wie man Java-Beispiel (links) sieht:
Bei der Deklaration einer Klasse muss gleichzeitig der Umgang mit
• Funktionen (mit Funktionswert): getLength
• Prozeduren (ohne Funktionswert): setLength
• Zuweisungen: this.length = len
erlernt werden. Damit sind Anfänger erfahrungsgemäß überfordert.
Ein Einstieg mit 2., also der imperativen Programmierung ist auch nicht zu empfehlen, da z.B. durch Zuweisungen, einem typischen Merkmal dieser Programmtechnik Seiteneffekte entstehen, die für einen Anfänger i.A. schwer zu erkennen sind.
Daher liegt die Reihenfolge
1. funktionale Modellierung
2. imperative Modellierung
3. objektorientierte Modellierung
auf der Hand.
Natürlich gehört in allen drei Fällen eine vorbereitende, sorgfältige Daten-Modellierung (nicht zu verwechseln mit Datenbankmodellierung!) dazu.
Programmieren lernen ≠ Programmiersprache lernen
Jeder, der seine Programmierkenntnisse beruflich nutzen will, wird – wenn nicht schon in der Ausbildung – weitere Programmiersprachen lernen müssen. Deshalb müssen allgemeine übertragbare Konzepte eingeübt werden, insbesondere die der Abstraktion, im Sinne der Verallgemeinerung von Details, also effektive Abstraktionstechniken wie
• prozedurale Abstraktion
• Datenabstraktion
• Funktionen höherer Ordnung (High-Order)
• Modularisierung
• usw.
–> Abstraktion, Abstraktion, Abstraktion
oder
Programmieren lernen <–> Denken lernen
Modellieren statt Codieren
Die Unterrichtszeit beim Programmieren darf nicht überwiegend mit dem Codieren von Programmieren verschwendet weren (vgl. Tabelle links), vielmehr ist sie der Problemanalyse und dem Modellieren zu widmen.
Daraus resultieren folgende Anforderungen:
–> einfache, aber mächtige Syntax
–> ausdrucksvolle Semantik
–> anfängergerechte Entwicklungsumgebung
Einstieg und Schwerpunkt:
Funktionale Modellierung & Programmierung
Im Mittelpunkt steht die systematische Konstruktion von Funktionen.
Die Lernenden müssen sich bei jeder Funktionsdefinition streng an die „Konstruktionsanleitung” halten.
Didaktisches Gesamtkonzept
Die oben beschriebenen Aspekte sind Teile der didaktischen Konzepte
How to Design Programs (HtDP) und Die Macht der Abstraktion (DMdA)
Didaktisches Konzept