Peter Micheuz
Gymnasium Völkermarkt / Universität Klagenfurt
Österreich
Zwischen Entweder und Oder führt noch manches Sträßlein.
Joseph Victor Scheffel, 19. Jhdt.
Lautet die Antwort auf diese Frage ja oder nein?
In diesem Beitrag geht es hauptsächlich um Fragen. Fragen, die vor allem die wissensbasierte Schulinformatik
betreffen. (Schul)Informatisches Faktenwissen ist unabdingbare Grundlage für Informatik-Kompetenz. Und
Wissen kann auch überprüft werden. Man weiß etwas oder nicht.
Neben den vielen Facetten von Unterricht kann jener Teil der Unterrichtstätigkeit, der sich mit der Sicherung des
Unterrichtsertrages beschäftigt, nicht wegdiskutiert werden. Der Informatikunterricht ist dabei nicht
ausgenommen.
Ob der Zeitgeist gut oder schlecht ist, ist eine philosophische Frage. Ihm entsprechen gegenwärtig Wissenstests
in "Millionenshows" oder in Sendeformaten wie "Wer wird Millionär?". Nach ähnlichem Muster funktionieren zweifellos mit weniger Unterhaltungswert und abseits des medialen Mainstreams - viele computergestützte
Wissenstest und Online-Prüfungen zum Erwerb verschiedener produkt- und firmenspezifischer Zertifikate von
hier nicht näher genannten global agierenden IT-Firmen. Auch im Bereich von Wettbewerben und in der
vergleichenden Schulforschung, bei der Schulen und Schüler (auch Lehrer?) auf Standards getestet werden,
spielen Prüfungs- und Assessmentsysteme in Form von CATs (computer aided tests) eine bedeutende Rolle. In
vielen webbasierten E-Learning-Systemen tauchen sogenannte "class builders" bevorzugt im anglikanischen
Raum auf.
Es zahlt sich aus, "mit den Wölfen zu heulen", sich mit diesem Thema auseinanderzusetzen und für den
Informatikunterricht nutzbar machen.
Fraglos ist der Einsatz von computerunterstützten Prüfungssystemen für jeden Wissensbereich möglich und auch
wünschenswert, unabhängig davon, ob diese Systeme angekauft oder "selbst gestrickt" sind.
Aber welche informatikbezogenen fachspezifischen Lernziele können mit dem Thema "Fragen stellen" im
Informatikunterricht verfolgt werden? Einige ausgewählte Aspekte dieser schulpraktisch relevanten Thematik
sind:
• Suchen und Erkunden von bestehenden Quizzes im Internet
• Fragen zu informatischen Themen (er)finden, Fragepools erarbeiten
• Bestehende Quizsysteme analysieren, kategorisieren, adaptieren und modellieren
• Webbasierte Online Quizsysteme in einer geeigneten Client-Server Umgebung realisieren
• Erweiterungsmöglichkeiten
• Bewerten und Reflektieren über Vor- und Nachteile
In diesem Artikel soll zunächst kurz die Frage nach der Grenze zwischen informationstechnologischer
Grundbildung und einschlägigem Informatik-Fachwissen angerissen werden. Eine nähere Erörterung würde aber
den Rahmen dieses Beitrages sprengen. Auch wird hier kein Fragenkatalog veröffentlicht, dessen x %-ige –
richtige Beantwortung eine Person als informationstechnologisch und /oder informatisch gebildet ausweist.
Der Hauptaugenmerk liegt auf der Automatisierung von abprüfbarem Wissen und wie diese mit den Werkzeugen
der Informatik realisiert werden können. Größtmögliche didaktische Reduktion soll garantieren, dass die
Beispiele nachvollzogen werden können.
Bildung ist wunderbar. Doch sollte man sich von Zeit zu Zeit erinnern,
daß wirklich Wissenswertes nicht gelehrt werden kann.
Oscar Wild
Einleitende Gedanken und offene Fragen
Welchen Sinn macht es, informatische Grundlagen- und/oder Spezialfragen zu stellen? Wer definiert den
Standard informationstechnologischer Grundbildung? Welcher (Aus)Bildungswert ist damit verbunden? Wie
bedeutend und gesellschaftlich anerkannt ist es überhaupt, einfache informatische Fragen beantworten zu können
und damit zu dokumentieren, was man weiß bzw. wie (ein)gebildet man ist?
Lies nach bei Schwanitz und man wird nicht einmal ignoriert. So amüsant und lehrreich sein lesenswertes Buch
"Bildung" auch ist, aber das digitale Zeitalter hat bei ihm noch keine Spuren hinterlassen.
Ich meine, es wäre an der Zeit, dieses Werk mit dem Untertitel "Alles, was man wissen muß" doch aus einer
gewissen Schieflage herauszubringen, indem der naturwissenschaftliche und informationstechnologische Teil
zumindest in seinem Kapitel "Was man nicht wissen sollte" angesprochen wird. Sei es wie es sei, wir warten auf
Schwanitz II. Was in diesem Band wohl empfohlen würde? Zu wissen, was ist ein Bit ist? Mit dem Begriff
"digital" was anfangen zu können? Wie man das Internet in einem Satz beschreiben könnte? Oder den Erfinder
des WWW zu kennen?
Vertieftes informatisches Wissen verschiedenster Bereiche, wie z.B. Datenbanken, ist Spezialistenwissen bzw.
Fachwissen, das im Informatikunterricht vermittelt wird.
Wer definiert, was der Schüler wissen sollte und wie wird das überprüft? Wäre es sinnvoll, standardisierte
Fragenkataloge zu entwickeln?
Welche Fragen sollen von Schülern in welchen Alterstufen beantwortet werden können? Wie kann garantiert
werden, dass das Wissen nachhaltig ist und nicht nur punktuell zur Zeit der Prüfung abrufbar ist?
Wie kann durch unterschiedliche Fragestellungen über ein identes Fachgebiet gewährleistet werden, dass ein
Wissentransfer und nicht ein Auswendiglernen stattgefunden hat (Verständnisfragen)?
Auf jeden Fall ist das ein spannendes Thema sowohl für den Lehrer als auch für den Lernenden, nicht nur in
Informatik.
Recherchieren im Internet – Woher nehmen und nicht stehlen?
Der Lehrer könnte am Anfang einer Unterrichtsreihe zu diesem Thema den Schülern die Aufgabe geben, im
Internet nach bestehenden Quizzes bzw. Tests aus dem Bereich der Informatik zu suchen. Es sollte nicht allzu
lange dauern und die Schüler finden einige Beispiele unterschiedlichen Designs und nicht immer gleicher
Funktionalität.
Die Zielrichtung sollte nun sein , die Schüler neugierig darauf zu machen, was dahintersteckt.
Das Internet ist ein schnell wachsendes, riesiges dokumentenbasiertes verteiltes System mit einer schon lange
nicht mehr zu überblickenden Datenflut. In vielen Fällen erhält man auch gute Antworten auf gezielte
Fragestellungen. Fragen bzw. Suchanfragen an das Internet zu stellen ist eine Seite der Medaille.
Fragen aus dem Internet gestellt zu bekommen, ist ein anderer interessanter Aspekt.
Es ist nicht schwer, diesbezügliche Quellen ausfindig zu machen. Man findet in zunehmendem Maß auch in
öffentlich zugänglichen Bereichen schon recht gut durchdachte Quizzes aus dem Informatikbereich.
Konkrete Fragen
Wie finden sie diese Fragen sowie die Art der Fragestellung?
JA
HTML ist eine Programmiersprache.
JAVASCRIPT ist objektorientiert.
Nur Bilddateien vom Typ jpg- und gif-Dateien werden von den
Internetbrowsern. angezeigt
Die Farbzahl #00FF00 repräsentiert die Farbe grün.
Jede Datei ist ein Dokument
RAM ist ein Teil der CPU
Funktionen spielen in der Objektorientierten Programmierung
keine Rolle.
Ist folgender Pseudocode richtig, wenn man
3 verschiedene Zufallszahlen erzeugen will?
wiederhole
a = zufall(..); b=zufall(...); c=zufall(...)
bis (a<>b) und (b<>c)
Folgender Pseudecode gibt die Zahlen von 1 bis 10 in
aufsteigender Reihenfolge aus:
Funktion zaehle(int n) {
if n > 0 then zaehle(n-1)
schreibe(n)
}
Aufruf: zaehle(10)
SQL ist ausschließlich eine Abfragesprache
Select count(*) from <tabelle> gibt die Anzahl der Datensätze
der Tabelle aus.
NEIN
x
x
x
x
x
x
x
x
X
x
X
Sind die Fragen einfach oder schwer? Gibt es wenigstens eine allgemeinbildende Frage darunter?
Sind alle Fragen zeitlos?
Selbst Fragen, die auf den ersten Blick so einfach und plausibel erscheinen und quasi reflexartig beantwortet
werden können, lassen dann bei näherer Betrachtung je nach Wissensstand des Prüflings Zweifel aufkommen.
Verunsicherung macht sich breit, ob die Frage überhaupt in diesem Schwarz-Weiß-Muster beantwortbar ist. Oft
ist der Gestresste gar nicht mehr sicher, ob der Fragesteller sich überhaupt sicher war ...
Unweigerlich stellt sich bei diesem Testdesign die Frage nach der Ratewahrscheinlichkeit. Es ist unschwer zu
erkennen, dass bei einem zufälligen Ankreuzen der Erwartungswert bei 5 richtigen von insgesamt 10 Fragen
liegt. Alle Fragen richtig zu erraten, kommt mit einer Wahrscheinlichkeit von 1 : 1024 vor. Bei doppelt so vielen
Fragen sinkt diese Ratewahrscheinlichkeit nur mehr auf 1: 2^20 ~ 1: 1 Million. Durch ein ausgeklügeltes
Bewertungsschma (z.B. höherer Abzug bei falsch beantworteten Fragen) wird ein taktisches Vorgehen
unerlässlich, die Hinterfragung der eigenen Wissensbasis auf eine harte Probe gestellt.
Eine sehr lohnende Aufgabe ist, Schüler zu verschiedenen informatischen Bereichen Fragen suchen und
(er)finden zu lassen. Das ist alles andere als trivial, sondern in hohem Maße ein kreativer und kognitiv
anspruchsvoller Prozess. Um gute Fragen stellen zu können, die auch eindeutig zu beantworten sind, ist absolut
gesichertes (Fakten)Wissen notwendig. Die Zuordnung, ob eine Frage als schwierig zu bezeichnen ist oder nicht,
fällt nicht immer leicht.
Die konkrete Aufgabe
Im Folgenden kommen wir zum Kernpunkt dieses Beitrages, nämlich der Aufgabe, ein einfaches Ja-Nein-Quiz
zum Thema des Informatikunterrichts zu realisieren. Die knappe, aber ausreichende Spezifikation dieser
vergleichsweisen einfachen Aufgabe könnte so aussehen.
Dem Benutzer sollen auf dem Bildschirm mehrere (informatische) Feststellungen präsentiert werden, die
wahr oder falsch sein können. Der Computer soll nach der Interaktion (binäre Entscheidung ja – nein)
die Auswertung sowie auf Wunsch die (hoffentlich) richtigen Antworten liefern.
Aus zweierlei Gründen habe ich dieses "binäre" Frage-Antwort-Muster gewählt.
Erstens ist es am einfachsten zu verstehen und zu implementieren und zweitens spiegelt es das digitale
Paradigma in der Informatik sehr schön wider. Die computerunterstütze Überprüfung eines (informatischen)
Wissensgebietes in dieser Form zu versuchen, kann als Herausforderung angesehen werden.
Vergleichsweise einfach?
Welches Vorwissen und Können der Schüler ist notwendig, um so ein Fragesystem im Computer abzubilden und
computerunterstützt ablaufen zu lassen? In welcher Altersstufe kann diese Aufgabe gestellt werden?
Die fachdidaktische Unsicherheit besteht darin, zu entscheiden, ob hier ein konstruktivistischer Ansatz verfolgt
werden soll, für den eine systematische Einführung in eine Programmiersprache Voraussetzung ist oder einem
dekonstruktivistischen Ansatz der Vorzug zu geben ist.
Ein Gedankenexperiment möge die Entscheidung zumindest im Hinblick auf die ausgewählte
Entwicklungsumgebung erleichtern:
Diese vorliegende Aufgabe vor 20 Jahren gestellt, wo die Schulinformatik/EDV gerade von ihren Geburtswehen
befreit wurde und dem Bildschirm ohne Programmierkenntnisse nicht mehr als ein OK der Programmiersprache
Basic zu entlocken war, hätte wohl nur einen Weg offen gelassen. Nämlich die Erstellung eines textbasierten
Basic-Programmes, das von einer graphischen, ereignisgesteuerten und einer gar webbasierten Anwendung
informatisch gesehen noch Lichtjahre entfernt gewesen wäre.
Bereits heute gibt es unzählige Möglichkeiten der Lösung dieser Aufgabe. Die Palette der in Frage kommenden
Entwicklungswerkzeuge reicht unter anderen von den klassischen höheren Programmiersprachen wie Basic,
Pascal, C über die Realisierung innerhalb der automatisierbaren Standardsoftware (z.B. Visual Basic for
Applications mit Excel oder Access), über C++, Java oder neuerdings über Microsoft´s C# oder Makromedia´s
Flash.
In diesem Artikel fällt die Entscheidung auf keine der obigen Entwicklungsumgebungen. Ich empfehle wegen
der Omnipräsenz des Internet eine dynamische HTML Lösung.
Ein erster möglicher Zugang - oder: Den Scriptkids auf den Fersen
Der nach den Begriffen "online quiz" Suchende wird im Internet schnell zu einem Findenden. Im Gegensatz zu
einem Lehrbuch, das in der Regel nur eine "seligmachende" Lösung beschreibt, findet der Schüler im Internet
viele webbasierte Realisierungen dieses Problems, die bereits in Design und Funktionalität eine hohe Vielfalt
aufweisen. Von der Programmlogik und der Technik der Datenhaltung (noch) ganz zu schweigen.
Spätestens hier schlägt die Stunde des systemorientierten didaktischen Ansatzes der Dekomposition bzw. der
Dekonstruktion dieses "einfachen" Mikro-Informatiksystems. Einfach ist deshalb unter Anführungszeichen
gesetzt, da das Verstehen webbasierter Systeme für unbedarfte Lernende abstrakt ist und erst anschaulich
vermittelt werden muss, wie zum Beispiel die Funktion und Arbeitsweise eines Browsers und wie er mit HTMLDateien umgeht.
Der Informatiklehrer sollte ein auf ein Minimum reduziertes didaktisches Modell eines Quizzes zur Hand haben
und den Schülern zur Verfügung stellen, um die Sicht auf das Wesentliche zu fokussieren . Je nach Vorwissen
der Schüler mutet der weiter unten angeführte Quellcode mehr oder weniger kryptisch an.
Unser didaktisch reduziertes Modell ist ein HTML-File mit einem funktionellen Javascript-Teil, das über
Formulartags mit entsprechenden Fomularobjekten die Interaktion mit dem Benutzer erlaubt. Können wir in
diesem Fall - klingt ja ganz gut - von einem MVC-Modell sprechen?
Beim MVC-Paradigma (Model-View-Controller) werden die Benutzereingabe, die
Abbildung der Außenwelt und die visuelle Ausgabe an den Benutzer explizit
getrennt und separat von drei unterschiedlichen Komponenten behandelt. Dabei ist
jeder Teil auf seine Aufgabe spezialisiert.
Die "Model"-Komponente ist für das Verhalten und die Daten der Anwendung
verantwortlich. Diese Komponente gibt Auskunft über den Zustand von Daten und
reagiert entsprechend auf Änderungsanweisungen. Die Komponente "View" ist für
die graphische und/oder textuelle Ausgabe zuständig. Sie entscheidet, in welchem
Format die Ausgabe an den Benutzer erfolgt, z.B. eben HTML.
Der "Controller" interpretiert die Maus- und Tastatur-Eingaben des Benutzers und befehligt die "Model"- bzw.
die "View"-Komponente entsprechend der Eingabe. Er ist für den gesamten Ablauf der Anwendung zuständig.
Einfach ausgedrückt, ist das MVC-Modell die logische Erweiterung des bereits altbackenden Begriffes EVA
Eingabe – Verarbeitung – Ausgabe, in graphisch.
Öffnet der Benutzer die Datei "quiz-reduziert.htm" (siehe Listing weiter unten), die auf seinem Computer
vorliegt oder abgetippt wird , mit einem beliebigen Internet-Browser, so begegnet er folgender vertrauter QuizOberfläche.
Diese Benutzersicht (VIEW-Komponente des MVC-Modells) bietet genügend Komfort und Funktionalität, um
den Ansprüchen eines Online-Quizzes gerecht zu werden.
Es ist ein "simples" HTML (Hypertext Markup Language) – Dokument. Im Formularteil (Zeilen 27 –52) ist die
Ereignissteuerung realisiert (CONTROLLER-Komponente). Die MODEL-Komponente verteilt sich sowohl auf
das Formular als auch auf den Javacript-Abschnitt (Zeilen 06-21).
Der durch das W3-Konsortium für dynamisches HTML abgesegnete Standard gewährleistet, dass das
Zusammenspiel von HTML (Formular und Formularobjekte), Ereignissteuerung und Javascript (Funktionen,
Methoden) sehr gut funktioniert.
Mit Javascript werden sicher keine großen Informatiksysteme entwickelt, das war von Netscape auch nicht
beabsichtigt. Für das "Programmieren im Kleinen" ist Javascript durchaus ein schulinformatisches Thema.
Es eignet sich als objektbasierte, kompakte und vielseitige Skriptsprache mit einer begrenzten Zahl von Objekten
mit überschaubaren Eigenschaften und Methoden.
Listing "quiz-reduziert.htm" - eine kompakte Sache
00
01
02
03
04
05
06
07
<html>
<head>
<style type="text/css">
td {font-family:Verdana;font-size:10pt;text-align:left;}
td.du {font-family:Verdana;font-size:10pt; background-color:#DDDDFF;}
</style>
<script language="javascript">
var frage1=0, frage2=0;
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
var score=0;
function auswerten() {
score = parseInt(frage1)+parseInt(frage2);
alert(score + ' Fragen richtig beantwortet!')
}
function zuruecksetzen() {
frage1=0; frage2=0;
var score = 0;
}
function loesunganzeigen() {
window.document.fragebogen.r1[1].checked = 'true';
window.document.fragebogen.r2[0].checked = 'true';
}
</script>
</head>
<body><font face=Verdana size=4>
<center>BINÄRES INFORMATIK QUIZ [JA/NEIN]</center></font>
<form name="fragebogen">
<table align="center" width="400" bgcolor=#DDFFDD>
<tr><td class='du'>HTML ist eine Programmiersprache.</td>
<td class='du'><input type=radio name="r1" value="0"
onclick="frage1=this.value">ja</td>
<td class='du'><input type=radio name="r1" value="1"
onclick="frage1=this.value">nein </td></tr>
<tr><td>JAVASCRIPT ist objektorientiert.</td>
<td><input type=radio name="r2" value="1"
onclick="frage2=this.value">ja</td>
<td><input type=radio name="r2" value="0"
onclick="frage2=this.value">nein </td></tr>
</table>
<br>
<table align=center width="400" >
<tr>
<td><input type=button name=calcquiz value="Auswertung"
onClick="auswerten()"></td>
<td><input type=reset value="Zurücksetzen"
onClick="zuruecksetzen()"></td>
<td><input type=button name=loesung value="Lösung anzeigen"
onClick="loesunganzeigen()"></td>
</tr>
</table>
</form>
</font></body></html>
Im Listing verbirgt sich eine vorerst nicht zu vermutende Dichte an fundamentalen Inhalten, wenn nicht
Konzepten der Informatik! Wenn früher vom Vorwissen der Schüler die Rede war, so ist spätestens jetzt klar,
was gemeint ist. Es wäre nicht klug bzw. nicht zielführend , dieses Listing den Schülern ohne grundlegende
HTML- und Programmierkenntnisse vorzusetzen.
Wenn dieses Basiswissen vorhanden ist, gilt es, das Programm zu "lesen", die Funktion der Tags und deren
Parameter mit der Benutzersicht (Anzeige auf dem Bildschirm) zu vergleichen, die Ereignissteuerung zu
beobachten und nachzusehen, welche Aktionen durch sie ausgelöst werden.
Sehen wir uns diesen Sourcecode näher an:
Da wäre zum Beispiel das Containerobjekt Formular mit den in Javascript vordefinierten prototypischen
Objekten (oder sind es doch Klassen?), die im obigen Beispiel auf das RADIO-Objekt (Zeilen 30, 26) und den
SUBMIT- sowie RESET-Button (Zeilen 44,46,48) eingeschränkt sind (es gibt noch weitere). Diese Objekte
reagieren auf die vom Benutzer ausgelösten Ereignisse durch die Tastatur (Return, Tabulatortaste, Pfeiltasten)
oder den Mausklick, indem das Objekt durch den Parameter ONCLICK="Funktionsaufruf" die entsprechende
(benutzerdefinierte) Aktion (Prozedur, Ereignisbehandlungsroutine, Methode) auslöst (Zeilen 9-19).
In den Zeilen 2-5 ist das wichtige Konzept der CSS (cascading style sheets) angedeutet und teilweise realisiert.
(Format)Vorlagen spielen ja nicht nur im Zusammenhang mit HTML (Templates) eine große Bedeutung, wenn
es um designtechnische Fragestellungen geht, sondern z.B. auch im Bereich der Gestaltung umfangreicher
Textdokumente. Ein konsistentes Design von Websites, ich spreche nicht von wenigen HTML-Seiten, ist ohne
CSS nur sehr umständlich möglich.
Das Modularkonzept ist in diesem kompakten Listing durch die klare Gliederung in CSS-Definitionen, Script und Formularteil augenscheinlich. Wie gesagt, das Listing sollte einigermaßen verständlich für die Lernenden
mit HTML- und Programmierkenntnissen. Der Teufel steckt aber oft im Detail.
Ein gewisser Erklärungsbedarf ist sicher für die Zeile 18: window.document.fragebogen.r1[1].checked =
'true'; gegeben. Hier manifestiert sich einerseits die objektbasierte Schreibweise (Punktnotation) von
Javascript, andererseits kommt die Objekthierarchie schön zum Ausdruck, wobei OOP-Puristen sicherlich stört,
dass es in Javascript keine Klassen im "klassischen" Sinn gibt. So entsteht das Formularobjekt "fragebogen" in
Zeile schlicht in der Zeile 27: <form name="fragebogen">.
Das Unterobjekt "r1" erblickt in Zeile 30 das Licht der digitalen Welt:
<input type=radio name="r1" value="1" onclick.......>
Interessant an diesem Objekt ist die (Array)Struktur, eine Besonderheit des Radio-Buttons, wenn es um die
innere Differenzierung innerhalb einer "Radiobuttongruppe" geht.
In der Anweisung window.document.fragebogen.r1[1].checked = 'true'; wird die Eigenschaft "checked"
auf "wahr" gesetzt, der Radiobutton für den Benutzer als aktiv markiert.
Diesen Radiobuttons werden im Formularteil Werten zugeordnet. Das geschieht durch die Wertzuweisungen der
Variablen value=0 bzw. value=1. In objektorientierter Sprechweise: Die Eigenschaft "value" des Objekts "r1"
wird auf 0 bzw. 1 gesetzt, je nachdem ob die Feststellung mit ja oder nein zu beantworten ist.
Bei der Auswertung des Quizzes werden die entsprechenden Werte der Radiobutton-Objekte frage1 und frage2
(0 oder 1) zusammengezählt.
Was passiert in Zeile 32? ....... onclick="frage1=this.value">ja</td>
Hier bekommt die im Skriptbereich definierte Variable frage1 den Wert (value-Eigenschaft) des Buttons
zugewiesen.
Damit sollte der funktionale, dynamische Teil der HTML-Datei transparent gemacht worden sein. Aber wo sind
die Daten?
Ein Quiz ohne Fragen und richtig hinterlegten Antworten macht doch keinen Sinn! Wenn man genau hinschaut,
erblickt man in den Zeilen 29 und 35 die zwei Feststellungen, die abgeprüft werden.
Die implizite Bewertung der Antworten für Frage1 steht in den Zeilen 30,33 und für Frage2 in den Zeilen
36,38. Hier könnte die Auswertung dahingehend abgeändert werden, dass man die Fragen entsprechend dem
Schwierigkeitsgrad gewichten könnte! In unserem Beispiel bekommt der Kandidat pro richtiger Rückmeldung
einen Punkt, im anderen Fall keinen! Das bedeutet, die Summenbildung liefert die Anzahl der richtig
beantworteten Fragen.
Adaption als ein didaktisches Prinzip oder:
Was hat es mit den Scriptkids auf sich?
Ein Skriptkid ist eine (junge?) Person, die kein fundiertes informatisches Wissen hat und hauptsächlich bereits
existierende Skripts verwendet und adaptiert. Unzählige kostenlose Scripts stehen im zur freien Verfügung, das
Internet ist bereits jetzt ein extrem schnell wachsender Marktplatz und Selbstbedienungsladen von freien Sources
unterschiedlicher Qualität. Meistens geht die Verwendung von Code ohne Quellenangabe einher. Oft ist dieser
schon über mehrere Benutzer gelaufen. Wenn man dies positiv sieht, könnte man darin Ansätze von CodeReview und Software-Reuse anführen. Themen, die sonst in der Schulinformatik keine Rolle spielen.
Mit dem Internet und Open Source ist es relativ leicht, zu Code zu kommen und weiterzuverarbeiten.
Im Informatikunterricht ist es ein taugliches, legitimes und probates Mittel, von existierenden guten Beispielen
zu lernen! Prinzipiell spricht nichts dagegen, fertige Lösungen zu verwenden, sofern man dazu steht, dass man
das Wissen anderer verwendet und es nicht als sein eigenes ausgibt. Der didaktische Ansatz des Kopierens und
Lernen von "best practice"-Beispielen ist nichts Verwerfliches.
Es ist auch eine Leistung, Software lesen und an den geeigneten Schrauben drehen zu können, um ein Script für
seine persönlichen Bedürfnisse anzupassen. Wohl kein Programmierer der Welt kann von sich behaupten,
niemals anderen Code anzusehen und zu adaptieren. Scriptkids betreiben in gewisser Art und Weise SoftwareReuse für die kleinen Leute. Das Rad muss ja wirklich nicht immer wieder von Neuem erfunden werden. Außer
in der Lehre.
Bemerkungen zu HTML und Javascript
Die Skriptsprache Javscript, eng an die Syntax von C angelehnt, ist leistungsfähig, kompakt, noch einigermaßen
überschaubar und spielt (wie wir später auch bei PHP) sehen werden, in kongenialer Weise mit HTML
zusammen. Es gilt auch hier das 20/80 Prinzip, in vielen Fällen reichen 20% der HTML-Tags aus, um 80% der
statischen Webseiten abzudecken.
Ich möchte an dieser Stelle die Frage, ob HTML-Kenntnisse im Informatikunterricht wesentlich sind, mit einem
vorbehaltlosen Ja beantworten. Dabei geht es nicht um das fragwürdige Auswendiglernen vieler Tags und
Attribute, sondern um das Kennen(lernen) der wichtigsten ausgabe- (z.B. Tabellen) und eingabeorientierten
Tags (Formulartags mit exemplarischen Formularobjekten). Wesentlich ist, den Schülern das Konzept einer
Markup-Language näherzubringen ( Analogien zu anderen Formaten wie Postscript, PDF, XML, ... sind
durchaus erwünscht ).
Das Thema Internet über den reinen Anwendungsaspekt hinaus vertieft zu behandeln und HTML im Unterricht
n i c h t zu thematisieren, ist momentan "fahrlässig". Das Konzept von HTML ist keine Modeerscheinung oder
eine schulinformatische Eintagsfliege. Es ist eine epochale Erfindung des ausklingenden 20.Jahrhunderts. Nicht
umsonst ist Tim Berners Lee von einer renommierten Zeitschrift zu den 100 bedeutendsten Personen des letzten
Jhdts. gewählt worden.
Stricken mit oder ohne Wolle – ein Exkurs
Es sei an dieser Stelle die pointierte Feststellung erlaubt, dass ich mich manchmal des Eindrucks nicht erwehren
kann, dass in fachdidaktischen Kreisen einieg Male "ohne Wolle gestrickt" und das Kind mit dem Bade
ausgeschüttet wird. Wir brauchen in der Schulinformatik den Boden unter den Füßen.
Die Modellierung von zu komplexen, nicht schulrealitätsbezogenen Systemen, die Verkomplizierung manch
einfacher Sachverhalte, der Einsatz von Notationsformen, die die "semantische Lücke" eher vergößern, denn
schließen helfen, oder das Diktat der Objektorientierung sind Aspekte, die im schulinformatischen Kontext
einem ständigen Diskurs standhalten müssen. Wir sollten bei allen Bemühungen um die Qualität des
Informatikunterichts den Schüler nicht aus den Augen verlieren. Nicht der künftige Turing, Neumann, Djikstra
oder Bill Gates bestimmt den Leistungshorizont des Informatikunterrichts, sondern der bessere
"Durchschnittschüler", der ja noch andere Gegenstände – und zwar nicht wenige – zu bewältigen hat, und nicht
notwendigerweise Informatik studieren wird. Ich möchte hier nicht den Eindruck erwecken, nichts für
informatisch Hochbegabte übrig zu haben, - ich habe Ausnahmeschüler/innen nach bestem Wissen und Können
gefördert und einige Erfolge bei Informatik-Bewerben belegen dies –, aber das ist eine andere Geschichte.
Von Anton Bruckner stammt ein sehr weiser Spruch: "Willst du höhe Türme bauen, so musst du lange beim
Fundament verweilen".
Editor oder professionelles Entwicklungssystem?
Ein näherer Blick auf dieses lauffähige Mikro-Informatiksystem offenbart, dass die vorgebene Datenbasis
(Fragen und Antworten) eher unübersichtlich im HMTL-Tag-Wald und den Scriptteilen verborgen ist, was eine
Erweiterung und Änderung des Fragenkataloges erschwert.
Es ist Zeit, jetzt kurz über die Entwicklungswerkzeuge zu sprechen. Die Palette reicht hier von einem simplen
Editor bis zu einem professionellen Webdesign-Tool wie z.B. Macromedias Dreamweaver. Im letzteren Fall ist
die Bearbeitung des Fragenkataloges im WYSIWYG-Modus (what you see is what you get) gut möglich.
Die zu adaptierenden Skriptabschnitte müssen natürlich im Sourcecode geändert werden.
Hier taucht eine weitere methodische Frage auf: Welches Tool ist zu bevorzugen?
Der einfache stets verfügbare Editor oder ein teures Entwicklungssystem? Aus fachdidaktischer Sicht lassen sich
Argumente für beide Extreme anführen. Kostenlose bis preiswerte Alternativen, die einen Kompromiss
darstellen, gibt es in einer Überfülle. Ich habe im Unterricht die Erfahrung gemacht, dass die Schüler/innen
verschiedene, je nach Verfügbarkeit von Software verschiedene Zugänge finden und einigen Engagierten selbst
komplexe Entwicklungsoberflächen keine Schwierigkeiten bereiten.
Aus der Perspektive der Fachdidaktik ist darüber nachzudenken, ob bei den Schülern die Beherrschung einer
komplexen Oberfläche (Produktschulung) zuviele zeitliche Ressourcen verschlingt und damit die zu
vermittelnden Konzepte zu sehr verschleiert werden. In der Unterrichtspraxis kann dem Informatiklehrer die
Verantwortung nicht abgenommen werden, ein goldenes Mittelmaß zu finden.
Wie hoch ist der didaktische Nutzen dieses Musterprogrammes? War die didaktische Reduktion im Hinblick auf
das Vorwissen der Schüler ausreichend? Kann dieses Programm als Ausgangspunkt für sinnvolle Erweiterungen
dienen? Welche Transferleistungen können/dürfen von den Schüler/innen erwartet werden?
Diese Frage kann nicht pauschal beantwortet werden. Die Schülergruppen sind sehr unterschiedlich. In manchen
Klassen wird - angesichts dieses zwar interessanten, aber eher selektiven Kapitels - der Unterrichtsertrag sich
darauf beschränken, dass die Schüler wesentliche Konzepte zwar "passiv" verstehen , aber in der produktiven
Softwareentwicklung keine guten Ergebnisse erzielt werden.
Zwischen dem Wissen, wie es geht bzw. wie etwas gehen könnte und dem tatsächlichen Können, eine Software
zum "Laufen zu bringen", ist ein großer Unterschied. Genauso, wie zwischen dem Verstehen (Übersetzen)
einer Fremdsprache und dem aktiven Reden bzw. Schreiben doch ein wesentlicher Qualitätsunterschied besteht.
Es muss doch einen Grund haben, warum im Lateinunterricht nicht Latein gesprochen wird. Oder warum im
Musikunterricht nicht komponiert wird.
Im Zusammenhang mit der "passiven" Wissensüberprüfung lässt sich leicht eine interessante didaktische
Schleife konstruieren. In Anlogie zu den Aufgaben "Schreibe ein Programm, das sich selbst am Bildschirm
anzeigt" oder: "Nutze das Internet, um übers Internet zu lernen" könnte man das vorgestellte Musterlisting als
Ausgangspunkt für die Fragen über die Grundlagen dieses Frage-Antwort-Systems nehmen.
In einer Gruppenarbeit könnten Fragen zu den Konzepten und Techniken (siehe Beschreibung oben) gestellt
werden, die auch von jenen beantwortet werden können, die an einer eigenständigen Weiterentwicklung
scheitern würden, das Programm aber "einigermaßen" verstehen. Der geneigte Leser ist herzlich eingeladen, sich
dieser Herausforderung zu stellen.
Erweiterungsmöglichkeiten für die clientseitige Javascript-Lösung
Es gibt nun zwei Hauptstoßrichtungen, wie das vorliegende Modell erweitert werden kann.
Die eine zielt in Richtung Vertiefung der clientseitigen javascriptorientierten Lösung ab, wo die Frage der
Skalierbarkeit zu beantworten ist, wie man z.B. im Sourcecode einen besseren Überblick über viele Fragen bzw.
Antworten bekommt.
Variante 1: Der kundige Programmierer denkt sofort an einen kompakteren Code, Bei vielen Fragen ist der
Einsatz von Schleifen und Arrays für die Datenhaltung der Fragen und Antworten sehr anzuraten.
Variante 2: Das binäre Prinzip soll auf 3,4 ,5 oder gar 6 Antwortmöglichkeiten erweitert werden. Bei jeder
Frage soll die gleiche Anzahl von Auswahlmöglichkeiten gegeben sein.
Variante 3: Es sollen zu den Fragen auch Mehrfachantworten möglich sein.
Bemerkung: Ist die programmiertechnische Umsetzung schon nicht einfach, so ist es eine hohe Kunst, gute
Fragen und vor allem dazupassende richtige und falsche Antworten zu finden. Ein schwieriges Unterfangen.
Versuchen Sie es!
Variante 4: Änderung des Fragedesigns! Die Fragen sollen nicht alle auf einmal angezeigt werden, sondern
Frage für Frage, bis am Ende die Auswertung erfolgt. Des weiteren könnte hier eine Zeitsteuerung eingebaut
werden.
Variante 5: Bisher haben wir kein Wort darüber verloren, dass der Quellcode offen liegt und damit die Fragen
und deren richtige Antworten aus dem Quellcode herausgelesen weren können. Wie können die Informationen
versteckt werden?
Der Leser und Informatiklehrer kann aber bereits jetzt seine Programmierkenntnisse auf den Prüfstand stellen
und sich an den Erweiterungen versuchen. Es ist dabei sogar erlaubt, sich in die Rolle eines "Scriptoldies" zu
versetzen.... Es muss bewusst sein, dass eine clientseiteige Lösung nur individuelles Benutzerfeedback geben
kann, weil die Auswertung ja nicht gespeichert wird, wenn übrhaupt, in einer Cookie-Datei, die der Benutzer
aber löschen kann. Eine vergleichende Auswertung der Testergebnisse, wenn mehrere Schüler die Fragen
beantworten, ist nicht möglich.
Der Übergang zur professionellen Lösung
Die clientseitigen Javascript-Quiz-Lösungen, sind nicht der Weisheit letzter Schluss!
Es gibt bereits einige Javascript-Quiz-Generatoren, mit denen auf Template-Basis menügesteuert Tests und
Quizzes produziert werden können. Der bekannteste Vertreter ist Hot Potatoes
(http://web.uvic.ca/hrd/halfbaked). Die Kunst besteht nicht darin, den Generator zu bedienen und damit Fragen
am laufenden Band zu produzieren sondern gute Fragen zu fnden. Es finden sich vor allem im informatischen
Bereich noch nicht allzu gute Fragepools. Da ist noch Handlungsbedarf.
Die Konzeption und Erstellung von qualitativ hochwertigen Fragepools ist nicht einfach.
In einem Folgeartikel wird der meiner Meinung nach weitaus interessantere Teil folgen, nämlich ein clientserverbasiertes Quiz, bei dem Funktionalität auf den Server verlagert wird und die Datenhaltung in einer SQLDatenbank. Damit ist automatisch das "information hiding" gewährleistet, was sowohl den Quellcode als auch
die Daten betrifft. Dadurch, dass die Daten zentral auf dem Server liegen, ist das Thema Auswertung und damit
die vergleichende Klassifikation von Testleistungen einfach realisierbar.
In Prüfungen stellen Narren Fragen, die Weise nicht beantworten können.
Oscar Wilde
Von der client- zur webbasierten Lösung
Im Folgenden werden wir uns mit der aus informatischer Sicht reizvolleren, aber anspruchsvollen komplexeren
Aufgabe beschäftigen, wie so ein Ja-Nein-Quiz in einer Client-Server-Umgebung mit vorwiegend serverseitiger
Funktionalität und Datenhaltung realisiert werden kann.
Das vorliegende Quiz zeigt im Anwendungsfall (use case) in der Benutzersicht eine Anmeldeformular, das aus
einem Eingabefeld besteht, wo sich die Testperson mit mit einem (Nick)Name anmelden muss.
Nach erfolgreicher Anmeldung werden solange Einzelfragen mit zwei Antwortmöglichkeiten präsentiert, bis
eine Frage falsch beantwortet wird. Anschließend gibt es die Möglichkeit, die "Highscoreliste" anzusehen.
Wir haben es hier zwar mit einer für den Benutzer leicht zu bedienenden Oberfläche zu tun, aber der Hintergrund
(in der MVC-Sprache: Model und Controller) ist in Bezug auf Komplexität mit der bereits vorgestellten
Javascript-Variante nur bedingt zu vergleichen.
Was macht den fundamentalen Unterschied aus? Welche (Entwicklungs)Software-Werkzeuge werden/wurden
verwendet? Mit dieser interaktiven Webanwendung können in einem Dekompositionsansatz sehr viele Konzepte
der Informatik vermittelt werden.
Der künftige Lehrplan für den Wahlpflichtbereich Informatik (10.-12. Schulstufe) an Österreichs allgemein
bildenden höheren Schulen sieht folgende zu vermittelnde Informatikinhalte und -bereiche vor:
Grundprinzipien der Informationsverarbeitung, Konzepte von Betriebssystemen, Aufbau und Funktionsweise
von Netzwerken, Datenbanken, Lern- und Arbeitsorganisation, Konzepte von Programmiersprachen
Künstliche Intelligenz, Erweiterung der theoretischen und technischen Grundlagen der Informatik
Grundlegende Algorithmen und Datenstrukturen, Informatik, Gesellschaft und Arbeitswelt, Rechtsfragen.
Es obliegt dem Informatiklehrer, diese Themen im Unterricht zu behandeln. In welcher Schulstufe welches
Gebiet schwerpunktmäßig bearbeitet wird, kann schulautonom und lehrerautonom bestimmt werden.
Das vorliegende einfache Quizsystem ist in nahezu idealer Weise geeignet, (fast) alle Konzepte in verzahnter
Weise zu vermitteln. Sehen wir uns das etwas genauer an.
Eine erste Spezifikation der Quiz-Aufgabe könnte folgendermaßen aussehen:
Ein einfaches webbasiertes Frage-Antwortspiel mit zwei Antwortmöglichkeiten ist zu modellieren und zu
realisieren. Der Zugang zum Quiz soll durch eine einfache Anmeldung in Form eines Nicknames erfolgen.
Einfach beginnend und immer schwieriger werdend, sollen dem Benutzer Fragen gestellt werden, bis der
Benutzer einmal falsch antwortet.
Vor der Anmeldung soll es die Möglichkeit geben, diverse Auswertungen wie z.B. das Ranking anzusehen.
In ein paar Zeilen ist beschrieben, was beim "Systementwickler" nun sofort folgende Fragen aufwirft:
1) Wo und wie sollen die Fragen und Antworten gespeichert werden?
2) Sollen die Ergebnisse der Quizversuche ebenfalls gespeichert und protokolliert werden?
3) Welche Software-Werkzeuge sind für die Lösung dieser Aufgabe oder Problemstellung adäquat?
Exkurs Lehrplanbezug:
Bildungs – und Lehraufgabe des neuen österreichischen Informatik-Lehrplans:
Ausgehend von den Bildungs- und Lehraufgaben der 5. Klasse (9. Jahrgangsstufe) sollen im Wahlpflichtfach
Informatik Sach-, Selbst- und Sozialkompetenz weiter ausgebaut und vertieft werden. Durch Einsicht in die
Systematik der Fachwissenschaft und unter Berücksichtigung deren Einbettung in das sozio-kulturelle Umfeld
soll der Unterricht zu einem zielorientierten, konstruktiven Problemlöseverhalten mit Mitteln der Informatik
führen. Durch eine präzise, strukturierte und vollständige Beschreibung sowohl von Problemen als
auch von Abläufen, sowie durch die Modularisierung komplexer Aufgaben soll die Informatik
zu Schulung abstrakten Denkens beitragen.
Die didaktischen Grundsätze lesen sich so:
Die Hinführung zu modul- und projektartigen Arbeiten bereitet sowohl eine Grundlage für das Fach selbst als
auch für die fächerübergreifende Kooperation. Die unterschiedliche Kenntnislage der Schülerinnen und Schüler
wird in einzelnen Sachgebieten differenziertes Arbeiten erfordern. Die Auswahl der Themen soll nach
Möglichkeit Aktualitätsbezug haben. Die Wünsche von Schülerinnen und Schülern sollen bei einigen
Aufgabenstellungen berücksichtigt werden. Die Analyse von Aufgabenstellungen führt zur Modellierung und
soll die Arbeit am Rechner vorbereiten. Die unverzichtbare Implementation dient der praktischen Erprobung und
stellt ein Mittel zur Überprüfung der Modelle dar. Die Schülerinnen und Schüler sollen den Werkzeugcharakter
von Software erkennen. Die im Pflichtfach angesprochenen Grundsätze sollen weiterhin als Leitlinien des
Unterrichts dienen.
Die Ausgangssituation
Ein Lernender steht mit obiger Quiz-Aufgabe vor einem zunächst unlösbaren Problem. Es ist im vorliegenden
Fall mehr von einem Problem als von einer Aufgabe zu sprechen!
Es liegt nun am Geschick des Informatiklehrers, dieses Problem so zu strukturieren und zu erklären, dass es für
den Schüler zunächst etwas "greifbarer" und transparent wird. Von einer schnellen Realisierung ist er in diesem
Stadium noch sehr weit entfernt.
Ein methodisches Vorgehen bei der Analyse und der Dekonstruktion dieses Systems setzt beim Schüler bereits
ein gesichertes Wissen über folgende informatische Teilbereiche voraus:
- Grundlagen des Webdesigns sowie HTML-Kenntnisse (siehe erstes Beispiel)
- Grundlegende Programmierkenntnisse (Datentypen und Ablaufstrukturen, Funktionskonzept)
- Solides Datenbankknowhow wie statische Modellierung und Grundlagen von SQL
Die Erarbeitung und Absicherung dieser Bereiche ist bereits – je nach Engagement und "kognitiver Disposition"
der Schüler – in manchen Klassen bereits ein gutes (hartes) Stück Lehrerarbeit.
Wir gehen für unsere weiteren Betrachtungen davon aus, dass diese Grundlagen vorhanden sind.
Internet und Client-Server-Konzept
Da das Programm auf jedem Computer mit Internet-Zugang lauffähig sein soll, müssen die erforderlichen Daten
und Programme auf einem Webserver bereitgestellt werden. Die Clients rufen die Startseite des Quiz auf und das
Schicksal nimmt seinen Lauf. Das klingt gut, was aber läuft da ab?
Das Eingabeformular nimmt die Identifikation (Nickname) auf, speichert diesen (aber wo?) und die erste Frage
erscheint auf dem Bildschirm. Das wiederholt sich solange, bis eine falsche Antwort eingeben wird. Dann kann,
aber auch schon vorher, die Auswertung angesehen werden.
Spätestens zu diesem Zeitpunkt wird klar, dass es sich um ständiges Wechselspiel des Datenaustausches
zwischen Client und Server handelt. Und dieses kann in seiner einfachsten Weise folgendermaßen modelliert
bzw. dargestellt werden:
Ein Verständis für das Wechselspiel von Anfrage und Antwort ist wesentlich. Den Schülern muss an dieser
Stelle klar und bewusst sein, dass für diese Kommunikation klare Regeln in Form eines Protokolls (HTTP)
gelten.
Hier reicht es zunächst zu wissen, dass der Client die Datei "index.php" vom Server anfordert, diese überträgt
und vom Browser des Clients interpretiert und ausgeführt wird.
Jetzt wird die Sache spannend. Es ist keine "normale" HTML-Datei, sondern eine Datei mit einer anderen
Endung als "htm" oder "html", die darauf hinweist, dass da noch etwas anderes im Spiel ist als nur der Transfer
des HTML-files vom Server auf den Client. Da ist noch etwas "in the middle". Dies führt uns zu folgendem
Kapitel.
Middleware - Funktionalität am Server
Der Webserver spielt hier eine weit bedeutendere Rolle als nur die eines Parkplatzes für HTML-Dateien, die von einem Client abgerufen – dorthin kopiert und interpretiert werden. Es schaltet sich eine Software
dazwischen, eine serverseitig implementierte Skriptsprache, eben die Middleware. In unserem Fall werden wir
uns auf einen ihrer wesentlichen Vertreter mit enormen Wachstumsraten, nämlich auf PHP (= PHP Hypertext
Preprocessor, eine rekursive Defintion!) beschränken. Weitere Middleware wie ASP von Microsoft, JSP (Java
Server Pages) von Sun oder Coldfusion seien hier nur der Vollständigkeit halber erwähnt.
Dieses auf allen Server-Plattformen funktionierende System aus der Open Source Gemeinde ist kostenlos und
für die Schulinformatik ins Zentrum des Interesses gerückt. Zusammen mit der freien Datenbank MYSQL ist die
Skriptsprache PHP eine ideale Spielwiese für anspruchsvollen Informatik-Unterricht. Vor allem, wenn es um
webbasierte Client-Server-Applikationen mit hoher Praxisrelevanz und Realisierung geht.
Wenn Applikationen wie dieses Quiz modelliert werden sollen, muss im Vorfeld abgeklärt werden, wie die
Datenhaltung auf dem Server erfolgen soll: In Form von Textdateien, Binärdateien oder in einer Datenbank?
Mag die Variante mit den Textdateien auch noch so reizvoll sein, z.B. wenn der Entwickler leicht masochistisch
veranlagt ist ;-) , wovon im Schulbereich im Normalfall nicht ausgegangen werden kann - , so ist davon eher
abzuraten. Der Einsatz einer leistungsfähigen Datenbank ist hier unabdingbar und didaktisch sehr erwünscht.
Wir gehen davon aus, dass die Grundlagen von Datenbanken und die Datenbanksprache SQL in ihren
Grundzügen bereits bekannt sind. Die Entwicklung eines einfachen, überschaubaren statischen Datenmodells mit
ebenso einfachen Abfragen und weiteren einfachen notwendigen Datenbankmanipulationen, die mit der
leistungsfähigen Sprache SQL durchgeführt werden können, ist im schulinformatischen Kontext absolut
zumutbar.
Dadurch findet eine Verlagerung eines wesentlichen Teils der Funktionalität (und bereitgestellter Algorithmen)
in die Datenbank statt, der Entwickler kann sich mehr auf die Beschreibung des Problems konzentrieren.
Auf Modellierungsebene besteht nun bei einem webbasierten System die Schwierigkeit, den Ablauf der
Kommunikation, das Wechselspiel von Anfrage und Antwort in Client-Server-System, transparent zu machen
und möglichst einfach darzustellen.
Die vorliegende Grafik soll beschreiben, was vor sich geht, wenn zusätzlich zur Middleware die Daten
strukturiert in den entsprechenden Tabellen der Datenbank gehalten und manipuliert werden.
So einfach sich das Ja-Nein-Quiz dem Benutzer präsentiert, so relativ komplex (für schulinformatische
Verhältnisse) ist das zugrundeliegende System. Wir haben es hier mit einem System zu tun, bei dem ein
Webserver (z.B. Apache auf einem Linux-Server) mit integrierter Middleware (z.B. PHP) und einem
Datenbanksystem (z.B. MYSQL), zur Verfügung stehen soll bzw. installiert sein muss. Für die weitere
Betrachtung wollen wir davon ausgehen, dass die Datenbank auf dem gleichen Server wie der Webserver
installiert ist.
Bei dieser Sprechweise tut sich eine kleine "semantische Lücke" auf, die oft zu Mißverständnissen führt. Ein
Webserver ist (lediglich) ein Programm, ein Prozess bzw. Dämon, der neben (vielen) anderen Prozessen unter
einem Betriebssystem als Task läuft und Dateien und Dokumente (HTML, ...) zum Abholen durch den Client
bereitstellt.
Datenmodellierung
Bereits bei diesem einfachen Modellierungsproblem gibt es keinen Königsweg! Eine durchaus wichtige und sehr
interessante Erfahrung bzw. Erkenntnis für jeden Lernenden.
Sehen wir uns dieses Problem näher an: Von den anonymen Usern soll nur der Name bzw. ein frei gewählter
"nickname" gespeichert werden. Zusätzlich zu den Fragen müssen in der entsprechenden Tabelle der QuizDatenbank auch die richtigen Antworten stehen. Bleibt nur noch zu überlegen, wo die Anzahl der beantworteten
Fragen hinterlegt wird. Ein Blick auf die textuelle Fassung der Spezifikation legt uns nahe, diese Anzahl beim
User zu hinterlegen, eine "Verbindungstabelle" ist bei dieser speziellen Variante nicht notwendig, da ja das Quiz
in dem Augenblick zu Ende ist, wenn der Benutzer die falschen Antwort gegeben hat.
Eine "Luxusvariante" – ein bisschen kühn, bei diesen bescheidenen Ansprüchen von Luxus zu reden -, könnte so
aussehen, dass in einer dritten Tabelle (Auflösung der n:m - Beziehung) die Zeitpunkte der Beantwortungen
gespeichert werden. Aber das ist ja nicht gefragt. Auf jeden Fall aber wollen wir den Zeitpunkt, wann mit der
Durchführung des Quizzes begonnen wurde, mitspeichern, da wir ja in einer Auswertungsvariante auch die
Fequenz ermitteln wollen, wie oft das Quiz in Anspruch genommen wurde.
Wir kommen mit zwei (nicht einmal direkt in Beziehung stehenden Tabellen) Tabellen aus!
Tabelle Fragen (Stammdaten)
Tabelle User (Bewegungsdaten)
Es stellt wahrlich keine große Herausforderung dar, die Datenmodellierung für dieses Quiz vorzunehmen.
Es darf aber nicht unterschätzt werden, welch interessante Auswertungen bereits "mickrige", aber stetig
wachsende Datenbestand möglich macht. Die Fragentabelle ist nicht "gottgegeben", das Feld "richtig" kann
durchaus diskutiert werden. Es wäre auch möglich, hier einen integer – Typ oder gar eine Boolschen Typ
vorzugeben. Alles eine Sache der späteren Programmierung....
Das Hauptaugenmerk und die Schwierigkeit liegt nun darin, am Server Funktionalität zu implementieren, die
den Ablauf des Quizzes gestattet und an der Datenbank die erforderlichen Manipulationen vornimmt.
Auf die Fragentabelle wird beim Quiz nur lesend zugegriffen, während die Tabelle User nach jedem QuizVersuch um einen Datensatz wächst!
Eine verbale Beschreibung, was zu implementieren ist, könnte nun folgendermaßen aussehen:
Nach dem Anmeldeschirm, wo der Benutzer einen Nickname eingibt, und "Absenden des Formulares" (oder
werden nur die Formulardaten zum Server zurückgesendet?) wird in der Datenbank z.B. "quiz" – in der Tabelle
User ein Datensatz mit dem Nickname angelegt. Zusätzlich zu diesem Nickname wird auch der Zeitpunkt der
Anmeldung gespeichert (hier in einem speziellen Timestamp-Format) sowie ein Primärschlüssel (id), der für den
weiteren Ablauf sehr wichtig ist! Natürlich wird das Feld "richtig" mit dem Wert 0 initialisiert.
Nach dem Anmelden – dies sollte auch für den DAU (=dümmster anzunehmender User) noch keine große Hürde
sein – wird dem Benutzer die erste Frage serviert, ein Vorgang, der sich solange wiederholt, bis eine Frage falsch
beantwortet wurde!
Dieser iterative, sich wiederholende Vorgang muss nun modelliert und dann realisiert (programmiert) werden.
Dabei ist zu bedenken, dass sehr viele gleichzeitig mit dem Quiz beschäftigt sein können!
Wie kann das Problem gelöst werden, dass sich dieses System nicht gegenseitig beeinflusst und die Ergebnisse
und die Antworten des einen Users nicht zu denen eines anderen werden?
Der Übergang zwischen der anwendungsorientierten black-box und der systeminternen white-box Sicht eines
Systems kann auch als konzeptionelle Lücke bezeichnet werden. Auch schon bei diesem "Mikro"-System ist es
nicht mehr trivial, ohne Erfahrung mit einem Client-Server-System, entsprechendem Abstraktionsvermögen und
einer Vorausschau im Hinterkopf ein Modell zu entwerfen.
Der Anwendungsfall (use case) ist noch einfach. Zeichnen wir also den auf ein Strichmännchen reduzierten
User:
Die Client-Server Kommunikation auf http-Basis kann folgendermaßen skizziert werden:
Client
Server
Anmeldung
Anmeldung
- Anlegen des Users (insert)
- Initialisieren des Fragezähler
- Lesen der 1. Frage
- 1. Frageformular wird an den
Benutzer gesendet
1. Frage
2. Frage
- Fragezähler wird in user-Tabelle
um 1 erhöht (update)
- Frage mit um 1 erhöhter
Fragenummer wird ausgelesen
und an den Benutzer gesendet
Nach diesem einfachen Modell kann uns nur ein Blick in den Sourcecode Aufschluss darüber geben, wie die
Realisierung dieses Quizzes erfolgen kann bzw. schon erfolgt ist. Zwischen Modell und Code klafft wohl die
größte semantische Lücke!
Startfile: index.htm
............
<form name=form action=quiz.php method=post onsubmit="return check()">
............
<input type=text name=name>
<input type=submit value="Und los geht es!">
............
</form>
............
Dieses in seiner didaktischen Reduziertheit nicht mehr zu unterbietende HTML-Fragment ruft eine auf dem
Server wartende Datei "quiz.php" auf, deren Listing wie folgt aussieht:
File, das die ganze Funktionalität bereitstellt: quiz.php
<?
mysql_connect("localhost", "root", ""); mysql_select_db("unterstufe");
if ($HTTP_REFERER == ".....aufrufende Seite .......") {
$jetzt = date('YmdHis', time());
mysql_query("INSERT INTO user (name, richtig, zeit) VALUES ('$name', 0 , $jetzt);");
$q_user = mysql_query("select id from user where (name='$name') and (zeit = '$jetzt');");
$row = mysql_fetch_row($q_user);
$pid = $row[0];
} else {
if ($antwort==$richt) {
mysql_query("update user set richtig = richtig+1 where id = $pid;");
} else {
echo("...."); .... /* ENDE, falsche Antwort!*/
<a href='ranking.php'>Zur Highscoreliste</a>
exit();
}
}
$aktuelleruser = mysql_query("select id,name,richtig,zeit from user where id = $pid;");
$row = mysql_fetch_row($aktuelleruser);
$aktuellefrage = $row[2]+1;
$aktfra = mysql_query("select nr,frage,a1,a2,richtig
from fragen
where nr = $aktuellefrage;");
$row = mysql_fetch_row($aktfra);
$frage = $row[1];
$ant1 = $row[2];
$ant2 = $row[3];
$ri = $row[4];
?>
<form name=form action="quiz.php" method="post">
............
<?
echo "<b>Frage ".$aktuellefrage."<br><br>";
echo $frage."</b><br>";
?>
............
<input type=radio name=antwort value=a1 checked> .... <? echo $ant1 ?>
............
<input type=radio name=antwort value=a2> ........ <? echo $ant2 ?>
..........
<td colspan=2><input type=submit value="Überlege gut und klicke richtig!"></td>
<input type=hidden name=pid value=<? echo $pid ?>>
<input type=hidden name=richt value=<? echo $ri ?>>
............
</form>
Das Erstaunliche, vielleicht aber zunächst auch Ernüchternde ist, dass dies bereits der gesamte Sourcecode ist,
was den serverseitigen Scriptanteil und somit die Funktionalität ausmacht! Es gibt da nicht mehr!
Alle formatgegebenden, dem Webdesign zuzuordnenden HTML-Elemente sind bewusst weggelassen, damit
sich er Betrachter voll auf die Kernbereiche konzentrieren kann.
Dieses File "quiz.php" besteht aus einem für den Benutzer unsichtbaren Script-Bereich und einem dem Benutzer
zugänglichen (HTML)Formularbereich. Man spricht in diesem Fall von einem Comboscript.
Der Scriptbereich beinhaltet die volle Funktionalität, die gewährleistet, dass
- beim Erstaufruf der Benutzer neu angelegt wird (SQL insert-statement) ,
- bei einer falschen Antwort das Quiz ein Ende findet und ein Link angezeigt wird,
der auf das Ranking verzweigt,
- und im Normalfall des richtigen Beantwortens die nächste Frage ausgelesen wird und übers http-Protokoll
zusammen mit dem Formular an den Benutzer (Client) zurückgesendet wird.
Um diesen Ablauf zu verstehen, ist wie eingangs gefordert, elementare Programmlogik (Schleifen, Abfragen)
Voraussetzung, sowie die Technik der Datenbankanbindung (ein paar Zeilen) und dem Zugriff auf die
Datensätze und Felder über sogenannte assoziative Arrays. Mehr als SQL in seiner einfachsten Form ist hier
nicht vonnöten.
Ein absolut wichtiger Aspekt ist bei einer Netzwerkanwendung die sogenannte Session – ID. Jeder Benutzer
beginnt mit dem Quiz unabhängig von den vielen weiteren potentiellen Quiz-Anwendern zur gleichen Zeit.
Über diese ID, die zusammen mit dem Formular "versteckt" (siehe letzte Zeilen des Formulars im Listing )
übergebeben wird, ist gewährleistet, dass ein sogenannter "Thread" (Faden) existiert und das request – respondSpiel zwischen Client und Server für jeden Benutzer sozusagen in einem quasi-eigenen Bereich abläuft (in
diesem Fall ist es ja nur die momentane, aktuelle Fragenummer, die ja in der Datenbank gespeichert wird.
Solange das HTTP –Protokoll die Verbindung offen lässt, hat der User Zugriff auf seine ID, ohne diese explizit
zu kennen. Übrigens, der Benutzerschlüssel (ID) wird automatisch durch das auto increment – Attribut angelegt.
Er ist einfach eine fortlaufende Nummer.
Die Unkenntnis des Benutzers über seine ID ist nur bei diesem speziellen Quizdesign erwünscht.
Die Zutaten
Spätestens an dieser Stelle ist es Zeit, nochmals kurz über die Voraussetzungen für die Realisierung dieses
einfachen Quizsystems anzusprechen.
- Man nehme einen Server mit Webserverfunktionalität – im idealen Fall ein Linux-Betriebssystem mit dem
Apache-Webserver, der standardmäßig mit PHP hervorragend zusammenspielt. Die vierte Komponente im
Bunde – die Datenbank MYSQL – komplettiert dieses System "LAMP" (Linux-Apache-Mysql-PHP).
Falls an einer Schule so ein System nicht zur Verfügung stehen sollte (wo ein Wille, ist auch ein Weg!), könnte
man sich vorstellen, einen entsprechend aufgerüsteten Rechner einer anderen Schule mitzubenützen.
Es geht aber auch anders: Will man sich Online-Kosten sparen, kann das System LAMP leicht verändert – aus L
wird W – auf einem Windows-System auf jedem Rechner simuliert werden. Phptriad und Foxserv (siehe Internet
und Anhang) bieten Installationsroutinen an, die auf dem unter Windows laufenden Homecomputer ein ClientServer-System mit dem Apache-Server, dem PHP und MSYQL simulieren!
Was bereits weiter vorne gesagt wurde, kann hier nur nochmals verstärkt werden.
Der Weg vom Verstehen des Modells zur Realisierung ist ein weiter!
So kurz der Quellcode auch sein mag – er ist oben in dem Sinne komplett, als er alle serverskript-Anteile
beinhält, also den Programmcode – so "schwierig" ist er für einen Lernenden, ungeübten Schüler, in produktiv-
konstruktivistischer Weise zu entwickeln. Es ist eine gewisse Einarbeitungszeit in die Sprache PHP erforderlich,
auch für einen trainierten Entwickler lauern da noch so manche Fallstricke! Jeder, der bereits codiert hat, weiß
ein Lied davon zu singen.
Das einzige Entwicklungswerkzeug, das man benötigt, ist ein einfacher Editor!
Auch für dieses sehr interessante Thema webbasierter Programmierung mit PHP und MYSQL gibt es bereits
Entwicklungsumgebungen, die ständig weiterentwickelt werden, z.T aber recht teuer sind.
Die Gefahr dabei ist aber wieder, dass das Erlernen der Entwicklungsumgebung zuviel Zeit verschlingt und die
Konzepte im Hintergrund überdeckt werden, wie dies jetzt bei der .NET-Technologie von Microsoft zu
befürchten ist.
Ich spreche hier als Vertreter einer allgemeinbildenenden höheren Schule, deren Bildungsauftrag nicht sein kann,
sich in e i n e r höchst komplexen Entwicklungsumgebung zu spezialisieren.
Der Mehrwert gegenüber einer clientseitigen Javascript-Lösung
Zwei Vorteile springen sofort ins Auge.
Erst die serverseitige Datenhaltung – vorteilhaft in einer Datenbank - macht vielfältige Auswertungen möglich.
Die sehr einfache Tabellenstruktur lässt mit einfachen SQL-Anfragen jederzeit interessante Anfragen realisieren.
So können sehr einfach das Ranking ausgelesen werden, es kann untersucht werden, wieviele Zugriffe in
verschiedenen Zeitspannen erfolgt sind und z.B. durch eine Gruppierung nach beantworteten Fragen eruiert
werden, welche Fragen sogenannte Killerfragen sind.
Die saubere Trennung von Daten (Inhalt) und Programm (Funktionalität) ist nur am Server möglich, ein
wesentliches Merkmal professioneller Applikationen im Web. Damit ist auch eine hohe Datensicherheit
gegeben. Im Unterschied zur Javascript-Lösung werden die Fragen und Antworten nicht am Client verarbeitet,
sondern bereits am Server.
Erweiterungsmöglichkeiten
Dieser Versuch, ein einfaches didaktisch nicht mehr weiter reduzierbares Quiz zwar nicht "begreifbar" , so doch
nachvollziehbar zu machen, sollte Ausgangspunkt für weitere Expeditionen in die Welt des fragenden
Internet/Intranet sein. Über die gleiche Datenstruktur lässt sich ein komplett anderes Quiz-Design stülpen. So
könnten z.B. wie beim einleitenden clientseitigen Javascript alle Fragen auf einmal gestellt werden. In diesem
Fall kann ein Teil der Funktionalität wieder an den Client in Form von Javascript-Anteilen übertragen werden.
Unter Quiz-Design soll nicht nur das äußere Erscheinungsbilkd gemeint sein (z.B. Änderung der Stylesheets
oder Grafiken), sondern vor allem die Varianten und Änderungen im Ablauf und den Strukturen, was dann doch
einen massiven Eingriff ein den PHP-Code notwendig macht.
Ein nächster Schritt könnte die Erweiterung auf mehr Antwortmöglichkeiten (Hinzufügen von Feldern in der
Fragen-Tabelle) sein. Weiters kann die Datenbankstruktur so angepasst werden, dass zu Fragen
Mehrfachantworten möglich sind.
Sind diese Erweiterungen noch in gewissem Maße in schulinformatischer Reichweite, so kann man die
Ausbaustufen an die Spitze treiben und die Frage nach Skalierbarkeit hinsichtlich generischer, parametrisierbarer
Quizsysteme stellen. Diese sollen es einem unbedarften Benutzer erlauben, Quizze zu verschiedenen Gebieten in
verschiedenen Designs zu generieren. [ vgl. den Softwareturm, Hartmann-Nievergelt, Informatik Spektrum
Dezember 2002]. Diese sehr anspruchsvollen Problemstellungen können eventuell Ausnahmeschülern zugemutet
werden und können nicht Teil des regulären Informatikunterrichts sein.
Wir wollen an dieser Stelle zunächst kleinere Kucken backen und mit leichten Adaptierungen des einfach(st)en
webbbasierten Quizssystems beim Schüler erreichen, dass er ein konstruktives Gefühl für webbasierte ClientServersysteme bekommt.
Beobachtungen
Da dieses Quiz bereits einige Zeit im Echtbetrieb seine Funktionstüchtigkeit unter Beweis stellt, kann der Autor
bereits ein Feedback geben.
• Schüler versuchen sich gerne an Quizzes quasi zur Selbstbestätigung. Vor allem dann, wenn der
notenrelevante Prüfungscharakter wegfällt.
• Das Quiz entspricht dem Zeitgeist, der den Wettbewerb, Messbarkeit und Vergleichbarkeit im Aufwind
sieht.
• Es hängt sehr von der klaren Fragestellung ab, ob eine Frage leicht oder schwer ist.
•
•
•
•
Durch negativ formulierte Fragen wird das sprachliche Vermögen im Vergleich zum Fachwissen zu
sehr in
den Vordergrund gerückt.
Wenn die Reihenfolge der Fragen immer gleich bleibt, versuchen es viele hintereinander. Dabei kommt
es zu erstaunlichen Gedächtnisleistungen, in dem das richtige "Bitmuster" bis zur ersten falsch
beantworteten frage verinnerlicht wird.
Für den Fragesteller (das Testcenter) ist es sehr schwer, die Fragen nach Schwierigkeit zu klassifizieren.
Es stellt eine Herausforderung dar, zu einzelnen (informatischen) Fachbereichen einen guten "binären
Fragepool" zu finden und didaktisch sinnvoll einzusetzen.
Schlussbemerkung
Auch wenn diese Fragepools in unserem Schulwesen noch nicht sehr verbreitet sind - Firmenzertifikate bauen
schon lange darauf auf – können die hier angeführten Beispiele als zeitgeistige Vertreter von Webanwendungen
als Ausgangspunkt für viele Aktivitäten im schulinformatischen Bereich dienen.
Die Anzahl guter "Frageseiten" mit Feedback werden noch zunehmen. Die quizmäßige Aufarbeitung vieler
informatischer Inhalte ist, ob wir es wollen oder nicht, bereits Realität. Die Schulinformatik muss sich – sofern
nicht ohnedies schon an einzelnen Standorten geschehen - diesem Thema stellen.
Über das didaktisch vertretbare Maß lässt sich streiten. Meine persönliche Einschätzung ist, dass im Falle von
ausgereiften, leicht bedienbaren Quizssytemen mit vorgegeben Fragekatalogen diese auch eingesetzt werden.
Ich möchte hier und jetzt nicht werten, aber der sinn- und maßvolle Einsatz soll und muss, wenn diese
Voraussetzungen zutreffen, unbedingt zu einem pädagogischen und didaktischen Thema gemacht werden.
Das trifft natürlich auch auf die Schulinformatik zu, aber nur bedingt!
Wenn schon von einer überbordenden "Testeritis" an Schulen, - ich spreche von übertriebenen, weil verlockend
ökonomischen und fabriksmäßigen Wissensüberprüfungen - Abstand genommen wird, so kann im
Informatikunterricht die "Quizmania" noch immer als ein sehr gutes Beispiel für Anschauungs- und
Unterrichtsmaterial in vielen Unterrichtseinheiten dienen.
Literatur und Quellenangaben folgen!