Dissertation zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaften (Dr. rer. nat.) ONLINE DIAGNOSE IN INTELLIGENTEN MATHEMATISCHEN LEHR-LERN-SYSTEMEN von Martin Hennecke Institut für Mathematik und Angewandte Informatik Fachbereich IV: Mathematik, Informatik, Naturwissenschaften Universität Hildesheim April 1999 Referent: Koreferent: Eingereicht am: Tag der mündlichen Prüfung: Prof. Dr. Kreutzkamp Prof. Dr. Förster 30. April 1999 9. Juli 1999 II VORBEMERKUNGEN Diese Arbeit entstand während meiner Tätigkeit als wissenschaftlicher Mitarbeiter am Institut für Mathematik und Angewandte Informatik (bis 31.10.1998: Institut für Mathematik) der Universität Hildesheim. Das Institut verfolgt im Rahmen eines Projektes zur Softwareentwicklung für den Mathematikunterricht die Entwicklung eines intelligenten Lehr-Lern-Systems zur Bruchrechnung. Die in dieser Arbeit vorgestellten Algorithmen zur Diagnose von korrekten und fehlerhaften Schülerrechnungen sind Kern des hierzu verwendeten Lernermodells. Auch wenn die vorgestellten Algorithmen unabhängig von der Domäne Bruchrechnung sind, beschränken sich alle Beispiele in dieser Arbeit auf die Bruchrechnung. Hier ist diese Arbeit deutlich durch ihre Anwendung in dem Projekt geprägt. Bruchrechnung ist durch die zahlreichen bekannten fehlerhaften Rechenstrategien und die ständige Möglichkeit zum Wechsel des Repräsentanten eines Bruchs eine sehr komplexe Domäne für die Diagnose. Mein besonderer Dank gilt Herrn Professor Dr. Kreutzkamp und Herrn Prof. Dr. Förster für die verständnisvolle Aufnahme und Diskussion meiner Vorstellungen, die kontinuierliche Förderung und die vielfältige Unterstützung. Frau Professorin Dr. Habel verdanke ich zahlreiche wertvolle Anregungen zu den theoretischen Anteilen dieser Arbeit. Im Rahmen der empirischen Untersuchung möchte ich mich herzlich bei Herrn Dr. Wolpers für die organisatorische Unterstützung bedanken. Den hilfsbereiten Lehrern des Gymnasiums Andreanum, des Scharnhorst Gymnasiums, des Gymnasiums Himmelsthür, des Gymnasiums Michelsenschule, der Realschule Renataschule und der Real- und Hauptschule Don Bosco und ihren über 500 beteiligten Schülern verdanke ich die für die Entwicklung des Diagnosesystems wesentlichen Daten in Form realer fehlerhafter Rechnung. Insbesondere möchte ich mich bei Herrn Dr. May (Scharnhorst Gymnasium) für die Beratung beim Entwurf der diagnostischen Übungsaufgaben und Herrn Deumler (Gymnasium Andreanum) für die freundliche Kooperation beim Schulversuch zur Einführung der Bruchrechnung in Klassenstufe 5 und 6 bedanken. In diesem Zusammenhang gilt mein freundschaftlicher Dank auch den (ehemaligen) wissenschaftlichen Hilfskräften Torsten Jacobs, Mirko Strüßmann, Tjark Ommen und Christian Meyer sowie Frau Härtling für die Unterstützung bei der Auswertung und Erfassung der empirischen Untersuchungen. Schließlich noch eine Anmerkung: Wenn von Benutzern, Lernenden, Schülern, Lehrern und anderen Personengruppen die Rede ist, sind geschlechtsneutrale Termini gemeint. Ich möchte die Lesbarkeit dieser Arbeit nicht durch Dopplung von Begriffen oder Kombinationen männlicher und weiblicher Endungen beeinträchtigen. III IV INHALTSVERZEICHNIS ABKÜRZUNGEN UND SYMBOLE VIII 1 EINFÜHRUNG 1 1.1 LERNERMODELLE 1.1.1 Überlagerungsmodell 1.1.2 Fehlerdiagnosemodell 1.2 DIAGNOSTISCHE LERNSYSTEME 1.2.1 BUGGY 1.2.2 DEBUGGY 1.2.3 LMS/PIXIE 1.3 ÜBERBLICK 6 7 8 9 9 10 12 15 2 MODELLIERUNG VON RECHENSTRATEGIEN 18 2.1 GRUNDLEGENDE DEFINITIONEN 2.1.1 Terme 2.1.2 Termersetzung 2.2 DIAGNOSESYSTEME 2.2.1 Diagnoseregeln 2.2.2 Reduktionsrelation eines Diagnosesystems 2.2.3 Diagnosen 2.2.4 Beispiel 18 19 21 23 23 26 27 29 3 DIAGNOSE VON RECHENSTRATEGIEN 32 3.1 BERECHNUNG DER MENGE DER DIAGNOSEN 3.1.1 Bewertungsfunktionen 3.1.2 Berechnung der Diagnosen (Bestensuche) 3.2 DYNAMISCHE BERECHNUNG DER NACHFOLGERMENGEN 3.2.1 Dynamische Programmierung 3.2.2 Dynamischer Algorithmus zur Bestimmung der Diagnosen 3.3 VERGLEICH MIT DER TERMGRAPHERSETZUNG 3.4 INDIREKTE BERECHNUNG DER DIAGNOSEN 3.4.1 Speicherbedarf 3.4.2 Nachfolgermengen-Graphen 3.4.3 Aktualisierung der Bewertungs- und Tiefenfunktion für Terme 3.5 BERECHNUNG DER DIAGNOSEN FÜR EINE SCHÜLERANTWORT 3.5.1 Vorgängermengen 3.5.2 Permutierte Regelfolgen 3.5.3 Dynamische Berechnung in der zweiten Phase 3.6 KONTEXTKONDITION 3.7 PLÄNE 3.7.1 Einsatzbereiche 3.7.2 Beschreibung 3.7.3 Planbasierte Breitensuche 33 35 36 38 38 40 44 47 47 48 49 51 51 52 54 55 57 57 57 59 V 4 BUGFIX 62 4.1 SPEZIFIKATION DES DIAGNOSESYSTEMS (BFS) 4.1.1 Grundlegende Syntaxdiagramme 4.1.2 Signatur 4.1.3 Diagnoseregeln 4.1.4 Anwendungskondition 4.1.5 Kontextkondition 4.1.6 Gruppen 4.1.7 Pläne 4.1.8 Deaktivierung 4.2 DESIGN UND IMPLEMENTIERUNG 4.2.1 Signatur 4.2.2 Terme 4.2.3 Diagnoseregeln 4.2.4 Gruppen 4.2.5 Pläne 4.3 PHASE I 4.3.1 Design und Implementierung 4.3.2 Beispiel 4.4 PHASE II 4.4.1 Design und Implementierung 4.4.2 Beispiel 4.4.3 Filter 4.5 WIEDERAUFSETZEN 4.5.1 Wiederaufsetzen zur Qualitätsverbesserung 4.5.2 Wiederaufsetzen nach Zwischenergebnissen 4.5.3 Wiederaufsetzen bei neuer Aufgabenstellung 62 63 65 66 68 72 73 74 75 76 76 79 82 84 84 86 86 87 93 93 94 97 99 100 100 102 5 EMPIRISCHE UNTERSUCHUNGEN 103 5.1 7TE-KLASSEN-STUDIE 5.1.1 Diagnostischer Test 1 5.1.2 Diagnostischer Test 2 5.1.3 Diagnostischer Test 3 5.2 6TE-KLASSEN-STUDIE 103 104 107 109 111 6 ZUSAMMENFASSUNG UND AUSBLICK 114 VI ANHANG A: DIAGNOSESYSTEM ZUR BRUCHRECHNUNG 117 A.1 GRUNDRECHENARTEN IN DEN NATÜRLICHEN ZAHLEN A.2 ADDITION A.2.1 Brüche A.2.2 Hauptnennerbildung bei der Addition von Brüchen A.2.3 Ganze Zahlen und Brüche A.2.4 Gemischte Zahlen A.2.5 Hauptnennerbildung bei der Addition von gemischten Zahlen A.2.6 Gemischte und natürliche Zahlen A.2.7 Kürzen A.3 SUBTRAKTION A.3.1 Brüche A.3.2 Hauptnennerbildung bei der Subtraktion A.3.3 Ganze Zahlen und Brüche A.3.4 Gemischte Zahlen A.3.5 Hauptnennerbildung bei der Subtraktion von gemischten Zahlen A.3.6 Gemischte und natürliche Zahlen A.3.7 Kürzen A.4 MULTIPLIZIEREN A.4.1 Brüche A.4.2 Ganze Zahlen und Brüche A.4.3 Gemischte Zahlen A.4.4 Kürzen A.5 DIVIDIEREN A.5.1 Brüche A.5.2 Ganze Zahlen und Brüche A.5.3 Gemischte Zahlen A.5.4 Kürzen A.6 KÜRZEN A.6.1 Bruch zu Bruch A.6.2 Bruch zu Ganzzahl A.7 UMWANDLUNG 118 119 119 120 122 123 124 128 129 130 130 131 133 134 135 138 139 140 140 141 142 143 144 144 146 147 148 149 149 150 151 ANHANG B: STATISTIKEN ZUR ERSTEN PHASE I 152 ANHANG C: RECHENGRAPHEN 161 C.1 VERZEICHNIS DER RECHENGRAPHEN C.2 BRUCHRECHNUNG C.2.1 Kürzen C.2.2 Addition C.2.3 Subtraktion C.2.4 Addition und Subtraktion mit drei Operanden C.2.5 Multiplikation C.2.6 Division 162 163 163 170 173 185 187 194 LITERATURVERZEICHNIS 203 VII ABKÜRZUNGEN UND SYMBOLE Platzhaltervariable der Sorte s (Definition 7, S. 23) s ⇒r 1-Schritt-Reduktionsrelation eines Diagnosesystems (Definition 11, S. 26) ⇒R Reduktionsrelation eines Diagnosesystems (Definition 11, S. 26) ⇒ Kurzschreibweise für ⇒ R (Definition 11, S. 26) Regelordnung (Definition 29, S. 84) Länge einer Regelfolge (Definition 13, S. 27) Länge einer Fehlerdiagnose (Definition 15, S. 28) σ Einsetzung (Definition 5, S. 21), Kurzschreibweise für σ ∗ σ∗ Substitution (Definition 5, S. 21) Σ Signatur (Definition 1, S. 19) Σ( X ) Signatur mit Variablen (Definition 4, S. 20) τ Aritätsfunktion einer alt. Signatur-Definition (Bemerkung zu Definition 1, S. 19) Ω Mengenfamilie der Operatoren einer Signatur Σ (Definition 1, S. 19) Ω( ) Aritätenmenge eines Operators (Definition 2, S. 20) Ω w, s Menge der Operatoren der Arität w → s (Definition 1, S. 19) Ξ Menge aller Einsetzungen (Definition 5, S. 21) A dem Lernenden gestellte Aufgabe (Startterm) aDiag Bewertungsfunktion für Diagnose (Definition 16, S. 35) aR Bewertungsfunktion für Regeln (Definition 16, S. 35) a Σ * ,i Bewertungsfunktion für Terme im i-ten Iterationsschritt (Definition 16, S. 35) Abl Menge aller Ableitungen (Definition 13, S. 27) Ac Anwendungskonditionen (Definition 8, S. 24) adr Speicheradresse eines Terms (Definition 29, S. 84) C Menge aller Kontexte (Definition 7, S. 23) C[ ] Kontext (Definition 7, S. 23) Cc Kontextkondition (Definition 26, S. 55) D Diagnosesystem (Definition 10, S. 25) VIII Diag Menge aller Diagnosen (Definition 15, S. 28) Diag i im i-ten Iterationsschritt bekannte Teilmenge von Diag (Abschnitt 3.1, S. 33) dom Domäne einer Substitution (Definition 5, S. 21) fib Fibonacci-Funktion (Abschnitt 3.2.1, 38) Follow( w) Nachfolgermenge von w (Definition 14, S. 28, vgl. Abschnitt 3.2.2, S. 40) ITS Intelligentes tutorielles System L(D) von D erzeugte Sprache (Definition 12, S. 27) Spanε aufspannende Knotenmenge (Definition 24, S. 52) p Prioritätsfunktion eines Diagnosesystems (Definition 10, S. 25) Previous w Vorgängermenge von w (Definition 23, S. 51) R Regelsystem eines Diagnosesystems (Definition 10, S. 25) Rf Menge aller Regelfolgen (Definition 13, S. 27) S Menge der Sorten einer Signatur Σ (Definition 1, S. 19) TΣ Terme über der Signatur Σ (Definition 3, S. 20) TΣ , s Terme der Sorte s über der Signatur Σ (Definition 3, S. 20) TΣ ( X ) Terme über der Signatur Σ mit Variablen X (Definition 4, S. 20) TΣ ( X ),s Terme der Sorte s über der Signatur Σ mit Variablen X (Definition 4, S. 20) tiefe Tiefenfunktion für Terme (Definition 17, S. 37) tiefei Tiefenfunktion für Terme im i-ten Iterationsschritt (Definition 17, S. 37) ToDoi im i-ten Iterationsschritt bekannte Teilmenge von L( D) (Abschnitt 3.1, S. 33) V Sicht (Definition 27, S. 58) var Menge der Variablen eines Terms (Definition 4, S. 20) X Mengenfamilie der Variablen (Definition 4, S. 20) Mengenfamilie der Variablen eines Diagnosesystems (Definition 10, S. 25) X Mengenfamilie der Variablen mit Platzhaltervariablen (Definition 7, S. 23) IX KURZFASSUNG Die Fähigkeit eines Lehrers, die individuellen Fehlvorstellungen seiner Schüler zu erkennen und seine Lehrmethoden daran anzupassen, ist notwendige Voraussetzung für gezielte Förder- bzw. Individualisierungsmaßnahmen. Aufgrund des hohen Zeitaufwandes ist dies in der Praxis jedoch kaum möglich. In computergestützten mathematischen Lernsystemen konnten diagnostische Fähigkeiten bis heute nur bedingt eingesetzt werden, da bisherige Diagnosesysteme wie DEBUGGY (Burton, 1982) oder LMS (Sleemann, 1982, 1983) nicht schnell oder flexibel genug sind. In dieser Arbeit wird ein konzeptionell neuer Algorithmus zur Online-Diagnose in einem mathematischen Lernsystem vorgeschlagen, der auf Konzepten der Termersetzung und der dynamischen Programmierung basiert. Mit dem Diagnoseprogramm BugFix („bug“ engl. für „Fehler“, „fix“ engl. für „reparieren“) wird eine leistungsfähige Implementierung vorgestellt, die für vorgegebene Aufgabenstellungen mehrere Milliarden verschiedene Schülerrechnungen als mögliche Diagnosen berücksichtigt, ohne daß eine subjektiv wahrnehmbare Wartezeit für den Schüler entsteht. Die verwendeten Datentypen ermöglichen durch maximale Strukturteilung eine effiziente Speicherverwaltung. Damit stellt BugFix eine leistungsfähige und leicht integrierbare diagnostische Komponente für den Einsatz in intelligenten Lernsystemen dar. Die gewonnenen diagnostischen Informationen können sowohl vom Lernsystem als auch vom menschlichen Lehrer über ein Lehrsystem zur Vermeidung und Therapie von Fehlvorstellungen der Schüler verwendet werden. X ABSTRACT The ability of human teachers to diagnose the misconceptions of students and to adapt the teaching methods, is a necessary prerequisite for direct promotion or individualising measures. Due to the high expenditure of time this is nearly impossible in practice. In computer-assisted mathematical training systems this diagnostic abilities couldn’t be used until today, because existing diagnostic systems such as DEBUGGY (Burton, 1982) or LMS (Sleemann, 1982, 1983) are not fast or flexible enough. A new concept for an online-diagnosis-algorithm in mathematical training systems is proposed. It is based on term rewriting and dynamic programming. For the diagnostic program BugFix an efficient implementation is presented. As possible diagnoses BugFix considers several billions different student calculations for a given task, without a subjectively perceptible waiting period for the student. The used data types enable an efficient memory management by maximum structure sharing. Thus, BugFix represents an efficient and easily useable diagnostic component for the application in intelligent training systems. The obtained diagnostic information can be used both by the training system and by the human teacher to avoid and therapy of misconceptions of the student. XI XII 1 Einführung In den verschiedensten Bereichen der schulischen wie auch der betrieblichen Aus- und Weiterbildung nimmt der Einsatz des Computers eine immer größere Bedeutung ein. Insbesondere sind multimediale Anwendungen, mit denen Schüler in Interaktion mit dem Rechner lernen, im Einsatz. Die zahlreichen verschiedenen Ausprägungen dieser Programme (vgl. Schulmeister, 1997) werden üblicherweise unter dem Begriff „Lernsystem“ zusammengefaßt. Auf der anderen Seite existieren Anwendungen, sogenannte „Lehrsysteme“1, die Lehrer bei der Planung, Durchführung und Nachbereitung des Unterrichts unterstützen. Von besonderem Interesse sind Systeme, in denen sowohl die Funktionen von Lehr- als auch von Lernsystemen integriert sind. Als angemessene Bezeichnung wird hierfür im weiteren der Begriff „Lehr-Lern-Systeme“ verwendet. Ihre Charakterisierung ist über die Rolle des Lehrers sinnvoll. So kann die Planung von Lernzielen unterstützt werden, indem etwa die Inhalte des Lernsystems beschränkt werden und/oder der Schwierigkeitsgrad der Übungsaufgaben adaptiert wird (z.B. in „Mathe-Blaster“ von Davidson/Klett). Lehr-Lern-Systeme können auch die Durchführung des Unterrichts wesentlich unterstützen. So ermöglichen insbesondere Systeme für entferntes Lernen (z.B. Virtueller Campus) die Kommunikation zwischen Lehrern und Lernenden oder die moderierte Kommunikation entfernter Lernender untereinander. Auch Techniken wie White-Board-Sharing oder Videokonferenzen werden in diesem Sinn verwendet. Im Bereich der Nachbereitung des Unterrichts können u.a. Systeme, die den Lehrer bei der Bewertung von Schülerleistungen unterstützen, eingeordnet werden. Eine Sonderstellung unter den Lehr-Lern-Systemen nehmen die „diagnostischen Lehr-LernSysteme“ ein. Diese ermöglichen dem Lehrer die Diagnose des Wissens und der Fehlvorstellungen seiner Schüler. Richtig eingesetzt dienen sie damit der Planung von Unterricht, insbesondere von Förder- und Individualisierungsmaßnahmen. Die diagnostischen Informationen können aber auch vom Lernsystem selbst genutzt werden – etwa indem gezielte Hilfen oder Gegenbeispiele gegeben werden. Das Lernsystem kann so bereits der Bildung von Fehlvorstellungen entgegenwirken. Das erste diagnostische Lehr-Lern-System wurde von Brown und Burton (1978) entworfen. Ihr Programm BUGGY erlaubt die Simulation von korrekten und fehlerhaften Schülerrechnungen am Beispiel der Subtraktion natürlicher Zahlen (vgl. Abschnitt 1.2). Die eigentliche Diagnose von Fehlvorstellungen wird in der Erweiterung DEBUGGY (Burton, 1982) realisiert. DEBUGGY ge1 Der Begriff „Lehrsystem“ ist abzugrenzen von der gleichlautenden Übersetzung für tutorielle Systeme (vgl. Strube, 1996, S. 289) die einige deutsche Autoren favorisieren. 1 neriert Hypothesen über die Vorstellungen eines Lernenden und testet sie mit Hilfe von BUGGY. DEBUGGY ist als Offline-Diagnose konstruiert. Die eigentliche computergestützte Diagnose wird hier vom Lehrsystem durchgeführt. So kann zwar der Lehrer, nicht aber das Lernsystem, die diagnostischen Informationen verwenden. Der Versuch, eine Online-Diagnose in das interaktives Lernsystem IDEBUGGY („i“ für interaktiv) zu integrieren, war nicht zufriedenstellend realisierbar. Dieser schwerwiegende Nachteil ist Ansatzpunkt der vorliegenden Arbeit. Sie hat die Entwicklung eines Diagnosealgorithmus für intelligente mathematische Lehr-Lern-Systeme, deren diagnostische Informationen sowohl vom Lehrer als auch vom Lernsystem genutzt werden können, zum Ziel. Abbildung 1 verdeutlicht schematisch die Diagnoseaufgabe: Aus einer bekannten Aufgabenstellung und den zugehörigen beobachtbaren Lösungen des Lernenden soll der Diagnosealgorithmus die nicht beobachtbaren Rechenstrategien des Lernenden bestimmen. Das gezeigte Beispiel verdeutlicht zudem anschaulich, wie komplex die Diagnose bereits für eine (scheinbar) einfache Additionsaufgabe sein kann. Abbildung 2 zeigt zwei der möglichen Diagnosen der Beispielaufgabe. Aufgabe Zwischenlösung(en) 15 2 7 1 2 Lösung 5 6 + 4 2 Diagnosealgorithmus Abbildung 1: Abstraktes Schema der Diagnose Wichtige Akzeptanzkriterien für die diagnostische Komponente des Lernsystems sind • Laufzeit, • Flexibilität und • Diagnosegüte. Dabei ist die Laufzeit bezogen auf das subjektive Empfinden des Lernenden. Insbesondere Wartezeiten nach der Eingabe von Zwischenschritten oder Lösungen sind nicht akzeptabel. Auch dürfen weder die Auswahl der Übungsaufgaben noch die Vielfalt der Rechenwege des Lernenden durch den Diagnosealgorithmus eingeschränkt werden. Möglichst zuverlässige Diagnosen der Fehlvorstellungen sollten bereits nach wenigen, am besten nach einer Übungsaufgabe vorliegen. 2 1. Diagnose für Aufgabe 5 4 + 6 2 und Lösung 15 2 2. Diagnose für Aufgabe 5 6 + 4 2 5 6:2 Kürzen über Kreuz + 4:2 2 5 3 + 2 x Division 2 2 Addition durch Multiplikation bei 5 ⋅ 3 gemeinsamen Nenner 2 15 Multiplikation 2 Aufgabenstellung 5 4 + Aufgabenstellung Addition durch Multiplikation 2 x Multiplikation Kürzen mit Kürzungszahl im Nenner Division 6 2 und Lösung 15 2 5 6 + 4 2 5⋅6 4⋅2 30 8 30 : 2 2 15 2 Abbildung 2: Beispiele für mögliche Diagnosen Die genannten Ziele lassen sich mit den in DEBUGGY verwendeten Konzepten jedoch nicht erreichen. Für den in dieser Arbeit vorgeschlagenen Diagnosealgorithmus wurde die Erfahrung genutzt, daß fehlerhafte Rechenstrategien häufig eine „ähnliche“ Regelstruktur besitzen. Psychologisch erklärbar ist dieses Phänomen durch die REPAIR-Theorie von VanLehn (1982, 1989). Abbildung 3 demonstriert dies an drei fehlerhaften Rechenstrategien für die Addition von Brüchen. So berechnen die erste und dritte Rechenstrategie den gleichen Nenner und die zweite und dritte Rechenstrategie den gleichen Zähler. z1 z2 z +z + → 1 2 n1 n2 n1 + n2 z1 z2 z ⋅z + → 1 2 n1 n2 n1 ⋅ n2 z1 z 2 z ⋅z + → 1 2 n1 n2 n1 + n2 Abbildung 3: „Ähnliche“ fehlerhafte Rechenstrategien für die Addition Anstatt nun wie BUGGY einzelne Hypothesen zu überprüfen, berechnet der vorgeschlagene Diagnosealgorithmus alle modellierten Fehlvorstellungen quasi parallel. Das Ergebnis ist eine möglichst umfangreiche Menge von möglichen Schülerlösungen und zugehörigen Rechenstrategien. Bei der Berechnung treten jedoch zahlreiche Synergieeffekte auf. So müssen z.B. in obigem Beispiel die möglichen Rechenstrategien für die Addition und die Multiplikation der dritten Rechenstrategie nicht mehr berechnet werden, da sie bereits von der Simulation der ersten beiden Rechenstrategien bekannt sind. Dem Diagnosealgorithmus liegt dabei ein Ansatz zugrunde, der in der Informatik als „dynamische Programmierung“ bezeichnet wird – wobei es hier zahlreiche Parallelen zur Termgraphersetzung (vgl. Sleep, Plasmeijer, van Eekelen, 1993; Plasmeijer, van Eekelen, 1993; Plump, 1998) gibt. 3 Entsprechend dem vorgeschlagenen Diagnosealgorithmus wurde das System BugFix implementiert. Zur Demonstration wurde die Domäne der Bruchrechnung gewählt, die durch die zahlreichen bekannten fehlerhaften Rechenstrategien und der ständigen Möglichkeit des Kürzens und Erweiterns besonders anspruchsvoll für die Diagnose ist. BugFix simuliert abhängig von der Aufgabenstellung parallel zur Schülerrechnung bis zu mehreren Milliarden möglicher korrekter und fehlerhafter Rechenwege, ohne daß der Schüler eine subjektiv wahrnehmbare Verzögerung durch die Diagnose bemerkt. Diagnostische Systeme sind besonders aus dem Bereich der sogenannten intelligenten tutoriellen Systeme (ITS) bekannt. Sie werden in der Literatur (Wenger, 1987; Schulmeister, 1997) auf das Programm SCHOLAR von Carbonell (1970a, 1970b) zurückgeführt. Der Bereich der intelligenten tutoriellen Systeme wird seitdem in den Bereich der künstlichen Intelligenz (KI) eingeordnet (Barr, Feigenbaum, 1986). Neben BUGGY sind weitere beispielhafte Implementierungen für intelligente tutorielle Systeme vor allem WHY (Steven, Collins, Goldin, 1978), SOPHIE (Brown, Burton, de Kleer, 1982), WEST (Burton, Brown, 1979), WUMPUS (Carr, Goldstein, 1977; Goldstein, 1979) und GUIDON (Clancey, 1979, 1982, 1983) zu nennen. Für eine Übersicht der genannten Systeme sei etwa auf Barr und Feigenbaum (1986) verwiesen. Schulmeister (1997) skizziert zusätzlich aktuelle intelligente tutorielle Systeme, die für diese Arbeit jedoch nur untergeordnete Bedeutung haben. Die Anforderungen an ein ITS orientieren sich nach Gentner (1979) am menschlichen Lehrer: „A tutor must be able to generate instructional material: to present the subject matter, ask questions of the students, give examples, and give explanations to the student. A tutor must be able to answer free-form questions from the student. The tutor must be able to evaluate the student’s responses or behavior. And as one of the more difficult task, the tutor must be able to diagnose student errors, or ‘bugs’. It is relatively easy to tell when a student is making an error; the more difficult task for the tutor is to determine the underling misconceptions responsible for that error. And once the source of the error has been found, the tutor has to figure out the most efficient way to correct the student’s misunderstanding. [...] the tutor must be aware of the student’s progress or lack or progress, and adapt the instructional techniques to that particular student.” Intelligente tutorielle Systeme versuchen die genannten Aufgaben durch die Bildung von vier Modellen zu bewältigen. Hierzu gehören eine Modellierung des Wissensgebietes (domain model), eine Modellierung des Lernenden (student model), eine Modellierung pädagogischer Strategien (tutor model) und eine Modellierung der Kommunikation des Programms mit dem Lernenden (interface). Die einzelnen angesprochenen Modelle und ihr Zusammenwirken sind ausführlich bei Burton und Brown (1976), Self (1974), Sleemann und Brown (1982) und Spada und Opwis (1985) beschrieben. 4 Bis heute haben intelligente tutorielle Systeme jedoch den Charakter von Prototypen nicht verloren (Schulmeister, 1997). Als Grund hierfür wird u.a. der hohe Entwicklungsaufwand von 200-300 Stunden pro Unterrichtsstunde (Lippert, 1989) genannt. Die enge Bindung an die Domäne erschwert zudem die Wiederverwendung bereits existierender Komponenten. Die historische Entwicklung der computergestützten Fehlerdiagnose im Kontext der intelligenten tutoriellen Systeme muß ihre heutigen Anwendungsgebiete jedoch nicht auf diese beschränken. Natürlich enthalten alle Lernsysteme, die ihren Lernenden Aufgaben stellen, sinnvolle Einsatzfelder für diagnostische Komponenten. Der folgende Abschnitt 1.1 dieser Einführung gibt einen Einblick in die verschiedenen Arten der Lernermodelle – und damit auch in mögliche Reaktionen eines Lernsystems auf Übungsaufgaben. Danach werden die diagnostischen Lernsysteme DEBUGGY und LMS/PIXIE als für diese Arbeit relevante Vergleichssysteme vorgestellt. Abschließend folgt in Abschnitt 1.3 ein Überblick über die Gliederung der vorliegenden Arbeit. 5 1.1 Lernermodelle Auf dem kommerziellen Markt sind derzeit zahlreiche mathematische Lernsysteme erhältlich, z.B. „Alice“ (Cornelson), „Addy“ (Cendant/Sierra Coktel), „Alfons“ (Lernverlag/Systhema) und „Mathe-Blaster“ (Davidson/Klett), um nur Produkte der wichtigsten deutschen Hersteller bzw. Vertreiber zu nennen. Diesen Programmen ist gemein, daß sie Schülerübungen bewerten, indem sie die Schülerlösungen mit einem gespeicherten oder durch das Lernsystem berechneten korrekten Wert vergleichen. Existieren für eine Aufgabe mehrere korrekte Formen der Lösungen bzw. Zwischenlösungen, müssen alle Alternativen vom Programm vorhergesehen werden. Hierbei spricht man von Mehrdeutigkeitstoleranz. Da die meisten Lernsysteme den Schüler bei den Aufgaben in ein festes Schema zwingen, fällt die geringe Mehrdeutigkeitstoleranz nur selten auf. Sollen feste Schemata vermieden werden, ist der Einsatz von Computeralgebra-Systemen eine mögliche Lösung. Aufsetzend auf dem Computeralgebra-System MuPAD (Fuchssteiner et. al., 1993) befindet sich derzeit beim Verlag Cornelsen ein entsprechendes System in Vorbereitung. Dennoch bleibt das Ergebnis dieser Bewertung beschränkt auf „richtig“ oder „falsch“. Nach der Bearbeitung mehrerer Aufgaben drückt sich diese Bewertung in einer durchschnittlichen Fehlerrate aus. Diese rein quantitativen Aussagen geben jedoch keinen Hinweis über die Leistungen und/oder die Ursachen einer Lernschwierigkeit bzw. die Gründe für das Ausbleiben einer angestrebten Leistung (Radatz, 1979). Sie erlauben damit dem Lehrer nicht die Einleitung von gezielten Förder- oder Individualisierungsmaßnahmen und verführen eventuell zu einer nicht sachgerechten Leistungsbewertung. Beantworten z.B. zwei Schüler die Aufgabe 3 2 + 74 mit 5 3 bzw. mit 7 2 , so ist die übliche Bewertung für beide Schüler gleich: falsch! Diese Bewertung spiegelt jedoch nicht den unterschiedlichen Leistungsstand der beiden Schüler wider, wie ein Blick auf die Rechenwege zwei fiktiver Schüler zeigt: Schüler 1: 3 7 3 + 7 10 5 + = = = 2 4 2+4 6 3 Schüler 2: 3 7 6 7 14 7 + = + = = 2 4 4 4 4 2 Während der erste Schüler die Addition von Brüchen anscheinend nicht verstanden hat, ist dem zweiten Schüler lediglich ein Flüchtigkeitsfehler bei der Addition in den natürlichen Zahlen unterlaufen. Die eigentliche Addition der Brüche hingegen erfolgte beim zweiten Schüler korrekt. Ein möglicher Ansatz, solche Flüchtigkeitsfehler zu behandeln, ist von probabilistischer Natur: Falls ein Schüler einen Fehler macht, stellt das Lernsystem eine Reihe weiterer „ähnlicher“ Fragen. Beantwortet der Schüler diese korrekt, so stuft das Lernsystem den Fehler als Flüchtigkeitsfehler ein, andernfalls als systematisch. Diese Annahme kann jedoch fehlerhaft sein. Angenommen, der Schü6 ler rechnet 1 6 + 32 = 1 und als weitere Übungsaufgaben folgen 1 4 + 32 = 7 4 und 3 5 + 14 = 17 20 , dann schließt das Lernsystem, daß es sich bei dem ersten Fehler um einen Flüchtigkeitsfehler handelt. Ein Blick auf den fiktiven fehlerhaften Rechenweg bei der ersten Aufgabe zeigt, daß diese Schülerbewertung falsch ist: 1 3 1 1 + = + =1 6 2 2 2 Fehlerhaftes Kürzen mit 3 Der Schüler hat fehlerhaft gekürzt. Dieser Fehler war bei den beiden Testaufgaben jedoch nicht möglich. Das Problem ist hier offensichtlich die Spezifikation des Begriffs der „ähnlichen“ Aufgaben. Damit eine Aufgabe für diese probabilistische Vorgehensweise hinreichend „ähnlich“ ist, muß der vom Schüler gemachte Fehler (oder die gemachte Kombination mehrerer Fehler) auch bei den weiteren Aufgaben möglich sein. Hiermit wird die Problematik bzw. innere Widersprüchlichkeit der geschilderten Vorgehensweise klar: Wie kann diese Forderung erfüllt werden, wenn nicht einmal bekannt ist, welchen Fehler der Schüler gemacht hat? 1.1.1 Überlagerungsmodell Das Überlagerungsmodell (engl. „overlay model“ oder auch „subset model“) geht auf Carr und Goldstein (1977) zurück, wobei bereits der Prototyp SCHOLAR (Carbonell, 1970a, 1970b) diese Technik verwendete. Dem Überlagerungsmodell liegt die Annahme zugrunde, daß Schülerwissen immer ein Bestandteil des korrekten Bereichswissen des Lernsystems ist. Das Wissen des Schülers wird also immer als Teilmenge (engl. „subset“) des Expertenwissens betrachtet (siehe Abbildung 4). Als klassisches Beispiel für ein Überlagerungsmodell kann Carr und Goldsteins Implementierung des Tutors in dem Spiel „Hunt the Wumpus“ in WUSOR-II bezeichnet werden. Weiterentwickelte Überlagerungsmodelle (z.B. Murray, 1991) erweitern das Konzept, indem sie auch Aussagen zulassen, wie gut der Schüler den bekannten Teil des Expertenwissens beherrscht. Wissen des Schülers Wissen des Experten Abbildung 4: Überlagerungsmodell 7 Dem Vorteil der leichten Realisierbarkeit des Überlagerungsmodells steht der entscheidende Nachteil entgegen, daß nicht zwischen fehlendem und fehlerhaftem Wissen des Schülers unterschieden werden kann. Auch kann das Überlagerungsmodell nicht alternatives korrektes Wissen bewerten. 1.1.2 Fehlerdiagnosemodell Beim Fehlerdiagnosemodell sollen auch alternativ-korrektes und fehlerhaftes Wissen der Lernenden modelliert werden. Hierzu wird das Expertenwissen um eine Bibliothek mit relevanten korrektem Alternativwissen und fehlerhaftem Wissen erweitert (siehe Abbildung 5). Die ersten Realisierungen von Fehlerdiagnosemodellen gehen auf Brown, Burton und VanLehn (Brown & Burton, 1978; Burton, 1982; Brown & VanLehn, 1980), Sleeman und Smith (1981) und Young und O’Shea (1981) zurück. Wissen des Experten Wissen des Schülers Mögliches Wissen des Schülers Abbildung 5: Fehlerdiagnose-Modell Soll der Diagnosealgorithmus beliebige Fehlerkombinationen erkennen, führen große Fehlerbibliotheken schnell zu komplexen Suchproblemen, die nicht mehr in angemessener Zeit gelöst werden können. Man beschränkt sich daher meist auf eine kleine Anzahl der wichtigsten Fehlervorstellungen (z.B. Stern, Beck, Woolf, 1996) oder kleine Domänen (z.B. nur Subtraktion natürlicher Zahlen bei Burton, 1982) und/oder führt die Fehlerdiagnose erst später auf Forschungsrechnern durch. Das wesentliche Problem der Fehlerdiagnose-Modelle ist die sehr zeitaufwendige und damit kostenintensive Aufstellung der domänenabhängigen Fehlerbibliothek. In der letzten Zeit wurden daher einige Systeme entwickelt, die in gewissen Grenzen in der Lage sind, Fehlvorstellungen selbständig zu erkennen. Mit Erweiterungen zu LMS (vgl. Abschnitt 1.2.3) entwarfen Sleeman et. al. (1990) ein System, das ausgehend von einer gegebenen Fehlerbibliothek durch deren Manipulation neue Fehlervorstellungen erzeugt. Dies ist eine Technik, die auch in BugFix sehr leicht integriert werden könnte. Systeme wie ACM (Langley & Ohlsson, 1984; Langley et. al, 1990) und ASSERT (Baffes, 1994; Baffes & Mooney, 1996) konstruieren eine Fehlerbibliothek durch logische Schlüsse. 8 1.2 Diagnostische Lernsysteme 1.2.1 BUGGY Die Grundlagen von BUGGY gehen auf eine empirische Untersuchung von Schülerrechnungen bezüglich grundlegender algebraischer Umformungen zurück (Brown et. al., 1975). Das Ergebnis dieser Studie ist die Beobachtung, daß alle Teilfertigkeiten der Schüler unabhängig voneinander durch fehlerhafte Verhaltensweisen ersetzt werden können. Für die folgenden Arbeiten beschränkten sie sich mit der Arithmetik, speziell der Subtraktion natürlicher Zahlen, auf eine einfachere Domäne. Zur Modellierung des Schülerverhaltens entwickelten Brown et. al. (1977b) ein sogenanntes prozedurales Netzwerk, das die Zerlegung einer Fertigkeit in ihre Teilverfahren im Sinne eines Aufrufdiagramms darstellt. Abbildung 6 (S. 9) zeigt das prozedurale Netzwerk für die Subtraktion. subtract set up write top column sequence transform write bottom bottom > top new problem compare invert done subtract column borrow needed do borrow change answer sign add ten complete column borrow ten find next column get top number borrow one subtract one zero compare digits addition fact table get nine scratch get top digit get bottom digit subtraction fact table write down Abbildung 6: Das „prozedurale Netzwerk“ für die Subtraktion (nach Brown und Burton, 1978) Mit Hilfe von BUGGY widerlegten Burton und Brown die Annahme, daß Schüler kaum Rechenstrategien befolgen. Die hohe Fehleranfälligkeit von Schülern ist vielmehr häufig auf sehr konsequentes Befolgen von fehlerhaften Rechenstrategien zurückzuführen (vgl. auch VanLehn, 1982, 1989). Die Integration von BUGGY in ein intelligentes tutorielles System für Studierende des Lehramts zeigte zudem, daß sich die Fähigkeiten der Studierenden bei der Erkennung von Fehlerstrate- 9 gien verbesserten (Brown et. al., 1977a). Abbildung 7 zeigt einen Ausschnitt aus dem Dialog dieses Lernsystems mit einer Gruppe von Studierenden. BUGGY: Welcome to Buggy. I have chosen a bug. Here is an example of the bug. 17 + 5 13 Now you can give me problems to determine the bug. Team: 18 43 + 6 +79 BUGGY: 15 23 Team: Got the bug! Student adds the number to be carried in the last column worked in. BUGGY: Here are some problems to test your theory about the bug. What is: 21 +39 Team: 51 BUGGY: That’s not the bug I have. Using my bug: 21 +39 15 Try giving me more examples ... 51 99 68 Team: +1707 +99 + 9 21 36 23 BUGGY: Team: Got the bug! The student is adding all the digits together. BUGGY: Here are some problems to test your theory about the bug. What are: 33 1091 8 28 90 +99 + 60 +34 +70 + 6 17 15 17 15 Team: 24 BUGGY: Very good. My description of the bug is: The student always sums up all the digits, with no regard to columns. Abbildung 7: Beispiel für ein BUGGY-Spiel mit Lehramtsstudenten (nach Brown und Burton, 1978) 1.2.2 DEBUGGY Fünf Jahre später stellte Burton (1982) diagnostische Erweiterungen zu BUGGY vor. Anders als BUGGY, das durch ein künstliches prozedurales Netzwerk Schülerrechnungen simuliert, war das Ziel dieser Entwicklungen, aus realen Schülerrechnungen ein individuelles prozedurales Netzwerk zu erzeugen. Dieses stellt dann eine Diagnose der Kenntnisse bzw. Fehlvorstellungen des Schülers dar. Burton unterscheidet hierbei mit DEBUGGY und IDEBUGGY zwei verschiedene Versionen. DEBUGGY ist auf die Diagnose von bereits vollständig vorliegenden Sammlungen von Schülerrechnungen ausgelegt, wie sie z.B. nach Tests vorliegen. Burton spricht bei diesem Einsatzgebiet 10 vom Offline-Betrieb. Im Gegensatz dazu ist die Online-Version IDEBUGGY für den interaktiven Diagnoseeinsatz in einem Lernsystem konzeptioniert. Die naheliegende Idee ist es, systematisch individuelle prozedurale Netzwerke zu erzeugen und dann zu überprüfen, ob diese die vorliegenden Schülerrechnungen erklären. Viele Schülerrechnungen sind nur durch das gleichzeitige Auftreten verschiedener fehlerhafter Strategien zu erklären. So zeigte VanLehn (1982) für das Gebiet der in DEBUGGY behandelten Subtraktion natürlicher Zahlen, daß sich bei 37% der von ihm untersuchten Schüler mehrere Fehlerstrategien diagnostizieren lassen. Die Möglichkeiten der Diagnose sind daher i.A. zu komplex, um durch eine vollständige Suche realisiert werden zu können. Für die Diagnose von mehreren fehlerhaften Strategien wurde beim Entwurf von DEBUGGY daher unterstellt, daß sich jede einzelne fehlerhafte Strategie auch als einzelner Fehler in mindestens einer Rechnung diagnostizieren läßt. Durch die Kombination dieser einzelnen Strategien kann DEBUGGY entsprechende mehrfach fehlerhafte Strategien diagnostizieren. Sofern die Fehlerstrategien der Schüler innerhalb eines Tests konsistent bleiben, kann DEBUGGY etwa zwei Drittel der auftretenden fehlerhaften Rechnungen diagnostizieren. Das skizzierte Verfahren ist für den gewünschten Einsatz in einem interaktiven Lernsystem nicht verwendbar, da eine Menge von fehlerhaften Rechnungen zunächst vorliegen muß, aber in einem Lernsystem die Schülerlösungen der Übungsaufgaben einzeln nacheinander eintreffen. Für die interaktive Version IDEBUGGY wurde daher von Burton ein anderes, aber verwandtes Konzept gewählt. IDEBUGGY erzeugt zuerst eine Menge von Hypothesen über die Fehlerstrategien des Schülers und testet sie anschließend an der Durchführung einer Aufgabe. Läßt sich mit keiner Hypothese das Schülerverhalten diagnostizieren, wählt IDEBUGGY eine der folgenden Aktionen: • Erzeugen einer Aufgabe, die die Fehler in der aktuellen Hypothesenmenge trennt, • Hinzunahme sehr seltener Fehler in die Hypothesenmenge, • Erzeugen neuer Hypothesen durch Verbindung von aktuellen Hypothesen, • Wiederaufnahme ausgeschlossener Hypothesen, • Aufgeben. IDEBUGGY ist jedoch nie in einem interaktiven Lernsystem eingesetzt worden. Burton wollte mit IDEBUGGY vielmehr die unterschiedlichen Techniken zur Diagnose zwischen Online- und Offline-Betrieb verdeutlichen. Aufsetzend auf DEBUGGY entstanden eine Reihe von Arbeiten aus dem 11 kognitionswissenschaftlichem Bereich, insbesondere die bekannte „Repair-Theory“ von VanLehn (1982, 1989), die versucht, die Gründe für Fehler zu erklären. 1.2.3 LMS/PIXIE Mit LMS (Leeds Modeling System) stellten Sleemann und Smith (1981) einen anderen Ansatz zur Diagnose von Rechenstrategien im Bereich der Algebra vor. Ähnlich wie BUGGY, arbeitet auch LMS mit einer Zerlegung in Teilfertigkeiten, die durch alternative oder fehlerhafte Varianten ersetzt werden können. Hierbei dient jedoch nicht ein prozedurales Netzwerk sondern eine Menge von Regeln als Repräsentationsform (Abbildung 8a, S. 14). Dabei bilden „condition-set“ die linke und „action“ die rechte Seite der Regel. Eine Ordnung (level) dient zur Spezifikation der verschiedenen Prioritäten der Operatoren. Fehlerhafte Rechenstrategien werden durch entsprechende alternative Regeln (mal-rules) modelliert und durch vorangestelltes „M“ gekennzeichnet (Abbildung 8b). Zwei Paare von typischen korrekten und fehlerhaften Rechnungen sind in Abbildung 8c gezeigt. Dabei wird beim ersten Paar der Fehler durch die Ordnung der Regeln und beim zweiten durch den Einsatz einer fehlerhaften Regel repräsentiert. Durch die Kombination der verschiedenen Regeln ergibt sich bei LMS ebenfalls ein Diagnoseproblem, das nur durch vollständige Suche gelöst werden könnte. Anfängliche Ansätze in Sleemann und Smith (1981), einmal als korrekt erkannte Fertigkeiten auch in Zukunft als korrekt anzunehmen, scheiterten. Es stellte sich heraus, daß bei komplexeren Aufgaben auch bereits bekannte korrekte Teilfertigkeiten wieder durch fehlerhafte Strategien ersetzt werden. Um dennoch eine Diagnose in einem interaktiven Lernsystem realisieren zu können, verfolgte Sleeman (1982, 1983) daher später einen anderen Ansatz: Er berechnete und speicherte für eine feste Menge von korrekten und fehlerhaften Regeln und eine vorgegebene Menge von Aufgaben verschiedene mögliche Schülerrechnungen. In der Online-Diagnose braucht die Schülerantwort dann nur noch mit den gespeicherten Lösungen verglichen zu werden. Im Vergleich zu BUGGY zeichnet sich LMS im wesentlichem durch zwei Unterschiede aus: Zum einem durch die Darstellung der korrekten und fehlerhaften Rechenstrategien durch Regeln und zum anderem durch die Aufteilung der Diagnose auf zwei Phasen. Je nach Lernsystem kann dieser Ansatz jedoch wesentliche Nachteile haben. So ist das Lernsystem bei der Auswahl der Übungsaufgaben an die vorgegebenen Aufgabenmengen gebunden, was insbesondere in Lehr-Lern-Systemen verhindert, daß Lehrer die gestellten Aufgaben adaptieren können. Das Lernsystem verliert zudem erheblich an Flexibilität: Verläßt ein Schüler bei einem Zwischenergebnis den vorhergesehenen Bereich, so können alle weiteren Rechenschritte nicht mehr diagnostiziert werden. Auch kann bei der Berechnung der Diagnosen im Lernsystem verfügbares Wissen über die Leistungen des Schülers 12 nicht verwendet werden – die Vergrößerung der Suchtiefe für vom Schüler bekannte individuelle Rechenstrategien ist somit nicht möglich. Zudem ist für die Speicherung der Diagnosen eine erhebliche Datenmenge zu reservieren. a. Rules for the algebra domain (evaluate form and slightly stylized) RULE NAME LEVEL CONDITION-SET ACTION FIN2 1 (SHD X = M/N) (SHD (M/N)) or (SHD [evaluated]) SOLVE 2 (SHD M*X = N) (SHD (X = N/M) or (SHD INFINITY) ADDSUB 3 (lhs M +|– N rhs) (lhs [evaluated] rhs) MULT 4 (lhs M*N rhs) (lhs [evaluated] rhs) XADDSUB 5 (lhs M*X +|– N*X rhs) (lhs (M +|– N)*X rhs) NtoRHS 6 (lhs +|– M = rhs) (lhs = rhs –|+ M) REARRANGE 7 (lhs +|– M +|– N*X rhs) (lhs +|– N*X +|– M rhs) XtoLHS 8 (lhs = +|– M*X rhs) (lhs –|+ M*X = rhs) M,N and P are integers; lhs, rhs are general patterns (which may be null); +|– means either + or – may occur; SHD indicates the String Head b. Some mal-rules for the algebra domain (using the same conventions as above) RULE NAME LEVEL CONDITION-SET ACTION M.SOLVE 2 (SHD M*X=N) (SHD X = M/N) or (SHD INFINITY) M1.NtoRHS 6 (lhs +|– M = rhs) (lhs = rhs +|– M) M2.NtoRHS 6 (lhs1 +|– M lhs2 = rhs) (lhs1 +|– lhs2 = rhs +|– M) M.XtoLHS 8 (lhs = +|– M*X rhs) (lhs +|– M*X rhs) M1.BRA 10 (lhs M * <N*X +|– P> rhs> (lhs M*N*X +|– P rhs) M2.BRA 10 (lhs M * <N*X +|– P> rhs> (lhs M*N*X +|– M +|– P rhs) c. Pairs of correct and “buggy” models executing typical task (The first line gives the initial state and all subsequent lines give the rule that fires, and the resulting state.) 2*X=3*4+5 2*X =3*4+5 MULT 2 * X = 12 + 5 ADDSUB 2*X=3*9 ADDSUB 2 * X = 17 MULT 2 * X = 27 SOLVE X = 17/2 SOLVE X = 27/2 FIN2 (17/2) FIN2 (27/2) i) Shows (MULT ADDSUB SOVLE FIN2) and (ADDSUB MULT SOLVE FIN2) solving 2 * X = 3 * 4 + 5. 2*X+5=9 2*X+5=9 NtoRHS 2*X=9–5 M.NtoRHS 2*X=9+5 ADDSUB 2*X=4 ADDSUB 2 * X = 14 SOLVE X = 2/1 SOLVE X = 7/1 FIN2 (2) FIN2 (7) ii) Shows (NtoRHS ADDSUB SOLVE FIN2) and (M.NtoRHS ADDSUB SOLVE FIN2) solving 2 * X + 5 = 9. 13 Abbildung 8: Korrekte und fehlerhafte Regeln in LMS für die Algebra (nach Sleeman, 1983) 14 LMS wurde von Sleeman (1987) später unter dem Namen PIXIE weiterentwickelt. PIXIE zeichnet sich insbesondere dadurch aus, daß bedingt Regeln auch entgegen ihrer eigentlichen Richtung angewendet werden können, so daß die Diagnose zusätzlich von der Schülerantwort ausgehen kann. Dieser Ansatz ist insbesondere dann wichtig, wenn das System selbständig Regeln erschließen und lernen soll. 1.3 Überblick In dieser Einführung wurde zu Gunsten einer Einordnung in das interdisziplinäre Arbeitsgebiet auf eine Einordnung in jede der beteiligten Einzeldisziplinen – Informatik, Fachdidaktik Mathematik, Psychologie und Kognitionswissenschaft – bewußt verzichtet. In diesem Kontext sei insbesondere auf die noch nicht erwähnten Monographien von Anderson (1976, 1983) und Hoppe (1987) verwiesen. In Kapitel 2 werden die für den vorgestellten Diagnosealgorithmus zentralen Begriffe eingeführt. Der hierdurch neu entwickelte formale Rahmen zur Darstellung der von den Schülern verwendeten korrekten und fehlerhaften Rechenstrategien orientiert sich zunächst an Konzepten der Termersetzung. Entsprechend führt Abschnitt 2.1 zuerst in grundlegende Begriffe der Termersetzung (vgl. Dershowitz, Jouannaud, 1990, Klop, 1992) ein. Die bekannten Definitionen werden bereits hier um die sogenannte Überladung von Operatoren, Variablen und Konstanten erweitert. Abschnitt 2.2 erweitert das Konzept der Termersetzung zu dem neuen Konzept des hier vorgeschlagenen Diagnosesystems. Es werden sowohl bereits bekannte Erweiterungen der Termersetzung (Prioritätsfunktion) wie auch das neue spezifische Konzept der Anwendungskondition verwendet. Das Kapitel schließt in Abschnitt 2.2.4 mit einem ausführlichem Beispiel, in dem alle eingeführten Konzepte noch einmal ausführlich dargestellt werden. Da der vorgestellte Diagnosealgorithmus insbesondere von dem Einsatz in einem Lernsystem geprägt ist, stellt die verfügbare Rechenzeit eine wesentliche kritische Größe dar. Kapitel 3 beginnt daher mit einer Analyse der zur Verfügung stehenden Zeit. Durch die Aufteilung der Diagnose in zwei Phasen, deren erste parallel zur Rechnung des Schülers ausführbar ist, kann wertvolle Rechenzeit gewonnen werden. Somit können bis zu mehreren Milliarden Diagnosen berücksichtigt werden. Nach der vollständigen Eingabe der Schülerlösung benötigt dann die zweite Phase i.A. weniger als 200 Millisekunden zur abschließenden Auswahl möglicher Diagnosen. Abschnitt 3.1 stellt die erste Phase des Diagnosealgorithmus vor. Zur Verdeutlichung der Entwurfsentscheidungen wird der Algorithmus schrittweise entwickelt. Dabei wird Wert auf didaktisch oder psychologisch motivierte Steuerungs- und Beschränkungsmechanismen gelegt. 15 Im Vergleich zu den bisher bekannten Programmen wird der vorgeschlagene Diagnosealgorithmus durch die Anwendungen der Prinzipien der dynamischen Programmierung (Abschnitt 3.2) und der komprimierten Speicherung (maximale Strukturteilung) der berechneten Diagnosen (Abschnitt 3.4) entscheidend beschleunigt. Abschnitt 3.5 beschreibt die Algorithmen für die zweite Phase der Diagnose. Auch in der zweiten Phase werden dynamische Konzepte zur Beschleunigung eingesetzt. Die Abschnitte 3.6 und 3.7 stellen mit der „Kontextkondition“ und den „Plänen“ weitere Steuerungsmechanismen zur Effizienzsteigerung vor. Dem vorgeschlagenen Algorithmus entsprechend wurde das Diagnoseprogramm BugFix entwickelt. Sein Design und seine Implementierung werden in Kapitel 4 vorgestellt. BugFix ist eine Diagnosekomponente mit Entwicklungs- und Testumgebung. Ein multimediales Lernprogramm basierend auf BugFix steht am Institut für Mathematik und Angewandte Informatik der Universität Hildesheim kurz vor der Fertigstellung. Domänenspezifisches Wissen für korrekte und fehlerhafte Rechenstrategien, z.B. Arithmetik, Bruchrechnung, Termumformung oder Differentialrechnung kann ebenfalls mit der Entwicklungsumgebung von BugFix konstruiert werden. Hierzu stellt BugFix die Sprache „BugFix Spezifikation“ (BFS), die in Abschnitt 4.1 vorgestellt wird, zur Verfügung. Abschnitt 4.2 bzw. Abschnitt 4.5 beschreiben das Design und die Implementierung der ersten bzw. zweiten Phase des Diagnosealgorithmus von BugFix. Kapitel 5 beschreibt zwei empirische Untersuchungen mit Schülern, die im Rahmen dieser Arbeit durchgeführt wurden. Zur Demonstration von BugFix wurde eine beispielhafte BugFix Spezifikation für die Bruchrechnung entwickelt. Bei der Modellierung der grundlegenden Diagnoseregeln wurde auf didaktische Untersuchungen von Hart (1981), Lörcher (1982), Daubert und Gerster (1983), Gerster und Grevsmühl (1983), Tappe u.a. (1984), Hasemann (1985), Payne (1986) und Padberg (1986, 1995, 1996) zurückgegriffen. Ergänzend wurde eine dreiteilige empirische Untersuchung mit über 500 Schülern der siebten Klassenstufe durchgeführt. Das Ergebnis sind über 6000 fehlerhafte oder unvollständige Rechnungen, die als umfangreiches Testmaterial für den Diagnosealgorithmus dienten (Abschnitt 5.1 und Anhang C). Zur Bestimmung der in der ersten Phase der Fehlerdiagnose zur Verfügung stehenden Zeit wurde zusätzlich eine Testreihe mit 30 Schülern einer sechsten Klasse aufgenommen. Die von den Schülern für die Rechnung und die anschließende Eingabe in den Rechner benötigten Zeiten wurde gestoppt und anschließend ausgewertet (Abschnitt 5.2). 16 Im Kapitel 6 werden die Ergebnisse der Arbeit in Hinblick auf sich anschließende Forschungsarbeiten diskutiert. Die aus der genannten empirischen Untersuchung sich ergebenden didaktischen und methodischen Konsequenzen für einen zukünftigen Mathematikunterricht liegen außerhalb des Informatik-Rahmens der vorliegenden Arbeit. Als Anhang A ist das vorgeschlagene Diagnosesystem mit allen korrekten und fehlerhaften Rechenstrategien, die für die Bruchrechnung relevant sind, beigefügt. Anhang B enthält Darstellungen der Entwicklung der berechneten Diagnosen, des Speicherbedarfs usw. im Zeitverlauf. Die in der genannten empirischen Untersuchung erfaßten Rechenstrategien sind in Rechengraphen, einer kompakten graphischen Darstellung der Rechenwege einer größeren Gruppe von Schülern, dokumentiert (Anhang C). Zu jedem Rechengraphen gehört eine Tabelle der von BugFix generierten Diagnosen der von den Schülern verwendeten Rechenstrategien. 17 2 Modellierung von Rechenstrategien In diesem Kapitel sollen die Grundlagen der vorgeschlagenen computergestützten Fehlerdiagnose beschrieben werden. Dazu wird zuerst ein formaler Rahmen zur Darstellung der von den Schülern verwendeten korrekten und fehlerhaften Rechenstrategien geschaffen. Die Grundidee ist, die Rechenstrategien ähnlich wie Ersetzungsregeln eines Termersetzungssystems zu modellieren. Viele der zu diesem Zweck eingeführten grundlegenden Definitionen stützen sich dabei auf entsprechende Definitionen aus dem Bereich der Termersetzung (vgl. Dershowitz, Jouannaud, 1990; Klop, 1992; Avenhaus, 1995). Im Unterschied zu diesen Quellen erlauben die folgenden Definitionen jedoch die sogenannte Überladung von Operatoren, wie man sie etwa bei der algebraischen Spezifikation findet (vgl. Ehrich, Gogolla, Lipeck, 1989, Loeckx, Ehrich, Wolf, 1996 oder mit anderer Notation: Ehrig, Mahr, 1985). Aufbauend auf diesen Definitionen wird dann anstelle der Ersetzungsregel der neue Begriff der Diagnoseregel eingeführt, deren Anwendungskondition weit über die Funktion eines „Wächters“ hinausgeht. So ermöglicht die Anwendungskondition die Erweiterung der Einsetzung vor der Substitution der Variablen der rechten Regelseite und somit z.B. direkte Rechenoperationen in der Form a + b → c , wobei c das Ergebnis der Addition ist. In Verbindung mit einer Prioritätsfunktion (Friš, 1968, vgl. auch Salomaa, 1973/78) bilden die Diagnoseregeln ein Diagnosesystem, das Rechenstrategien von Schülern modelliert. Die Definitionen werden jeweils anhand fortlaufender Beispiele erläutert. Ergänzend sei auf Abschnitt 2.2.4 (S. 29f) verwiesen, in dem das Zusammenspiel der eingeführten Begriffe an einem größeren Beispiel verdeutlicht wird. 2.1 Grundlegende Definitionen Eine endliche, nicht-leere Menge von Symbolen A wird als Alphabet bezeichnet. Mit A* sei die Menge aller endlichen Folgen von Symbolen aus A gekennzeichnet. Diese beinhaltet insbesondere das leere Wort ε . Es ist A+ := A* − {ε } . Ist für eine Menge von Mengen B eine Indexmenge I und eine Abbildung gegeben, die jedem Index i ∈ I eine Menge Bi ∈ B zuordnet, so wird B = {Bi }i∈I als I -indizierte Mengenfamilie bezeichnet. Ist die Indexmenge I = I 1 × … × I n so schreibt man vereinfacht B = {Bi1 ,…,in }i1∈I1 ,..,in ∈I n . Es ist ∪ B := ∪ Bi und ∩ B := ∩ Bi . i∈ I i∈ I 18 2.1.1 Terme Wie bereits in der Einleitung zu diesem Kapitel erwähnt, sollen die Rechenstrategien der Schüler ähnlich wie Ersetzungsregeln eines Termersetzungssystems modelliert werden. Als Grundlage hierfür muß eine Darstellung für Terme vereinbart werden. Die Signatur gibt dabei u.a. an, welche Symbole als Operatoren bzw. Konstanten der Terme verwendet werden sollen. Die folgenden Definitionen werden dabei die Syntax festlegen. In allen Beispielen wird jedoch zur besseren Verständlichkeit die mit den Bezeichner der Operatoren leicht zu assoziierende Semantik unterstellt. Definition 1 (Signatur) Eine Signatur ist eine Tupel Σ = ( S , Ω) . Die Elemente der Menge S werden als Sorten bezeichnet. Ω = {Ω w,s }w∈S * ,s∈S ist eine S * × S -indizierte Mengenfamilie. Die Elemente aus Ω w,s werden als Operatoren bezeichnet. Ist f ∈ Ω w, s mit w = s1 … sn , so werden s1 bis sn als Argumentsorten und s als Ergebnissorte bezeichnet. Alternativ schreibt man auch f : s1 × … × sn → s . Die leere Liste der Argumentsorten wird mit ε bezeichnet. Man schreibt entsprechend Ωε , s oder verkürzt Ω s bzw. alternativ f :→ s . Gilt f :→ s , so heißt f Konstante der Sorte s ∈ S . Bemerkung: Häufig findet sich für die Signatur eine Definition als Tripel Σ = ( S , Ω,τ ) . Dabei ist S eine Menge von Sorten und Ω eine Menge von Operatoren. Die Funktion τ : Ω → S + heißt Aritätsfunktion und ordnet jedem Operator Argumentsorten und eine Ergebnissorte zu, z.B. τ (add ) → nat nat nat für die Addition auf der Menge der natürlichen Zahlen. Für die Addition von Brüchen müßte ein anderer Operator verwendet werden. Obige Definition 1 erlaubt im Unterschied dazu das sogenannte „Überladen“ von Operatoren. So kann der Operator add sowohl für die Addition auf der Menge der natürlichen Zahlen als auch für die Addition auf der Menge der Brüche verwendet werden. Beispiel: Für ein fortlaufendes Beispiel wird die Signatur Σ Bsp = ( S , Ω) eingeführt. Dabei sei die Menge der Sorten mit S = {nat , frac} und die Menge der Operatoren Ω = {{0,1,2,3,4}nat ,{add }nat nat , nat ,{add } frac frac , frac ,{bruch}nat nat , frac } gegeben. 19 Definition 2 (Arität) Sei Σ = ( S , Ω) eine Signatur und f ∈ Ω w, s das Symbol eines Operators für w ∈ S ∗ , s ∈ S . Dann heißt ( w, s ) Arität { Ω( f ) := (w′, s ′) ∀w′ ∈ S ∗ , s ′ ∈ S : f ∈ Ω w′, s′ von } f und die Menge Aritätenmenge von f . Ist (ε , s ) ∈ Ω( f ) schreibt man verkürzt ( s ) ∈ Ω( f ) . Gilt Ω( f ) > 1 , so heißt der Operator f überladen. Beispiel: Sei Σ Bsp wie oben. Es ist Ω(add ) = {(nat nat , nat ), ( frac frac, frac )} = 2 , d.h. der Operator add ist überladen. Definition 3 (Terme) Sei Σ = ( S , Ω) eine Signatur. Die Menge der Terme der Sorte s ∈ S über Σ wird als TΣ , s bezeichnet und ist induktiv definiert: i) Wenn f :→ s , so ist f ∈ TΣ , s ii) Wenn f : s1 × … × sn → s und ∀1 ≤ i ≤ n : ti ∈ TΣ , si , so ist f (t1 ,…, tn ) ∈ TΣ , s iii) Es gibt keine weiteren Terme der Sorte s in TΣ , s . TΣ = {TΣ , s }s∈S bezeichnet die S -indizierte Mengenfamilie aller Terme über Σ . Beispiel: Die folgenden Beispiele sind Terme über der Signatur Σ Bsp = ( S , Ω) : add (1,3) ist der Term der Sorte nat add (bruch(1,2), bruch(3,4)) ist Term der Sorte frac Die Definition der Terme führt eine Präfix-Notation für Terme ein. In einigen Beispielen wird zur besseren Darstellung jedoch auch die übliche Infix-Notation verwendet: z.B. 3 + 5 statt add (3,5) . Definition 4 (Variable) Sei Σ = ( S , Ω) eine Signatur und X = {X s }s∈S eine S -indizierte Mengenfamilie mit ∪ X ∩ ∪Ω = ∅ . Die Elemente x ∈ X s mit s ∈ S heißen Variablen der Sorte s . Die Signatur Σ( X ) := ( S , Ω ∪ X ) mit (Ω ∪ X )ε , s = Ωε , s ∪ X s und (Ω ∪ X )w, s = Ω w, s für alle s ∈ S und alle w ∈ S + heißt Signatur mit Variablen. 20 Definition 4 (Variable, Fortsetzung) Die Terme TΣ ( X ) über Σ( X ) sind die Terme mit Variablen, die sich entsprechend Definition 3 aus den Operatoren aus Σ und den Variablen aus X bilden lassen. Ist t ∈ TΣ ( X ) eine Term, so bezeichnet var (t ) die Menge der Variablen, die in t vorkommt. Beispiel: Für die Signatur Σ Bsp = ( S , Ω) seien die Variablen X = {{x, y, z}nat ,{x, b} frac } gegeben. Die Signatur Σ Bsp ( X ) = ( S , Ω ∪ X ) ist mit der vereinigten Menge Ω ∪ X = {{0,1,2,3,4, x, y, z}nat ,{x, b} frac ,{add }nat nat , nat ,{add } frac frac , frac ,{bruch}nat nat , frac } gegeben. Der Term t1 = add (b, bruch( x,1)) ist aus TΣ ( X ) mit var (t1 ) = {x, b} . 2.1.2 Termersetzung Anders als bei algebraischen Spezifikation üblich (vgl. z.B. Loeckx, Ehrich, Wolf, 1996) dürfen nach diesen Definitionen auch Variablen überladen werden (z.B. die Variable x im obigen Beispiel). Für x ∈ ∪ X ist durch Ω(x) die entsprechende Aritätenmengen von x gegeben. Für die Signatur Σ Bsp ( X ) ist z.B. Ω( x) = {(nat ), ( frac )}. Die Überladung von Variablen ist jedoch nicht unproblematisch, wenn eine Variable durch einen anderer Term substituiert werden soll. So existiert keine gültige Substitution für x in den Term add ( x, bruch( x,1)) . Bei dem in den folgenden Definitionen eingeführten Konzept zur Einsetzung und Substitution von Variablen sind derartige Unterschiede in der Arität der zu ersetzenden Variablen zu berücksichtigen. Definition 5 (Einsetzung) Sei Σ = ( S , Ω) eine Signatur mit Variablen X . Eine Funktion σ : ∪ X → TΣ ( X ) heißt Einsetzung, falls i) σ ( x) ∈ TΣ ( x ), s für ( s) ∈ Ω( x) (Erhaltung einer definierten Arität) ii) σ ( x) ≡ x für fast alle x ∈ ∪ X Die Menge alle Einsetzungen wird mit Ξ(Σ, X ) oder kurz Ξ bezeichnet. Die endliche Menge dom(σ ) ist definiert durch dom(σ ) := {x ∀x ∈ X :σ ( x) ≡ / x} . Falls dom(σ ) = {x1 ,…, xn } und σ ( xi ) = ti schreibt man vereinfacht σ = {x1 ← t1 ,…, xn ← tn } . 21 Beispiel: Sei Σ Bsp ( X ) wie im letzten Beispiel. Sei σ eine Einsetzung mit falls v = x ⎧1 ⎪ σ (v) = ⎨bruch(2,3) falls v = b ⎪v sonst ⎩ Dann ist dom(σ ) = {x, b} und man schreibt verkürzt σ = {x ← 1, b ← bruch(2,3)} . Definition 6 (Substitution, Instanz) Sei Σ = ( S , Ω) eine Signatur mit Variablen X und σ eine Einsetzung. Die Funktion σ ∗ : TΣ ( X ) → TΣ ( X ) heißt Substitution mit Einsetzung σ , falls gilt: i) σ * ( x) = σ ( x) , falls x ∈ ∪ X (Einsetzung fortsetzen) ii) σ * ( f ) = f , falls f :→ s und f ∉ ∪ X (Erhaltung von Konstanten) ( ) iii) σ ∗ ( f (t1 ,…, tn )) = f σ ∗ (t1 ),…,σ ∗ (tn ) , falls n > 0 Sei t ∈ TΣ ( X ) ein Term, dann heißt σ ∗ (t ) Instanz von t und man schreibt verkürzt σ (t ) . Ist σ ∗ (t ) ∈ TΣ ( X ) so nennt man die Instanz gültig. Beispiel: Sei σ ∗ die Substitution mit Einsetzung σ aus dem letzten Beispiel. Für den Term t1 = add (b, bruch( x,1)) ist σ (t1 ) = add (bruch(2,3), bruch(1,1)) eine gültige Instanz. Für t2 = add ( x, bruch( x,1)) existiert keine Einsetzung σ 2 mit x ∈ dom(σ 2 ) , so daß σ 2 (t2 ) eine gültige Instanz wäre. Die Existenz einer gültigen Instanz ist abhängig von der Signatur. Wäre Ω(add ) = {(nat nat , frac ), ( frac frac, frac ), (nat frac, frac ), ( frac nat , frac )} , so wäre σ (t2 ) = add (1, bruch(1,1)) eine gültige Instanz von t2 . Eine Ersetzungsregel im Sinn der Termersetzung ist ein Paar (l , r ) von Termen, kurz l → r , mit var (r ) ⊆ var (l ) . Sie ist auf einen Term u anwendbar (man sagt auch u wäre mit der Ersetzungsregel reduzierbar), falls ein Teilterm von u mit der Instanz einer linken Regelseite übereinstimmt. In diesem Fall kann der Teilterm durch die rechte Regelseite ersetzt werden. 22 Definition 7 (Kontext) Sei Σ = ( S , Ω) eine Signatur mit Variablen X . Sei { } able, d.h. ∉ ∪ X . Es sei X = X s Vorkommen der Platzhaltervariablen Die Menge alle Kontexte aus TΣ ( X ) s∈S eine neue, ausgezeichnete Platzhaltervari- := {X s ∪ { }}s∈S . Jeder Term aus TΣ ( X ) , der genau ein enthält, heißt Kontext und wird durch C[ ] bezeichnet. wird mit C bezeichnet. Sei C[ ] ein Kontext, t ∈ TΣ ( X ) ein Term und σ eine Einsetzung mit σ = { ← t} . Dann schreibt man statt σ (C[ ]) kurz C[t ] . Ist C[t ] eine gültige Instanz, so heißt C[ ] gültiger Kontext für t und t Teilterm von C[t ] . Beispiel: Sei Σ Bsp ( X ) wie in den letzten Beispielen. C[ ] = add ( , bruch( x,2)) ist gültiger Kontext für bruch(1,2) und es ist C[bruch(1,2)] = add (bruch(1,2), bruch( x,2)) . C[ ] ist jedoch kein gültiger Kontext für 1 , da (nat frac, frac) ∉ Ω(add ) . Die Reduktion eines Terms u beinhaltet die Suche nach einem Teilterm t mit u = C[t ] , einer Ersetzungsregel l → r in R und einer Einsetzung σ mit σ (l ) = t und gültigen Kontext C[σ (r )] . 2.2 Diagnosesysteme Aufbauend auf der Termersetzung soll in den nächsten Abschnitten ein Ersetzungssystem zur Fehlerdiagnose entwickelt werden, das als Diagnosesystem bezeichnet werden soll. Das Diagnosesystem unterscheidet sich von einem Termersetzungssystem in erster Linie in der Reduktionsrelation, die beim Diagnosesystem noch durch eine zusätzliche Anwendungskondition bedingt wird. 2.2.1 Diagnoseregeln Wenn Kinder beginnen arithmetische Fertigkeiten, etwa die Addition, zu erlernen, beginnen sie in der Regel mit einfachen Abzählstrategien, häufig mit Hilfe der Finger. Viele dieser Strategien ließen sich durch Ersetzungsregeln modellieren. Im Laufe der Zeit verändern sich die Rechenstrategien der Schüler (vgl. Siegler, Jenkins, 1989, Siegler 1996), z.B. bei der Addition über Strategien mit minimaler Anzahl von Zählschritten zu Erinnerungsstrategien. Letztere müßten durch Ersetzungsregeln der Form a + b → c beschrieben werden, wobei c das Ergebnis der korrekten Addition von a und b sein müßte. Derartige Ersetzungsregeln sind jedoch in den Konzepten der Termersetzung nicht möglich. Auch müssen Rechenstrategien wie a b → a :k b:k , wobei k einer der gemeinsamen Teiler von a und b ist, realisierbar sein. In einem derartigen Fall muß eine Regel mehrere verschiedene Reduktionsmöglichkeiten beschreiben können. Das Regelkonzept muß auch berücksichtigen, daß 23 eine Rechenstrategie nicht immer anwendbar ist, so darf a : b → c mit c als Ergebnis der Division nur anwendbar sein, wenn b ≠ 0 ist (Wächter-Konzept). Für die Fehlerdiagnose wird die Ersetzungsregel um eine Anwendungskondition erweitert: Definition 8 (Anwendungskondition) Sei Σ = ( S , Ω) eine Signatur mit Variablen X und σ eine Einsetzung. Eine Funktion Ac , die die Einsetzung σ auf eine Familie von Einsetzungen Ac(σ ) abbildet, d.h. Ac : Ξ → {Ξ i }i∈I Ac , I Ac endlich, heißt Anwendungskondition, wenn für alle σ i ∈ Ξ, i ∈ I Ac gilt: i) σ i ist eine Einsetzung ii) σ ( x) = σ i ( x) für alle x ∈ dom(σ ) (Bestehende Einsetzung bleibt erhalten) iii) dom(σ i ) = dom(σ j ) für alle j ∈ I Ac ( dom ist für alle Einsetzungen konstant) Ist Eigenschaft ii) für alle i ∈ I Ac erfüllt, schreibt man kurz σ ⊆ Ac(σ ) . Bemerkung: Mit Definition 8 ist zunächst nur die Bedeutung der Anwendungskondition definiert. Die Darstellung der Anwendungskondition in einem Diagnoseprogramm ist abhängig von der gewählten Implementierung. In den folgenden Beispielen wird die Darstellung des Diagnosesystems BugFix verwendet. BugFix stellt Anwendungskonditionen als Terme dar (siehe auch Abschnitt 4.1.4, S. 68). Beispiel: Sei Σ = ({nat , frac}, {{1,2,4,8, a, b, t}nat , {div}nat nat , nat , {bruch}nat nat , frac }) eine Signatur mit Variablen {a, b, t}nat . Sei r1 die Ersetzungsregel div(a, b) → t . So läßt sich mit Hilfe der Anwendungskondition die „ div “ genannte Operation durchführen. Sei etwa div(8,4) gegeben, dann wird die Einsetzung σ = {a ← 8, b ← 4} durch die Anwendungskondition erweitert zu σ 1 = {a ← 8, b ← 4, t ← 2} . div(8,4) → 2 ist eine Instanz der Ersetzungsregel r1 . Sei in einem weiteren Beispiel die Signatur Σ wie gehabt und r2 eine Ersetzungsregel mit bruch(a, b) → bruch(div(a, t ), div(b, t )) und ein Term bruch(4,8) gegeben. Für die Einsetzung σ = {a ← 4, b ← 8} könnte eine Anwendungskondition lauten: {{a ← 4, b ← 8, t ← 2}1 , {a ← 4, b ← 8, t ← 4}2 } . Zusammen mit der Anwendungskondition realisiert die Ersetzungsregel so das Kürzen eines Bruchs durch die gemeinsamen echten Teiler von Zähler und Nenner. 24 Durch die Erweiterung der klassischen Ersetzungsregel mit der so definierten Anwendungskondition sind die oben beschriebenen Anforderungen realisierbar. Zur besseren Unterscheidung der verschiedene Konzepte wird der Begriff Diagnoseregel eingeführt. Definition 9 (Diagnoseregel) Sei Σ = ( S , Ω) eine Signatur mit Variablen X und Ac eine Anwendungskondition. Ein Tripel (l , r , Ac ) heißt Diagnoseregel (kurz Regel) über Σ( X ) , falls gilt i) l ∈ TΣ ( X ), sl , s l ∈ S , l ∉ ∪ X , ii) r ∈ TΣ ( X ),sr , s r ∈ S und iii) für alle Einsetzungen, σ ∈ Ξ deren Instanz σ (l ) ∈ TΣ ( x ), sl gültig ist, gilt entweder Ac(σ ) = ∅ oder var (r ) ⊆ dom(σ i ) für alle σ i ∈ Ac(σ ) . Die Diagnoseregel (l , r , Ac ) wird auch als l → r Ac oder als name : l → r Ac geschrieben, falls eine Benennung sinnvoll ist. Ist Ac(σ ) = {σ }, schreibt man kurz l → r . Benannte Diagnoseregeln können auch kurz als name geschrieben werden. Entsprechend zum Termersetzungssystem kann nun ein Diagnosesystem definiert werden. Wie man es auch in anderen Erweiterungen von Ersetzungssystemen findet, verfügt auch ein Diagnosesystem über eine Prioritätsfunktion (Friš, 1968, vgl. auch Salomaa, 1973/78), die steuert, welche Regeln angewendet werden dürfen. Bei einem Diagnosesystem kann die Wahl der Prioritätsfunktion didaktisch motiviert werden (siehe Abschnitt 2.2.2). Definition 10 (Diagnosesystem) Ein Diagnosesystem ist ein Tupel D = (Σ, X , R, p) . Σ = ( S , Ω) ist eine Signatur mit Variablen X . R ist eine endliche Menge von Diagnoseregeln über Σ( X ) . Mit p : R → IN sei eine Prioritätsfunktion gegeben. Bemerkung: Die klassische Definition eines Termersetzungssystems ist als Spezialfall in der Definition des Diagnosesystems enthalten. 25 2.2.2 Reduktionsrelation eines Diagnosesystems Aufbauend auf den Definitionen der Anwendungskonditionen und der Diagnoseregel wird mit der folgenden Definition die Reduktionsrelation für Diagnosesysteme neu gefaßt: Definition 11 (Reduktionsrelation) Sei D = (Σ, X , R, p) ein Diagnosesystem, r : u → v Ac eine Diagnoseregel aus R , σ eine Einsetzung und σ i ∈ Ac(σ ) mit i ∈ I Ac . Sind σ (u ) und σ i (v) gültige Substitutionen, so nennt man (σ (u ),σ i (v)) Instanz der Regel r und schreibt auch kurz σ (u ) → σ i (v) . Die linke Seite σ (u ) der Instanz heißt Redex, deren rechte Seite σ i (v) das zugehörige Kontraktum. Sei C[] ein gültiger Kontext für σ (u ) und σ i (v) . Dann bezeichnet man die Ersetzung des Redexes σ (u ) durch das Kontraktum σ i (v) innerhalb des Kontextes C[] als Reduktionsschritt. Die Relation → r ⊆ TΣ ( X ) × TΣ ( X ) ist entsprechend für alle i ∈ I K mit C[σ (u )] → r C[σ i (v)] gegeben. → r definiert die 1-Schritt-Reduktionsrelation ⇒ r ⊆ TΣ ( X ) × TΣ ( X ) , falls C[σ (u )] mit keiner Regel r ′ ∈ R mit höherer Priorität reduzierbar ist, d.h.: ⎧→ ⇒ r := ⎨ r ⎩∅ falls ∀t ∈ TΣ ( X ) ∀r ′ ∈ R : (C[σ (u )] → r ′ t ) ⇒ ( p(r ) ≥ p(r ′) ) sonst Die Relation ⇒ R ⊆ TΣ ( X ) × TΣ ( X ) mit ⇒ R = ∪ ⇒ r nennt man Reduktionsrelation und r∈R schreibt auch kurz ⇒ wenn keine Verwechslungsgefahr besteht. Bemerkung: Kann ein Term durch mehr als eine Diagnoseregel reduziert werden, beschränkt die Prioritätsfunktion die Anwendung auf eine oder einige Regeln gleicher Priorität. Die Grundidee der Prioritätsfunktion ist die Beschränkung des Suchraums. Die Prioritätsfunktion sollte hierzu die von Schüler tatsächlich verwendeten Prioritäten beim Auswerten von Rechenschritten berücksichtigen. Für das in dieser Arbeit als Beispiel vorgestellte Diagnosesystem zur Bruchrechnung wurde davon ausgegangen, daß Schüler Teilaufgaben in den natürlichen Zahlen mit höherer Priorität lösen, als Teilaufgaben im Bereich der Bruchrechnung. Beispielsweise bedeutet dies, daß zwar 3 3 3⋅ 2 3 6 3 9 3 3 3⋅ 2 3 3⋅ 2 + 3 9 + = + = + = nicht aber + = + = = 2 4 2⋅2 4 4 4 4 2 4 2⋅2 4 4 4 als realistische Schülerrechnung angenommen wird. Prioritätsfunktionen sind optional. Ist die Prioritätsfunktion konstant, wird der Suchraum nicht eingeschränkt. 26 Definition 12 (Sprache) ∗ Sei D = (Σ, X , R, p) ein Diagnosesystem und ⇒ die reflexive und transitive Hülle von ⇒ . Dann ist die von D mit Aufgabenstellung A ∈ TΣ ( X ) erzeugte Sprache ∗ ⎧ ⎫ L(D, A) := ⎨w ∈ TΣ ( X ) A ⇒ w⎬ . ⎩ ⎭ Die Sprache L( D, A) enthält alle Ergebnisse, die unter Verwendung der durch die Regeln beschriebenen Rechenstrategien aus der gegebenen Aufgabenstellung A errechnet werden können. Berechnet ein Schüler ein Ergebnis w ∉ L( D, A) , so kann mit dem Diagnosesystem die Rechnung nicht diagnostiziert werden. Technisch gesehen konnte die vom Schüler verwendeten Rechenstrategien nicht durch das Diagnosesystem simuliert werden, z.B. weil die verwendete Rechenstrategie nicht in R enthalten ist oder der Schüler andere Prioritäten beim Rechnen verfolgt hat als durch p beschrieben. In der Praxis zeigt sich zudem häufig, daß es sich bei nicht diagnostizierbaren Schülerrechnungen um nicht simulierte Flüchtigkeitsfehler, etwa falsch abgeschriebene Zahlen, handelt oder der Schüler geraten hat. 2.2.3 Diagnosen Ausgehend von der Relation ⇒ wird nun der Begriff der Ableitung definiert. Hinzu kommt der Begriff der Regelfolge. Eine Regelfolge beschreibt, welche Regeln angewendet werden müssen, um eine Ableitung zu erzeugen. Definition 13 (Ableitung, Regelfolge) Sei D = (Σ, X , R, p) ein Diagnosesystem. Seien w0 , w1 ,…, wn ∈ TΣ ( X ) Terme über Σ( X ) und r1 , r2 ,…, rn ∈ R Regeln, n > 0 und w0 ⇒ r1 w1 ⇒ r2 … ⇒ rn wn . Dann heißt (w0 , w1 , … , wn ) Ableitung von w0 nach wn und (r1 , r2 , … , rn ) Regelfolge der Ableitung (w0 , w1 , … , wn ) . Bemerkung: Zu einer Ableitung können mehrere Regelfolgen existieren. Dies ist der Fall, wenn zwei verschiedene Regeln nach Substitution der Variablen identisch sind. Auch können zu einer Regelfolge mehrere Ableitungen existieren, wenn eine Regel auf verschiedene Teilterme anwendbar ist. 27 Definition 14 (Nachfolgermenge) Sei D = (Σ, X , R, p) ein Diagnosesystem und w ∈ TΣ ( X ) ein Term über Σ( X ) . Dann heißt Follow( w) := {(r , v ) ∀r ∈ R : ∀v ∈TΣ ( X ) : w ⇒ r v} Nachfolgermenge von w . Oben wurden die Begriffe der Ableitung und der Regelfolge eingeführt. Mit dem Begriff der Diagnose wird nun ein eng verwandter Begriff eingeführt. Die Diagnose stellt einen Zusammenhang zwischen einer Regelfolge und ihrer Ableitung her. Definition 15 (Diagnose) Sei D = (Σ, X , R, p) ein Diagnosesystem. Seien w0 , w1 ,…, wn ∈ TΣ ( X ) Terme über Σ(X ) und r1 , r2 ,…, rn ∈ R Diagnoseregeln, n>0 ((r1 ,…, rn ), (w0 ,…, wn )) Diagnose von und w0 nach wn . w0 ⇒ r1 w1 ⇒ r2 … ⇒ rn wn . Dann ((r1 ,…, rn ), (w0 ,…, wn )) := n heißt bezeichnet die Länge der Diagnose ((r1 ,…, rn ), (w0 ,…, wn )) . Die Menge aller Diagnosen von w0 nach wn ist gegeben durch Diag ( w0 , wn ) := {((r ,…, r ), (w ,…, w )) w 1 n 0 n 0 } ⇒ r1 … ⇒ rn wn . Sei A ∈ TΣ ( X ) die gestellte Aufgabe. Dann schreibt man verkürzt Diag ( w) := Diag ( A, w) für w ∈ TΣ ( X ) und Diag := ∪ Diag (w) . w∈TΣ ( X ) Formal läßt sich das Problem der Fehlerdiagnose für Aufgabenstellung A und korrekter oder fehlerhafter Schülerantwort w also durch die „Berechnung“ von Diag ( w) für ein geeignetes Diagnosesystem D mit Startterm A beschreiben. Bei allgemeinen Diagnosesystemen ist Diag ( w) jedoch nicht notwendigerweise endlich, so daß die „Berechnung“ nicht vollständig möglich ist. 28 2.2.4 Beispiel Die eingeführten Konzepte zur Fehlerdiagnose sollen nun an einem größeren Beispiel verdeutlicht werden. Dazu sei eine Signatur Σ = ( S , Ω) mit S = {nat , bruch, gem} und Ω = {{0,1,2,3,…}nat , {bruch}nat nat ,bruch , {gem}nat bruch, gem , {add , mul , div}nat nat , nat , {add }bruch bruch,bruch , {add }nat bruch, gem , {add }bruch nat , gem } sowie eine Variablenmenge X = {{a, b, c, k , z1 , z2 , n1 , n2 , e1 , e2 }nat } gegeben. a b wird dabei als Kurz- schreibweise von bruch(a, b) und g ba als Kurzschreibweise für gem( g , bruch(a, b)) verwendet. Gültige Terme über Σ( X ) sind z.B.: 1 3 ⎛1 3⎞ add (bruch(1,2), bruch(3,4)) oder kürzer: add ⎜ , ⎟ oder in Infix-Notation: + 2 4 ⎝ 2 4⎠ add (bruch(3, add (3,4)), bruch(mul (3,2),5)) oder kürzer in Infix-Notation: 3 3⋅ 2 + 3+ 4 5 Tabelle 1 (S. 30) zeigt ein Diagnosesystem mit einigen ausgewählten Diagnoseregeln für die Addition von Brüchen. Jede Spalte der Tabelle enthält dabei eine Diagnoseregel, bestehend aus einem Regelnamen, der eigentlichen Diagnoseregel mit Anwendungskondition und einer Beschreibung der modellierten Rechenstrategien. In diesem Beispiel soll mit der Syntax und der Semantik der Anwendungskonditionen noch etwas formlos umgegangen werden. So soll etwa die Anwendungskondition c := a + b der Diagnoseregel anok die Einsetzung σ derart erweitern, daß für c das Ergebnis der Addition eingesetzt wird. Analog ist die Anwendungskondition der Diagnoseregel dnok zu verstehen, wenn die Bedingungen b ≠ 0 und b a ( b teilt a ) erfüllt sind. Andernfalls erzeugt die Anwendungskondition keine Einsetzungen (Wächterfunktion der Anwendungskondition). Die Diagnoseregeln abhok und abh0 zeigen weitere Beispiele für Anwendungskonditionen, die die Einsetzung erweitern. Dabei berechnet „kgv“ das kleinstes gemeinsames Vielfache der Argumente. Die Anwendungskondition der Diagnoseregel abh0 hat zudem Wächterfunktion. Die Anwendungskondition der Diagnoseregeln kok liefert für alle echten gemeinsamen Teiler von a und b eine entsprechende Einsetzung mit k als echten gemeinsamen Teiler. 29 Tabelle 1: Auswahl von korrekten und fehlerhaften Rechenstrategien bei der Bruchrechnung Name Regel anok add (a, b ) → c mnok mul (a, b ) → c dnok div (a, b ) → c c := a + b c := a ⋅ b Beschreibung Korrekte Addition in den natürlichen Zahlen Korrekte Multiplikation in den natürlichen Zahlen Korrekte Division in den natürlichen Zahlen b ≠ 0, b a, c := a : b abok abhok add ( z1 , z2 ) ⎛z z ⎞ add ⎜ 1 , 2 ⎟ → n ⎝n n⎠ ⎛z z ⎞ add ⎜⎜ 1 , 2 ⎟⎟ → ⎝ n1 n2 ⎠ Korrekte Addition von Brüchen Korrekte Bildung des Hauptnenners bei Addition mit korrekter Erweiterung beider Zähler ⎛ mul ( z1 , e1 ) mul ( z 2 , e2 ) ⎞ , add ⎜ ⎟ n n ⎠ ⎝ n := kgv(n1 , n2 ), e1 := n : n1 , e2 := n : n2 abh0 Bildung des Hauptnenners als Produkt der Nen⎛z z ⎞ add ⎜⎜ 1 , 2 ⎟⎟ → ner der Summanden (kein Fehler) bei Addition ⎝ n1 n2 ⎠ mit korrekter Erweiterung beider Zähler ⎛ mul ( z1 , n2 ) mul ( z 2 , n1 ) ⎞ add ⎜ , ⎟ n n ⎝ ⎠ n := n1 ⋅ n2 , n ≠ kgv(n1 , n2 ) ab0 ⎛z z ⎞ add ( z1 , z 2 ) add ⎜⎜ 1 , 2 ⎟⎟ → add ( n1 , n2 ) ⎝ n1 n2 ⎠ Falsche additive Technik bei der Addition von Brüchen anok z ⎛ z⎞ add ⎜ a, ⎟ → a n ⎝ n⎠ z ⎛z ⎞ add ⎜ , a ⎟ → a n ⎝n ⎠ a div(a, k ) → ∀k ∈ gt (a, b) b div(b, k ) Korrekte Addition einer natürlichen Zahl und einem Bruch kok Korrektes Kürzen eines Bruchs durch einen gemeinsamen Teiler 30 Zur Verdeutlichung der Reduktionsrelation seien drei beispielhafte Nachfolgermengen gegeben: 1 ⋅ 2 3 ⋅1 ⎞ ⎛ 1⋅ 4 3 ⋅ 2 ⎞ ⎛ 1 + 3 ⎞⎫ ⎛ 1 3 ⎞ ⎧⎛ + + Follow⎜ + ⎟ = ⎨⎜ abhok , ⎟ , ⎜ abh0, ⎟ , ⎜ ab0, ⎟⎬ 4 4 ⎠ ⎝ 8 8 ⎠ ⎝ 2 + 4 ⎠⎭ ⎝ 2 4 ⎠ ⎩⎝ 1 2 + 3 4 ist mit den Diagnoseregeln abhok, abh0 und ab0 reduzierbar. Bei der Diagnoseregel abhok er- weitert die Anwendungskondition n := kgv(n1 , n2 ) ∧ e1 := n : n1 ∧ e2 := n : n2 die Einsetzung {z1 ← 1, n1 ← 2, z2 ← 3, n2 ← 4} zu {{z1 ← 1, n1 ← 2, z2 ← 3, n2 ← 4, n ← 4, e1 ← 2, e2 ← 1}} . Analog wirkt die Anwendungskondition bei der Diagnoseregel abh0. Im Unterschied dazu: 1⋅ 9 3 ⋅ 3 ⎞ ⎛ 1+ 3 ⎞ ⎛ 1 3 : 3 ⎞⎫ ⎛ 1 3 ⎞ ⎧⎛ + Follow⎜ + ⎟ = ⎨⎜ abhok , ⎟ , ⎜ ab0, ⎟ , ⎜ kok , + ⎟⎬ 18 18 ⎠ ⎝ 2+9⎠ ⎝ 2 9 : 3 ⎠⎭ ⎝ 2 9 ⎠ ⎩⎝ Hier ist die Diagnoseregel abh0 nicht anwendbar, da der „Wächter“ n := n1 ⋅ n2 ∧ n ≠ kgv(n1 , n2 ) nicht erfüllt. Dafür ist 1 2 + 93 mit der Diagnoseregel kok reduzierbar. Ein anderes Beispiel für die Diagnoseregel kok: 6 : 6 ⎞⎫ 6:2 ⎞ ⎛ 6:3 ⎞ ⎛ ⎛ 6 ⎞ ⎧⎛ Follow⎜ ⎟ = ⎨⎜ kok , ⎟⎬ ⎟ , ⎜ kok , ⎟ , ⎜ kok , 18 : 2 ⎠ ⎝ 18 : 3 ⎠ ⎝ 18 : 6 ⎠⎭ ⎝ 18 ⎠ ⎩⎝ Bei der Reduktion von 6 18 erweitert die Anwendungskondition nicht nur die Einsetzung, sondern auch die Anzahl der möglichen Einsetzungen. So ist in diesem Beispiel Ac({a ← 6, b ← 18}) = {{a ← 6, b ← 18, k ← 2}1 ,{a ← 6, b ← 18, k ← 3}2 ,{a ← 6, b ← 18, k ← 6}3} . Angenommen A = 12 + ist 1 2 + 34 ⇒ abhok 1⋅2 4 3 4 sei eine dem Schüler gestellte Aufgabe und w = + 34⋅1 ⇒ anok 2 4 + 34⋅1 ⇒ anok 2 4 + 34 ⇒ abok 2+ 3 4 ⇒ anok 5 4 5 4 seine Antwort. Dann eine mögliche Ableitung. Der Schüler muß jedoch nicht zwingend so gerechnet haben. Denn u.a. auch die Ableitung 1 2 + 34 ⇒ abh 0 1⋅4 8 + 38⋅2 ⇒ anok 4 8 + 38⋅2 ⇒ anok 4 8 + 86 ⇒ abok die Rechnung des Schülers erklären. 31 4+6 8 ⇒ anok 10 8 ⇒ kok 10:2 8:2 ⇒ knok 5 8:2 ⇒ knok 5 4 kann 3 Diagnose von Rechenstrategien Für die computergestützte Fehlerdiagnose sind zwei verschiedene Einsatzfelder zu unterscheiden, die völlig unterschiedliche Anforderungen an den Algorithmus stellen. Der eher klassische Fall ist die Diagnose von bereits im Vorfeld erfaßten Schülerrechnungen zum Zweck der Erforschung kognitiver Prozesse (Offline-Diagnose). Bei Implementierungen für dieses Einsatzfeld stellen Laufzeit und Speicherbedarf nur untergeordnete Kriterien dar. Beim Einsatz in intelligenten mathematischen Lernsystemen (Online-Diagnose) mit dem Ziel der sofortigen Diagnose und Therapie der Schülerfehler hingegen stellen sowohl Laufzeit als auch Speicherbedarf kritische Größen dar. Insbesondere darf zwischen der Eingabe der Schüler und der Antwort des Lernsystems keine für den Anwender subjektiv wahrnehmbare Zeit verstreichen. Dabei ist zu berücksichtigen, daß auf den Anwendungsrechnern häufig nur geringe Rechenleistung und wenig Speicher verfügbar sind. Neben verfügbarer Rechenleistung und Speicherkapazität unterscheiden sich die beiden Anwendungsfelder in einem weiteren wichtigen Punkt: dem Zeitablauf. Bei der Offline-Diagnose liegt eine Menge von Aufgabenstellungen und Schülerantworten zu Beginn der Diagnose vor. Im Unterschied dazu liegt bei der Online-Diagnose in einem Lernsystem die Aufgabenstellung zeitlich deutlich vor der Schülerantwort vor, da der Schüler sowohl für die Berechnung als auch die für Eingabe seiner Lösung einige Zeit benötigt. Die folgenden Tabelle zeigt einen Ausschnitt aus Tabelle 9 die den Zusammenhang zwischen Aufgabenstellung und der durchschnittliche Bearbeitungszeit verdeutlicht (vgl. auch Abschnitt 5.2, S. 111). Tabelle 2: Zeitspanne zwischen Aufgabenstellung und erster Schülerantwort (vgl. Erläuterungen und vollständige Tabelle in Abschnitt 5.2, S. 111) Aufgabe Anzahl Minimum Mittel [s] [s] Maximum Mittel [s] Mittel [s] [s] 70% 30% schnellste schnellste 36 = 12 32 5,6 27 71 18 11 1 3 + = 2 4 33 6,2 47 144 27 13 2 5 1 +4 = 3 6 46 6,2 65 183 39 23 32 Wie die Spalte mit den Meßwerten der 30% schnellsten Bearbeitungszeiten zeigt, liegt zwischen Aufgabenstellung und erster Schülerantwort eine Zeitspanne von bis zu 20 Sekunden bei minimalen Bearbeitungszeiten von mehr als 5 Sekunden. Im weiteren soll daher von einer Zeitspanne von 5 bis 10 Sekunden zwischen Aufgabenstellung und Schülerantwort ausgegangen werden. Der in dieser Arbeit vorgestellte Algorithmus zur Fehlerdiagnose in einem mathematischen Lernsystem nutzt diese Zeit bereits für die Diagnose. Daraus erfolgt eine Einteilung der Fehlerdiagnose in zwei Phasen. Die erste Phase beginnt mit der Festlegung der als nächstes durch den Schüler zu berechnenden Aufgabe A und endet mit der Eingabe der Schülerlösung w . In dieser Zeit beginnt die Berechnung der Menge der Diagnosen Diag . Nach Eingabe der Schülerlösung w wird aus der Menge der bisher berechneten Diagnosen die Teilmenge Diag (w) selektiert, die als Diagnosen für die Eingabe des Schülers verwendet werden. Abbildung 9 zeigt ein Zeitdiagramm der beiden Phasen. Phase I Phase II Diag Diag (w) 5 - 10 s <1 s Zeit D Sc ia (w g ia D e w os rt g n wo t en an er ab l hü fg Au e st llu ng ) A Abbildung 9: Phaseneinteilung bei der Diagnose 3.1 Berechnung der Menge der Diagnosen In den nächsten Abschnitten wird ein Algorithmus zur Berechnung der Menge der Fehlerdiagnosen Diag vorgestellt. Der Algorithmus wird sukzessive erweitert, um Entwurfsentscheidungen zu verdeutlichen. So stellt die folgende erste Fassung einen äußerst einfachen, i.A. nicht terminierenden Algorithmus zur Berechnung von Diag dar, der in einer zweiten Fassung um künstliche Abbruchkriterien erweitert wird. Da Diag i.A. nicht vollständig berechnet werden kann, ist ein effizientes Auswahlkriterium so zu entwerfen, daß möglichst viele Diagnosen aus Diag (w) in der berechneten Teilmenge von Diag enthalten sind. Zur Beschleunigung des Verfahrens wird schließlich eine dynamische Fassung des Algorithmus vorgestellt. 33 Die folgenden Algorithmen arbeiten iterativ. Dabei wird i als Iterationsvariable verwendet. Entsprechend bezeichnet Diagi die im i -ten Iterationsschritt bekannte Teilmenge der Diagnosen Diag , Li die im i -ten Iterationsschritt bekannte Teilmenge von L( D, A) und ToDoi die Menge der Terme aus Li , deren Nachfolgerelemente noch unbekannt sind. Diese Bezeichnungen erlauben eine erste formale Beschreibung eines Algorithmus zur Berechnung von Diag (sofern Diag überhaupt berechenbar ist): 1: Diag 0 = {(( ), ( A))}, L0 = { A} , ToDo0 = {A} , i = 0 2: Wiederhole 3: Wähle wi ∈ ToDoi beliebig 4: Bestimme Follow( wi ) 5: ToDoi +1 := (ToDoi ∪ {v (r , v ) ∈ Follow( wi )}) \ {wi } 6: Diag i +1 := Diag i ∪ {((r1 ,…, rn −1 , rn ), (v0 ,…, vn − 2 , wi , v )) ((r1,…, rn −1 ), (v0 ,…, vn − 2 , wi )) ∈ Diagi ∧ (rn , v ) ∈ Follow( wi )} 7: Li +1 := Li ∪ Follow( wi ) 8: i → i +1 9: bis ToDoi = ∅ 10: Diag := Diag i −1 Algorithmus 1: Algorithmus zur Berechnung der Diagnosen Abhängig von dem zugrundeliegenden Diagnosesystem terminiert dieser Algorithmus nicht. Sei z.B. add (a, b) → add (add (a, b),1) eine Diagnoseregel, dann läßt sich allein mit dieser Diagnoseregel mit add (1,2) ⇒ add (add (1,2),1) ⇒ add (add (add (1,2),1),1) ⇒ … eine unendliche Anzahl von verschiedenen Diagnosen erzeugen. In der Praxis wird man sich daher damit zufriedengeben müssen, daß eine „künstliche“ Terminierung erzwungen wird. Dies bedeutet, daß eine Berechnung der Diagnosen Diag vorzeitig abgebrochen wird. Aus diesem Grund ist es sinnvoll die Reihenfolge der Berechnung so zu steuern, daß zumindest die berechnete Teilmenge Diag i −1 ⊆ Diag so gewählt ist, daß ihre Elemente die Schülerrechnung mit möglichst hoher Wahrscheinlichkeit erklären können, sofern der Fehler überhaupt durch das Diagnosesystem erklärt werden kann. Für die Generierung dieser Reihenfolge ist die Wahl von wi ∈ ToDoi in Zeile 3 ausschlaggebend. 34 3.1.1 Bewertungsfunktionen Bei der Diagnose der Rechenstrategien ist zu berücksichtigen, daß die überwiegende Anzahl der von Schülern durchgeführten Rechenschritte fehlerfrei ist. Auch treten die verschiedenen Fehlerstrategien in unterschiedlicher Häufigkeit auf. Auf der Basis statistischer Betrachtungen (vgl. Gerster Grevsmühl, 1983, Padberg, 1995 und insbesondere Lörcher, 1982) lassen sich für korrekte und fehlerhafte Rechenstrategien Bewertungen finden. Diese können bei der Fehlerdiagnose an verschiedenen Stellen als Entscheidungskriterium genutzt werden, z.B. zur Verbesserung der Suchreihenfolge, als Abbruchkriterium oder bei verschiedenen Diagnosen für eine Schülerantwort (Mehrdeutigkeit). Definition 16 (Bewertungsfunktionen) Sei D = (Σ, X , R, p) ein Diagnosesystem. Eine Funktion a R : R → ] 0,1[ heißt Bewertungsfunktion für Regeln2. Aus a R berechnet sich die Bewertungsfunktion für Diagnosen n a Diag : Diag → ] 0,1[ mit a Diag (((r1 , r2 ,… rn ), w)) = ∏ a R (ri ) . i =1 Die Funktion aTΣ ( X ) : TΣ ( X ) →]0,1] mit aTΣ ( X ) (w) = max{aDiag (d ) d ∈ Diag ( w)} und max ∅ := 1 heißt Bewertungsfunktion für Terme. Während der iterativen Berechnung von Diag ist aTΣ ( X ) ,i : TΣ ( X ) →]0,1] mit aTΣ ( X ) ,i (w) = max{aDiag (d ) d ∈ Diagi ( w)} und max ∅ := 1 Bewertungsfunktion für Terme beim Iterationsschritt i . Auf der Bewertungsfunktion für Regeln a R basieren Steuerungsheuristiken. Im Idealfall wird a R aufgrund statistischer Untersuchen über Häufigkeiten von Rechenstrategien gewonnen und stellt eine Wahrscheinlichkeitsfunktion dar. Derartige hohe Anforderungen an a R sind jedoch nur sehr aufwendig zu realisieren. Eine Anpassung von a R an den jeweiligen Schüler bedürfte zudem aufwendiger statistischer Funktionen. Aus beiden Gründen seien daher an a R niedrigere Anforderungen gestellt. Insbesondere darf ∑ r∈R a R (r ) > 1 gelten und aus a R (r1 ) > a R (r2 ) muß nicht immer folgen, daß Regel r1 häufiger verwendet wird als Regel r2 . Lediglich sollen hohe Funktionswerte häufiges, niedrige Funktionswerte seltenes Verwenden einer Regel durch den Schüler andeuten. 2 Die Werte von aR werden durch statistische Untersuchungen gewonnen und in einer Tabelle abgelegt. Es ist sinnvoll diese Werte kontinuierlich an den zu diagnostizierenden Schüler anzupassen, so daß eine Adaption an schülerspezifische Verwendungshäufigkeiten realisiert werden kann (vgl. Hennecke, 1997a). Aus Gründen der Übersichtlichkeit wurde auf das Mitführen eines Zeitindexes verzichtet. 35 In diesem Sinne kann auch aDiag einfach als Produkt der Bewertungen der einzelnen Regeln und aTΣ ( X ) als maximale Bewertung einer Regelfolge berechnet werden, ohne auf Abhängigkeiten zwi- schen den Regelanwendungen durch Schüler Rücksicht zu nehmen. Zumal letztere ohnehin schlecht erforscht sind, wird diese Annahme auch in der Fachdidaktik genutzt (vgl. Lörcher, 1982). Wichtig ist im weiteren, daß die Definitionen folgendes triviales, aber für Terminierung wichtiges, Lemma erfüllen: Lemma 1 (Monotonie der Bewertungsfunktion für Diagnosen) Sei Diag eine Menge von Diagnosen und aDiag eine Bewertungsfunktion für Diagnosen. Dann gilt für jede Diagnose ((r1 , r2 ,…, rn ), w) ∈ Diag : aDiag ((r1 )) > aDiag ((r1 , r2 )) > … > aDiag ((r1 , r2 ,…, rn )) . Beweis: Wegen a R (r ) < 1 für r ∈ R gilt für alle i = 1,…, n − 1 : aDiag ((r1 ,…, ri )) > aDiag ((r1 ,…, ri )) ⋅ aR (ri +1 ) = aDiag ((r1 ,…, ri , ri +1 )) <1 3.1.2 Berechnung der Diagnosen (Bestensuche) Mit „Wähle wi mit aTΣ ( X ) ,i (wi ) = max aTΣ ( X ) ,i (v ) “ ist ein Auswahlkriterium für wi ∈ ToDoi und v∈ToDoi mit max aTΣ ( X ) ,i (v) < ε STOP ein Abbruchkriterium gegeben, das eine vorgegebene Qualität und v∈ToDoi +1 wegen Lemma 1 auch die Terminierung sicherstellt. 1: Diag 0 = {(( ), ( A))}, L0 = { A} , ToDo0 = {A} , i = 0 2: Wiederhole 3: Wähle wi ∈ ToDoi mit aTΣ ( X ) ,i (wi ) = max aTΣ ( X ) ,i (v ) 4: Bestimme Follow( wi ) 5: ToDoi +1 := (ToDoi ∪ {v (r , v ) ∈ Follow( wi )}) \ {wi } 6: v∈ToDoi Diag i +1 := Diag i ∪ {((r1 ,…, rn −1 , rn ), (v0 ,…, vn − 2 , wi , v )) ((r1,…, rn −1 ), (v0 ,…, vn − 2 , wi )) ∈ Diagi ∧ (rn , v ) ∈ Follow( wi )} 7: Li +1 := Li ∪ Follow( wi ) 8: i → i +1 9: bis ToDoi = ∅ oder max aTΣ ( X ) ,i (v) < ε STOP oder Schülerantwort liegt vor v∈ToDoi +1 Algorithmus 2: Bestensuche zur Berechnung der Diagnosen 36 Bei geeigneter Realisierung der Menge ToDo , z.B. durch eine Prioritätswarteschlange, ist die Bestimmung der Auswahl- und Abbruchkriterien effizient durchführbar. Bei Implementierung der Prioritätswarteschlange als sortierte Liste ist max aTΣ ( X ) ,i (v) gerade durch die Bewertung des ersv∈ToDoi +1 ten Listenelements gegeben. Der eigentliche Aufwand fällt dann beim Einfügen von neuen Elementen in die Menge ToDo an. Werden Terme mit einer schlechteren Bewertung als ε STOP gar nicht erst in die Liste aufgenommen, reduziert sich der Aufwand weiter. Ferner fällt das Abbruchkriterium max aTΣ ( X ) ,i (v) < ε STOP mit v∈ToDoi +1 ToDoi = ∅ zusammen. Die alternative Berechnung von ToDo lautet dann ( { ToDoi +1 := ToDoi ∪ v (r , v ) ∈ Follow( wi ) ∧ aTΣ ( X ) ,i +1 (v) ≥ ε STOP }) \ {w } . i Mit Hinblick auf eine leichte Berechnung wurden an die Bewertungsfunktionen nur geringe Anforderungen gestellt. In Extremfällen kann dies zu einer sehr ungünstigen Reihenfolge der Berechnung der Nachfolgermengen führen. Existiert z.B. eine fortwährend zyklenfrei anwendbare Diagnoserer r r gel w0 ⎯ ⎯→ w1 ⎯ ⎯→ w2 ⎯ ⎯→ … mit einer Bewertung nahe eins, so berechnet der Algorithmus extrem lange Regelfolgen mit dieser Diagnoseregel, während andere Diagnoseregeln kaum berücksichtigt werden. Um derartigen, auch aus fachdidaktischem Geschichtspunkt extrem unrealistischen, Diagnosen entgegenzuwirken, ist die Beschränkung der maximalen Länge einer Diagnose sinnvoll. Definition 17 (Tiefenfunktion für Terme) Sei D = (Σ, X , R, p) ein Diagnosesystem. Die Funktion tiefe : TΣ ( X ) → IN mit tiefe(w) = min{ d d ∈ Diag ( w)} heißt Tiefenfunktion für Terme. Während der Iteration ist tiefei : TΣ ( X ) → IN mit tiefei (w) = min{ d d ∈ Diag i ( w)} Tiefenfunktion für Terme beim Iterationsschritt i . Mit dieser Definition läßt sich die Berechnung der Menge ToDo dann weiter einschränken zu: ( { ToDoi +1 := ToDoi ∪ v (r , v ) ∈ Follow( wi ) ∧ aTΣ ( X ) ,i +1 (v) ≥ ε STOP ∧tiefei +1 (v) < tiefemax }) \ {w } . i Zur Beschreibung der Ergebnismengen nach Abbruch von Algorithmus 2 bzw. später Algorithmus 5 sei die entsprechende Menge in Zukunft mit ε berechnete Teilmenge der Diagnosen. 37 gekennzeichnet. So bezeichnet z.B. Diag ε die 3.2 Dynamische Berechnung der Nachfolgermengen Die aufwendigste Teilaufgabe von Algorithmus 2 ist die Berechnung der Nachfolgermenge Follow(w) . Nach Definition 14 ist Follow(w) definiert als Follow( w) := {(r , v ) ∀r ∈ R : ∀v ∈TΣ ( X ) : w ⇒ r v} Zur Berechnung von Follow(w) muß für jede Diagnoseregel überprüft werden, ob eine oder mehrere Instanzen der Diagnoseregel auf einen Teilterm von w anwendbar sind. In diesem Abschnitt soll ein Verfahren nach dem Prinzip der dynamischen Programmierung vorgestellt werden, das den Aufwand der Berechnung der Nachfolgermengen reduziert. 3.2.1 Dynamische Programmierung Viele Algorithmen der Informatik basieren auf dem Prinzip „Teile und Herrsche“, das auch unter der englischen Bezeichnung „divide and conquer“ bekannt ist. Dabei wird ein Problem in immer kleinere Teilprobleme zerlegt, die dann unabhängig voneinander gelöst werden. In der dynamischen Programmierung wird dieses Prinzip weiterentwickelt. Dazu werden alle Ergebnisse bereits gelöster Teilprobleme gespeichert, um sie bei der Lösung anderer Teilprobleme wieder zu verwenden. Die Unterschiede zwischen dem Prinzip „Teile und Herrsche“ und dem der dynamischen Programmierung sollen anhand folgenden Beispiels verdeutlicht werden. Gegeben sei die Fibonacci-Funktion fib : IN → IN mit falls n = 0 ∨ n = 1 ⎧1 fib(n) = ⎨ ⎩ fib(n − 1) + fib(n − 2) sonst Ein einfacher Algorithmus nach dem Prinzip „Teile und Herrsche“ könnte dann wie in Algorithmus 3 implementiert werden. Die Implementierung hat jedoch ein Laufzeitverhalten der Komplexität O(e n ) - vgl. Abbildung 10, S. 39. Ein dynamischer Algorithmus hingegen merkt sich die Ergebnisse der bereits gelösten Teilprobleme, so daß fib(n) jeweils nur einmal berechnet werden muß. Der Algorithmus könnte wie in Algorithmus 4 lauten. Diese Fassung benötigt zwar mehr Speicher als Algorithmus 3 hat jedoch die Laufzeitkomplexität O(n) . Das Aufrufdiagramm in Abbildung 11 zeigt die Einsparung gegenüber dem Prinzip „Teile und Herrsche“. 38 function fib(n: Integer): Integer; var fibs: Array[1..nmax] of Inte- begin ger; function fib(n: Integer): Integer; if n <= 1 then begin Result := 1 else if fibs[n] = 0 then Result := fib(n-1) + fib(n-2); fibs[n] := fib(n-1) + fib(n-2); Result := fibs[n]; end; end; Algorithmus 3: Berechnung der Fibonacci-Zahlen nach dem Prinzip „Teile und Herrsche“ Algorithmus 4: Berechnung der Fibonacci-Zahlen nach dem Prinzip der dynamischen Programmierung fib(6) fib(6) fib(4) fib(5) fib(4) fib(3) fib(2) fib(1) fib(3) fib(2) fib(1) fib(1) fib(2) fib(0) fib(1) fib(3) fib(1) fib(0) fib(2) fib(1) fib(5) fib( 2) fib(1) fib(1) fib(4) fib(0) fib(3) fib(0) fib(2) fib(0) fib(1) Abbildung 10: Aufrufdiagramm für Algorithmus 3 fib(4) fib(3) fib(2) fib(1) fib(0) Abbildung 11: Aufrufdiagramm für Algorithmus 4 Gegenüber dem Prinzip „Teile und Herrsche“ hat die dynamische Programmierung immer dann Vorteile, wenn die Teilprobleme nicht unabhängig voneinander sind, d.h. wenn die Teilprobleme der Zerlegung des Problems wiederum gemeinsame Teilprobleme enthalten. Die dynamische Programmierung ist besonders im Gebiet des Operation Research eine weit verbreitete Lösungsmethode für verschiedene Optimierungsprobleme. In diesem Zusammenhang spricht man auch von dynamischer Optimierung. Bemerkung: Für die Berechnung der Fibonacci-Zahlen existieren bessere Algorithmen, die in diesem Zusammenhang jedoch nicht betrachtet werden sollen. 39 3.2.2 Dynamischer Algorithmus zur Bestimmung der Diagnosen Die Vorteile der dynamischen Berechnung können ebenso bei der Berechnung der Nachfolgermengen m -stelliger Terme der Form f (t1 ,…, t m ) genutzt werden. Hierzu sollen die berechneten Nachfolgermengen der Teilterme t1 bis t m verwendet werden. Definition 18 (Nachfolgermenge der Argumente) Sei D = (Σ, X , R, p) ein Diagnosesystem und f (t1 ,…, t m ) ∈ TΣ ( X ) ein m -stelliger Term. Dann heißt FollowArg i ( f (t1 ,…, t m )) = {(r , f (t1 ,…, t i −1 , t i′, t i +1 ,…, t m )) ∈ R × TΣ ( X ) (r , t i′ ) ∈ Follow(t i )} Nachfolgermenge des Arguments i von f (t1 ,…, t m ) . Beispiel: Für das in Abschnitt 2.2.4 vorgestellte Diagnosesystem war die Nachfolgermenge Follow( 12 + 93 ) = {(abhok , 118⋅9 + 318⋅3 ), (ab0, 12++39 ), (kok , 12 + 93::33 )}. Die Nachfolgermenge des zweiten Arguments ist FollowArg 2 ( 12 + 34 ) = {(kok , 12 + 93::33 )} . Die Nachfolgermenge des ersten Arguments ist leer. Lemma 2 Sei D = (Σ, X , R, p) ein Diagnosesystem mit konstanter Prioritätsfunktion und f (t1 ,…, t m ) ein m -stelliger Term über TΣ ( X ) . Sei FollowArg i ( f (t1 ,…, t m )) die Nachfolgermenge des Argu- ments i von f (t1 ,…, t m ) . Dann gilt: FollowArg i ( f (t1 ,…, t m )) ⊆ Follow( f (t1 ,…, t m )) für alle 1≤ i ≤ m. Beweis: Follow(t i ) enthält alle Nachfolgerelemente des Terms t i . Jedes Element (r , t i′ ) der Nachfolgermenge stellt eine Reduktion der Form t i ⇒ r t i′ dar. Aus der Definition von FollowArg i ( f (t1 ,…, t m )) folgt, daß f (t1 ,…t i −1 , , t i +1 ,…, t m ) ein gültiger Kontext für t i′ ist. Bei konstanter Prioritätsfunktion ist somit auch die Reduktion f (t1 ,…, t i −1 , t i , t i +1 ,…, t m ) ⇒ r f (t1 ,…, t i −1 , t i′, t i +1 ,…, t m ) möglich. Die Nachfolgermenge Follow( f (t1 ,…, t m )) enthält also das Element (r , f (t1 ,…, t i −1 , t i′, t i +1 ,…, t m )) . Wie das Beispiel zu Definition 18 bereits zeigt, reichen die Nachfolgermengen der Argumente für die Berechnung der Nachfolgermenge eines Terms noch nicht aus. Es fehlen noch die Reduktionen, deren Kontext ist. 40 Definition 19 (Nachfolgermenge des Operators) Sei D = (Σ, X , R, p) ein Diagnosesystem und f (t1 ,…, t m ) ∈ TΣ ( X ) ein m -stelliger Term, dann heißt FollowOp ( f (t1 ,…, t m )) = {(r , v ) ∀r ∈ R : f (t1 ,…, t m ) → r v} Nachfolgermenge des Operators von f (t1 ,…, t m ) . Beispiel: Entsprechend dem Beispiel zu Definition 18 ist die Nachfolgermenge des Operators Follow( 12 + 93 ) = {(abhok , 118⋅9 + 318⋅3 ), (ab0, 12++39 )} . Lemma 3 Sei D = (Σ, X , R, p) ein Diagnosesystem mit konstanter Prioritätsfunktion und f (t1 ,…, t m ) ein m -stelliger Term über TΣ ( X ) . Sei FollowOp( f (t1 ,…, t m )) die Nachfolgermenge des Operators von f (t1 ,…, t m ) . Dann gilt FollowOp( f (t1 ,…, t m ))⊆ Follow( f (t1 ,…, t m )) . Beweis: Wird der Term f (t1 ,…, t m ) mit der Regel r ∈ R reduziert, d.h. f (t1 ,…, t m ) → r v , so ist wegen der konstanten Prioritätsfunktion auch f (t1 ,…, t m ) ⇒ r v , d.h. die Nachfolgermenge Follow( f (t1 ,…, t m )) enthält das Element (r, v ) . Definition 20 (dynamisch berechnete Nachfolgermenge) Sei D = (Σ, X , R, p) ein Diagnosesystem und f (t1 ,…, t m ) ein m -stelliger Term über TΣ ( X ) . Seien FollowArg i ( f (t1 ,…, t m )) die Nachfolgermengen der Argumente von f (t1 ,…, t m ) und sei FollowOp( f (t1 ,…, t m )) die Nachfolgermenge des Operators von f (t1 ,…, t m ) . Dann wird Followdyn ( f (t1 ,…, t m )) := FollowOp( f (t1 ,…, t m )) ∪ ∪ FollowArg ( f (t ,…, t )) i 1 m als dyna- 1≤i ≤ m misch berechnete Nachfolgermenge von f (t1 ,…, t m ) bezeichnet. Für Konstanten und Variablen v ist Followdyn (v) := Follow(v) . Beispiel: Entsprechend dem Beispiel zu Definition 18 ist die dynamisch berechnete Nachfolgermenge Followdyn ( 12 + 93 ) = {(abhok , 118⋅9 + 318⋅3 ), (ab0, 12++39 ), (kok , 12 + 93::33 )} . 41 Wie sich in dem Beispiel schon andeutet, läßt sich so die Berechnung der Nachfolgermenge eines Terms dynamisch durchführen. Es folgt entsprechend Satz 1: Satz 1 (Dynamische Berechnung der Nachfolgermenge bei konstanter Prioritätsfunktion) Sei D = (Σ, X , R, p) ein Diagnosesystem mit konstanter Prioritätsfunktion und t ein Term über TΣ ( X ) . Sei Followdyn (t ) die dynamisch berechnete Nachfolgermenge von t . Dann gilt Follow(t ) = Followdyn (t ) . Beweis: Ist t Konstante oder Variable, so folgt Satz 1 trivial aus der Definition. Sei im folgenden t der m -stellige Term f (t1 ,…, t m ) . Da sich Followdyn ( f (t1 ,…, t m )) in diesem Fall aus den Nachfolgermengen der Argumente und der Nachfolgermenge des Operators berechnet, ist Followdyn ( f (t1 ,…, t m )) ⊆ Follow( f (t1 ,…, t m )) nach Lemma 2 und Lemma 3. Eine weitere Reduktion t ⇒ t ′ , die nicht durch Followdyn ( f (t1 ,…, t m )) dargestellt wird, kann nicht existieren, da Reduktionen innerhalb des Kontextes durch die Nachfolgermenge des Operators und Reduktionen innerhalb von Kontexten der Form f (t1 ,…, t i −1 , C[], t i +1 ,…, t m ) mit 1 ≤ i ≤ m durch die Nachfolgermengen der Argumente dargestellt werden. Die Beschränkung von Satz 1 auf Diagnosesysteme mit konstanter Prioritätsfunktion ist nicht wesentlich und kann leicht behoben werden: Definition 21 (Prioritätsauswahl) Sei D = (Σ, X , R, p) ein Diagnosesystem und w ein Term über TΣ ( X ) . Sei Followdyn (w) die dynamisch berechnete Nachfolgermenge von w . Dann ist die dynamisch berechnete Nachfolgermenge von w mit Prioritätsauswahl definiert durch { } prio Followdyn ( w) := (r , v ) ∈ Followdyn ( w) p (r ) = max{p (r ′) (r ′, v) ∈ Followdyn ( w)} prio Es folgt unmittelbar, daß entsprechend Satz 1, Followdyn ( w) = Follow( w) auch für Diagnosesys- teme mit nicht konstanter Prioritätsfunktion gilt. Dies bedeutet, daß die Nachfolgermenge eines Terms aus den Nachfolgermengen seiner Argumente und aus der Nachfolgermenge des Operators berechnet werden kann. Insbesondere entfällt die Bestimmung von Kontexten bei der Reduktion. 42 Aus diesen Vorüberlegungen ergibt sich der rekursive Algorithmus mit dynamischer Berechnung der Nachfolgermengen: Methode Expandiere w , toplevel 1: w = f (t1 ,…, t m ) 2: Für 1 ≤ j ≤ m 3: Falls Follow(t j ) unbekannt, Expandiere t j , false 4: prio Berechne Followdyn ( wi ) 5: Falls TopLevel = true 6: ( { ToDoi +1 := ToDoi ∪ v (r , v ) ∈ Follow( wi ) ∧ aTΣ ( X ) ,i +1 (v) ≥ ε STOP tiefei +1 (v) < tiefemax }) \ {wi } 7: Diag i +1 := Diag i ∪ {((r1 ,…, rn −1 , rn ), (v0 ,…, vn − 2 , wi , v )) ((r1,…, rn −1 ), (v0 ,…, vn − 2 , wi )) ∈ Diag i ∧ (rn , v ) ∈ Follow( wi )} 8: Li +1 := Li ∪ Follow( wi ) 9: i → i +1 Hauptprogramm: 10: Diag 0 = {(( ), ( A))}, L0 = { A} , ToDo0 = {A}, i = 0 11: Wiederhole 12: Wähle wi ∈ ToDoi mit a Σ*,i (wi ) = max a Σ*,i (v ) 13: Expandiere wi , true v∈Ti 14: bis ToDoi = ∅ oder Schülerlösung liegt vor Algorithmus 5: Dynamischer Algorithmus zur Berechnung der Diagnosen 43 3.3 Vergleich mit der Termgraphersetzung In diesem Abschnitt soll der vorgeschlagene Diagnosealgorithmus kurz mit der Termgraphersetzung verglichen werden (vgl. Sleep, Plasmeijer, van Eekelen, 1993; Plasmeijer; van Eekelen, 1993; Plump, 1998). Beiden Verfahren liegt die gleiche Idee zugrunde, einmal berechnete Reduktionsschritte für einen mehrfach auftretenden Teilterm auch mehrfach zu nutzen. Abbildung 12 zeigt als fortlaufendes Beispiel den Termgraphen für 1 2⋅4 + 24⋅4 in einer, im Bereich der Termgraphersetzung üblichen, Notation. Hierbei handelt es sich um einen Hypergraphen, dessen Kanten die Operatoren bzw. Konstanten bilden. add bruch 1 bruch mul 2 mul 4 2 4 4 Abbildung 12: Beispiel eines Termgraphen Sowohl für den vorgeschlagenen Diagnosealgorithmus als auch für viele Anwendungen im Bereich der Termgraphersetzung ist es sinnvoll, mehrfach auftretende Teilterme nur einmal zu repräsentieren. Man spricht dann von kollabierten Graphen. Abbildung 13 zeigt den bereits aus Abbildung 12 bekannten Termgraphen in kollabierter Form. add bruch bruch 1 mul 2 4 Abbildung 13: Beispiel eines (vollständig) kollabierten Termgraphen 44 Wird nun eine Ersetzungsregel, wie mul (a, b) → c , wobei c die Summe von a und b ist, auf den kollabierten Termgraphen angewendet, erfolgt die Ersetzung parallel, d.h. beide Teilterme werden gleichzeitig ersetzt (vgl. Abbildung 14). Ziel dieses Konzeptes ist es identische Reduktionsschritte einzusparen. add add bruch bruch 1 bruch mul 2 bruch 1 8 4 4 Abbildung 14: Beispiel eines Reduktionsschrittes bei der Termgraphersetzung Im Sinne der Fehlerdiagnose ist diese Ersetzung nicht sinnvoll, da zum einem die Folge der Reduktionsschritte und nicht deren Ergebnis gesucht ist und zum anderem der Schüler nicht bei jedem Auftreten des gleichen Teilterms auch dieselbe Rechenstrategie verwendet haben muß. Der dynamische Diagnosealgorithmus verfährt daher anders: Anstatt alle Instanzen des gleichen Teilterms zu ersetzten, wird nur eine Instanz reduziert. Alle weiteren Instanzen erhalten lediglich einen „Vermerk“ auf das mögliche Ergebnis der Ersetzung. Abbildung 15 entspricht Abbildung 14 bei der dynamischen Berechnung. Die zusätzliche „dicke“ Kante symbolisiert diesen „Vermerk“. In der Regel werden vom Diagnosealgorithmus mehrere Vermerke auf mögliche Lösungen an einem Knoten angebracht. Hier liegt ein entscheidender Unterschied zur Termgraphersetzung. add add bruch bruch 1 bruch mul 2 1 bruch 8 4 mul 2 Abbildung 15: Abstrakte Darstellung der dynamischen Ersetzung als Termgraphersetzung 45 4 Durch den dynamischen Algorithmus wird anders als bei der Termgraphersetzung zunächst kein Reduktionsschritt eingespart. Folgende Reduktionsschritte werden jedoch erheblich beschleunigt, da die aufwendige Überprüfung, welche Diagnoseregeln angewendet werden können, entfällt. Als größerer Unterschied ist daher die Arbeitsweise der beiden Algorithmen zu sehen. Während die Termgraphersetzung eine der möglichen Ersetzungsregeln anwendet bis ein irreduzibler Termgraph erreicht ist, führt die Fehlerdiagnose eine Bestensuche durch, d.h. es werden in jedem Schritt alle möglichen Diagnoseregeln angewendet. Im Sinne der Termgraphersetzung entsteht so ein Wald von Termgraphen, die untereinander vollständig kollabiert sind. Entsprechend kann bei den folgenden Ersetzungsschritten für die weiteren Termgraphen auf die bereits vermerkten Ersetzungsschritte zurückgegriffen werden, was in diesem Kontext einen wesentlichen Vorteil gegenüber der klassischen Termgraphersetzung darstellt. 46 3.4 Indirekte Berechnung der Diagnosen 3.4.1 Speicherbedarf Viele dynamische Algorithmen sind für den hohen Speicherbedarf der bereits berechneten Zwischenergebnisse bekannt. Für das in Algorithmus 5 vorgestellte dynamische Verfahren stellt die Speicherung der bereits bekannten Nachfolgermengen jedoch nur ein untergeordnetes Problem dar, da ihr Umfang klein gegenüber der Menge der möglichen Diagnosen in Diag ε ist. Abbildung 16 verdeutlicht dies am Beispiel der Aufgabe 6 8 + 86 , indem sie die Anzahl der berechneten Elemente von Nachfolgermengen im Verhältnis zur Anzahl der berechneten Diagnosen zeigt. Nachfolger/Diagnosen 3.000.000.000 2.500.000.000 Diagnosen 2.000.000.000 1.500.000.000 1.000.000.000 500.000.000 0 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 Nachfolger Abbildung 16: Verhältnis der Anzahl der Diagnosen zu der Anzahl der berechneten Elemente von Nachfolgermengen Weitere Diagramme dieser Art befinden sich im Anhang B. Sie zeigen deutlich, daß die Anzahl der Diagnosen in Abhängigkeit von der gestellten Aufgabe stark variiert. In Extremfällen werden durchaus mehrere Milliarden Diagnosen berechnet. Selbst bei einer sehr kompakten Speicherung von Diag ε würde hierfür zuviel Speicher und zuviel Rechenzeit für die Belegung benötigt. Algorithmus 5 stellt daher in dieser Form keine praktikable Lösung für die erste Phase der Fehlerdiagnose dar. 47 Innerhalb der beiden Phasen der Fehlerdiagnose findet Diag ε bei der Berechnung der Bewertungsfunktion aTΣ ( X ) ( w) und der Tiefenfunktion tiefe(w) sowie in der zweiten Phase bei der Bestimmung von Diag ε (w) ⊆ Diag ε Verwendung. Ziel der nächsten Abschnitte wird es daher sein, diese drei Berechnungen auch ohne Kenntnis von Diag ε aus den Nachfolgermengen berechnen zu können. 3.4.2 Nachfolgermengen-Graphen Für die folgenden Ausführungen soll die bei der Berechnung der Nachfolgermengen entstehende Struktur anschaulich durch einen gerichteten Graphen beschrieben werden. Im Speicher werden die Kanten dieses Graphen später durch entsprechende Zeiger realisiert. Definition 22 (Nachfolgermengen-Graph) Sei D = (Σ, X , R, p) ein Diagnosesystem und A ein Startterm. Sei E ⊆ L( D, A) × L( D, A) mit ∀(r , v) ∈ Follow( w) : ( w, v) ∈ E gegeben. Dann heißt FollowGraph( D, A) = ( L( D, A), E ) Nachfolgermengen-Graph von A . Anschaulich kann FollowGraph( D, A) als gerichteter Graph verstanden werden, an dessen „Wurzel“ die Aufgabenstellung A steht. Von jedem Knoten gehen gerichtete Kanten aus, die auf die Elemente der Nachfolgermenge des Knoten zeigen. Ein Beispiel für einen derartigen Nachfolgermengen-Graph zeigt Abbildung 17. Leere Kreise symbolisieren dabei Terme, die für das jeweilige konkrete Beispiel ohne Bedeutung sind. 1 3 + 2 4 1+ 3 2+4 1+ 3 6 4 2+4 4 6 Abbildung 17: Beispiel für einen Nachfolgermengen-Graph (Ausschnitt) 48 Anhand eines Nachfolgermengen-Graphen wird leicht deutlich, daß alle bereits berechneten Diagnosen auch durch die Nachfolgermengen repräsentiert werden. Diag ε berechnet sich aus der Menge aller Kantenzüge von der Aufgabenstellung zu jedem der Knoten. Die explizite Speicherung von Diag ε kann entfallen, wenn sich die Bewertungsfunktion, die Tiefenfunktion und in der zweiten Phase Diag ε (w) ohne Kenntnis von Diag ε berechnen lassen. 3.4.3 Aktualisierung der Bewertungs- und Tiefenfunktion für Terme Um aTΣ ( X ) ,i und tiefei ohne Kenntnis von Diag i berechnen zu können, bietet sich deren laufende Aktualisierung beim Einfügen neuer Kanten in den Nachfolgermengen-Graphen an. Die Vorgehensweise soll im folgenden an den in Abbildung 18 gezeigten Nachfolgermengen-Graphen veranschaulicht werden. Die Rechtecke geben dabei die Bewertungen der Regeln und die Beschriftungen neben den Kreisen die Bewertungen der Terme an. a∑* ,i = 1 aR = 0,95 aR = 0,8 a∑* ,i = 0,95 a∑* ,i = 0,8 aR = 0,01 a∑* ,i = 0,08 aR = 0,2 a∑* ,i = 0,016 ... ... ... Abbildung 18: Nachfolgermengen-Graph mit Bewertungen der Diagnoseregeln und Termen Beim Einfügen einer neuen Kante (Diagnoseregel) ist eine Aktualisierung vorzunehmen, falls aTΣ ( X ) ,i −1 (v) = 1 oder aTΣ ( X ) ,i −1 ( w) ⋅ a R (r ) > aTΣ ( X ) ,i −1 (v) gilt. Im ersten Fall war v bisher nicht als Term aus L( D, A) bekannt – im zweiten Fall ist über die neue Kante eine bessere Bewertung möglich (vgl. Abbildung 19). 49 a∑* ,i = 1 aR = 0,95 aR = 0,8 a∑* ,i = 0,95 a∑* ,i = 0,8 aR = 0,8 aR = 0,01 a∑* ,i = 0,76 aR = 0,2 a∑* ,i = 0,016 ... ... ... Abbildung 19: Aktualisierung der Bewertungen beim Einfügen einer neuen Kante in den Nachfolgermengen-Graphen Erfolgte für einen Knoten v die Aktualisierung der Bewertung, müssen ggf. rekursiv die Elemente von Follow(v) aktualisiert werden (vgl. Abbildung 20). a∑* ,i = 1 aR = 0,95 aR = 0,8 a∑* ,i = 0,95 a∑* ,i = 0,8 aR = 0,8 aR = 0,01 a∑* ,i = 0,76 aR = 0,2 a∑* ,i = 0,152 ... ... ... Abbildung 20: Rekursive Aktualisierung beim Einfügen einer neuen Kante in den Nachfolgermengen-Graphen Entsprechend ist die Aktualisierung der Tiefenfunktion vorzunehmen, falls es durch Einfügen der Kante einen kürzeren Weg gibt, d.h. tiefei −1 (v) < tiefei −1 ( w) + 1 ist. Somit ergibt sich nach der Initialisierung mit ∀w ∈ TΣ ( X ) : aTΣ ( X ) , 0 ( w) = 1 und tiefe0 ( w) = ∞ folgender Algorithmus: 50 Methode Aktualisiere Bewertung w, (r , v) 1: if aTΣ ( X ) ,i −1 (v) = 1 or aTΣ ( X ) ,i −1 ( w) ⋅ a R (r ) > aTΣ ( X ) ,i −1 (v) or tiefei −1 (v) < tiefei −1 ( w) + 1 then 2: aTΣ ( X ) ,i (v) := min(max(aTΣ ( X ) ,i (v), aTΣ ( X ) ,i −1 ( w) ⋅ a R (r )),1) 3: tiefei (v) := min(tiefei −1 (v), tiefei −1 ( w) + 1) 4: ∀(r ' , v' ) ∈ Follow(v) : Aktualisiere Bewertung v, (r ' , v' ) Algorithmus 6: Aktualisierung der Bewertung für Terme 3.5 Berechnung der Diagnosen für eine Schülerantwort Die Berechnung von Diag ε (w) für die Schülerantwort w in der zweiten Phase ist aus dem Nachfolgermengen-Graphen durchzuführen. Dabei repräsentiert die Menge aller Kantenzüge des Nachfolgermengen-Graphen, die von der Aufgabenstellung zur Schülerantwort verlaufen, die gesuchte Menge. 3.5.1 Vorgängermengen Bei der Bestimmung der Diagnosen für die Schülerantwort stellen Verfahren, die ausgehend von der Aufgabenstellung den Nachfolgermengen-Graphen traversieren, keine geeignete Lösung dar, da bei ihnen der gesamte Nachfolgermengen-Graph bearbeitet werden muß. Statt dessen sind Verfahren vorzuziehen, die von der Schülerlösung ausgehen und den Nachfolgermengen-Graphen entgegen der Richtung seiner Kanten traversieren. Entsprechend wird für jeden Term das Analog zur Nachfolgermenge benötigt: Definition 23 (Vorgängermenge) Sei D = (Σ, X , R, p) ein Diagnosesystem und w ∈ TΣ ( X ) ein Term über Σ( X ) . Dann heißt { } Previous( w) := v ∀v ∈ TΣ ( X ) ∃r ∈ R : (r , w) ∈ Follow(v) Vorgängermenge von w . Vorgängermengen lassen sich bei der Aktualisierung der Bewertung für Terme (siehe Algorithmus 6) berechnen. Dazu sei Previousi (w) die im i-ten Iterationsschritt bekannte Teilmenge von Previous(w) . Dann berechnet der wie folgt modifizierte Algorithmus Previous ε , d.h. die bei Stop der erste Phase der Fehlerdiagnose bekannten Vorgängermengen. 51 Methode Aktualisiere Bewertung w, (r , v) 1: if aTΣ ( X ) ,i −1 (v) = 1 or aTΣ ( X ) ,i −1 ( w) ⋅ a R (r ) > aTΣ ( X ) ,i −1 (v) or tiefei −1 (v) < tiefei −1 ( w) + 1 then 2: aTΣ ( X ) ,i (v) := min(max(aTΣ ( X ) ,i (v), aTΣ ( X ) ,i −1 ( w) ⋅ a R (r )),1) 3: tiefei (v) := min(tiefei −1 (v), tiefei −1 ( w) + 1) 4: Previousi (v) := Previousi −1 (v) ∪ {w} 5: ∀(r ' , v' ) ∈ Follow(v) : Aktualisiere Bewertung v, (r ' , v' ) Algorithmus 7: Aktualisierung der Bewertung für Terme bei gleichzeitiger Berechnung der Vorgängermengen Um den, durch eine von der Schülerlösung ausgehende Traversierung des NachfolgermengenGraphen, durchlaufenden Teilgraphen formal fassen zu können, beschreibt die folgende Definition 24 die Knoten dieses Teilgraphen. Definition 24 (aufspannende Knotenmenge) Sei D = (Σ, X , R, p) ein Diagnosesystem, A ein Startterm und w ∈ TΣ ( X ) eine Schülerantwort. Dann heißt Spanε ( w) ⊆ L( D, A) die Diag ε (w) aufspannende Knotenmenge und ist definiert durch: Span0ε ( w) = {w} { } Spaniε ( w) = u v ∈ Spaniε−1 ( w) ∧ u ∈Previous ε (v) − ∪ Span εj ( w) j <i Span ( w) = ∪ Spani ( w) ε ε i Bemerkung: Die Teilmengen Spaniε ⊆ Spanε enthalten genau die Terme, die durch eine Ableitung der Länge i in die Schülerlösung überführt werden können. Die aufspannende Knotenmenge ist endlich, da durch den Diagnosealgorithmus in der ersten Phase der Fehlerdiagnose nur eine endliche Menge von Termen berechnet wurde. 3.5.2 Permutierte Regelfolgen Die Anzahl der Diagnosen einer Schülerrechnung ist abhängig vom Diagnosesystem und der Schülerlösung. Für das in dieser Arbeit beispielhaft vorgestellte Diagnosesystem treten bei einigen Extremfällen mehr als 1000 Diagnosen für eine Schülerantwort auf. Diese Vielzahl ist insbesondere durch Diagnosen bedingt, die sich nur in der Reihenfolge der Regelanwendungen unterscheiden. So sind die folgenden vier Diagnosen zwar verschieden – unter fachdidaktischen Geschichtspunkten 52 ist eine Unterscheidbarkeit jedoch nicht wesentlich, da alle vier Diagnosen durch die gleiche, falsche additive Fehlerstrategie zu erklären sind. 1 3 a 0 1 + 3 anok 4 4 kok 4 : 2 dnok 2 2 anok dnok + ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ 2 4 2+4 2+4 6 6:2 6:2 3 1 3 a 0 1 + 3 anok 4 4 kok 4 : 2 dnok 4 : 2 dnok 2 anok + ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ 2 4 2+4 2+4 6 6:2 3 3 1 3 a 0 1 + 3 anok 1 + 3 anok 4 kok 4 : 2 dnok 2 2 dnok + ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ 2 4 2+4 6 6 6:2 6:2 3 1 3 a 0 1 + 3 anok 1 + 3 anok 4 kok 4 : 2 dnok 4 : 2 dnok 2 + ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ ⎯⎯→ ⎯⎯ ⎯→ ⎯⎯ ⎯→ 2 4 2+4 6 6 6:2 3 3 Es ist sinnvoll, derartig permutierte Diagnosen zu Klassen zusammenfassen und lediglich einen Repräsentanten dieser Klasse als Ergebnis der Fehlerdiagnose zu generieren. Unter dieser Prämisse ist jedoch die Erzeugung aller Diagnosen und anschließender Reduktion der erzeugten Menge auf Klassenrepräsentanten ein unnötiger Aufwand. Statt dessen sollte ein Algorithmus für die zweite Phase ausschließlich die gesuchten Repräsentanten erzeugen. Definition 25 (Permutierte Diagnosen) Sei D = (Σ, X , R, p) ein Diagnosesystem und ((r1 ,…, rn ), (w0 ,…, wn )) eine Diagnose. Dann ist ((r1 ,…, rn ), (w0 ,…, wn ))ε ein Bezeichner der Menge aller Diagnosen, die durch Permutation der Regelfolge (r1 ,…, rn ) entstehen, d.h. ((r1 ,…, rn ), (w0 ,…, wn ))ε := {(( p1 ,…, p n ), (v0 ,…, vn )) (( p1 ,…, p n ), (v0 ,…, vn )) ∈ Diag ε (w0 , wn ) ∧( p1 , … , p n ) Permutation von (r1 , … , rn ) ∧ w0 = v0 ∧ wn = v n } Die Mengen ((r1 ,…, rn ), (w0 ,…, wn ))ε bilden eine Klasseneinteilung der Menge Diag ε (w0 , wn ) . Es sei ferner Diag ε (s, e ) die Teilmenge von Diag ε (s, e ) , die aus jeder Klasse von Diag ε (s, e ) genau einen Repräsentanten enthält. Analog: Diag ε (s ) und Diag ε . 53 3.5.3 Dynamische Berechnung in der zweiten Phase Nach einer pragmatischen Beschränkung der maximalen Länge von Diagnosen auf max Diag läßt sich der Algorithmus für die zweite Phase der Fehlerdiagnose somit wie folgt angeben. Dabei wird die Speicherung von permutierten oder nicht zyklenfreien Diagnosen vermieden. Methode Diagnose Diag ε (w) : 1: Span0ε ( w) = {w} 2: ∀0 ≤ i ≤ max Diag 3: ∀u ∈ Span( w)εi : Diagiε (u, w) = { ((r , r1 ,…, ri −1 ), ( x, w0 ,…, wi − 2 , w)) (r , x ) ∈ Followε (u ) ∧ x ∈ Spaniε−1 ( w) 4: ∧ ((r1 ,…, ri −1 ), (w0 ,…, wi − 2 , w)) ∈ Diagiε−1 ( x, w) ∧ x ≠ w ∧ ∀0 ≤ j ≤ i − 2 : x ≠ w j } 5: Beschränke Diag iε (u, w) auf Diag iε (u, w) . { Spaniε ( w) = u u ∈Previous ε (v) ∧ v ∈ Spaniε−1 ( w) ∧ tiefe ε (u ) + i ≤ max Diag 6: } − ∪ Span εj ( w) j <i Algorithmus 8: Dynamischer Algorithmus für die zweiten Phase In einer praktischen Realisierung lassen sich die Zeilen 4 und 5 zusammenfassen, so daß nicht unnötig Diagnosen erzeugt werden. 54 3.6 Kontextkondition Die Beschränkung des Suchraums der ersten Phase der Fehlerdiagnose ist trotz des leistungsfähigen dynamischen Algorithmus einer der wichtigsten Ansatzpunkte für eine effiziente Suche. Anwendungskonditionen und Prioritätsfunktionen stellen hier bereits zwei wichtige Mechanismen dar. Mit der Kontextkondition soll in diesem Abschnitt ein weiterer Ansatz zur Beschränkung des Suchraums eingeführt werden. Für das folgende einführende Beispiel sei noch einmal auf das im Abschnitt 2.2.4 vorgestellte Diagnosesystem zurückgegriffen. Die beiden folgenden möglichen Schülerrechnung sind durch das Diagnosesystem darstellbar. 4 4:4 1 1 → kok → dnok → dnok 8 8: 4 8:4 2 1 1 1 ⋅ 4 1 ⋅1 4 1 4:4 1 1 1 + → abhok + → mnok … → mnok + → kok + → dnok … → dnok + 2 8 8 8 8 8 8: 4 8 2 8 Während im ersten Fall das Kürzen von Kürzen von 4 8 4 8 eine wahrscheinliche Schülerrechnung darstellt, ist das im zweiten Fall jedoch als sehr unwahrscheinlich anzunehmen. Ein Schüler der bei einer Additionsaufgabe zuerst einen gemeinsamen Hauptnenner bildet, zerstört ihn i.d.R. nicht anschließend durch Kürzen. Wünschenswert wäre also, die Anwendbarkeit einer Diagnoseregel an den bisherigen diagnostizierten Rechenweg koppeln zu können. Bei dem vorgestellten dynamischen Algorithmus mit indirekter Darstellung der Diagnosen durch die Nachfolgermengen ist dies jedoch nur mit sehr hohem Aufwand möglich. Vergleichsweise einfach läßt sich die Anwendbarkeit einer Diagnoseregel jedoch an den Kontext koppeln, in dem sie angewendet werden soll. So könnte man z.B. die Diagnoseregeln im Kontext erlauben und im Kontext + 81 verbieten. Allgemein wäre es erforderlich, Kontexte der Form + nz zu verbieten. Definition 26 (Kontextkondition) Sei D = (Σ, X , R, p) ein Diagnosesystem und r : u → v Ac eine Diagnoseregel aus R . Eine Funktion Ccr , die eine Einsetzung σ auf eine Teilmenge von C abbildet, d.h. Ccr : Ξ → {C}, heißt Kontextkondition der Diagnoseregel r , wenn außer Cc r (σ ) die Form f (t1 , …, t i −1 , , t i +1 ,…, t m ) haben. 55 ∈ Cc r (σ ) alle Elemente von Die angesprochene Beschränkung des Suchraums läßt sich mit Hilfe der Kontextkondition erreichen, indem die Berechnung der Nachfolgermengen der Argument verändert wird. Hier verwendet man statt FollowArg i folgende Berechnung: FollowArg i′ ( f (t1 , …, t m )) = {(r : u → v Ac, f (t1 ,… , t i −1 , t i′, t i +1 ,…, t m )) ∈ R × TΣ ( X ) (r : u → v Ac, t i′ ) ∈ Follow(t i ) ∧ ∃σ ∈ Ξ : t i = σ (u ) ⇒ r t i′ ∧ f (t1 ,…, t i −1 , , t i +1 , …, t m ) ∈ Cc r (σ )} Bemerkung: In Satz 1 (S. 42) gilt bei Berücksichtigung der Kontextkondition i.A. nicht mehr die Gleichheit. Die in Abschnitt 2.2.4 vorgestellte Diagnoseregel zum mathematisch korrekten Kürzen eines Bruches kok: a div(a, k ) → b div(b, k ) ∀k ∈ gt (a, b) könnte entsprechend um folgende Kontextkondition erweitert werden: ⎛⎧ ⎫ ⎛ z⎞ Cckok = C − ⎜⎜ ⎨add ⎜ , ⎟ b = n ⎬ ⎝ n⎠ ⎭ ⎝⎩ ⎧ ⎫⎞ ⎛z ⎞ ∪ ⎨add ⎜ , ⎟ b = n⎬ ⎟⎟ ⎝n ⎠ ⎩ ⎭⎠ 56 3.7 Pläne Der vorgestellte Algorithmus 5 (S. 43) zur dynamischen Berechnung des NachfolgermengenGraphen arbeitet nach dem Prinzip der Bestensuche. Die in Abschnitt 3.1.1 (S. 35) vorgeschlagenen Bewertungsfunktionen für Regeln, Diagnosen bzw. Terme stellen leider nur einfache Heuristiken dar. Für einige Problemstellungen kann es daher sinnvoll sein, beschränkte Teilgraphen gezielt vorab, d.h. vor der umfangreicheren Bestensuche, zu durchsuchen. Mit dem in diesem Abschnitt vorgestellten Konzept der Pläne kann eine derart beschränkte Suche nach dem Prinzip der Breitensuche realisiert werden. Der Ansatz ist dabei mit den bereit in Salomaa (1970) vorgeschlagenen „zeitvariierten“ Grammatiken durchaus vergleichbar (vgl. auch Salomaa, 1973/78). 3.7.1 Einsatzbereiche Ein wichtiges Einsatzgebiet einer derartigen Vorabsuche kann die Bestimmung des durch mathematisch korrekte Rechenstrategien aufgespannten Teilgraphen sein. Dies ist insbesondere dann nötig, wenn man mit Hilfe des Diagnosesystems auch Aussagen über die Korrektheit einer Schülerlösung treffen möchte. Durch die Beschränkung auf korrekte Rechenstrategien kann viel schneller eine hohe Suchtiefe aufgebaut werden, als dies bei der umfangreichen Bestensuche mit allen Rechenstrategien möglich wäre. Eine andere Motivation kann der Ausgleich von bekannten Fehlern in den Bewertungsfunktionen sein, die z.B. durch fehlerhafte Unabhängigkeitsannahmen bei der Bewertungsfunktion für Diagnosen entstehen. Soll z.B. ein Schüler die Aufgabe te Rechenstrategie 5 3 + 109 ⇒ abk1 5:5 3 + 109:5 ⇒ dnok 5 3 1 3 + 109 berechnen, dann ist eine mögliche fehlerhaf- + 109:5 ⇒ dnok 1 3 + 92 (Kürzen über „Kreuz“). Diese Fehlerstrategie ist vergleichsweise selten (vgl. Padberg, 1995), d.h. die Bewertungsfunktion a R liefert für die Diagnoseregel abk1 einen sehr kleinen Wert. Wenn ein Schüler diese Fehlerstrategie verwendet, so tut er dies jedoch häufig konsequent, d.h. die weiteren Rechenschritte könnten z.B. 1 3 + 92 ⇒ abk1 1 3:3 + 92:3 ⇒ dnok 11 + 92:3 ⇒ dnok 11 + 32 sein. Beispiele für diese Konsequenz finden sich ins- besondere in der 7-Klassen-Studie (siehe Kapitel 5 und Anhang C). Da die Wahrscheinlichkeit der Anwendung der Fehlerstrategie abk1 somit abhängig von der bisherigen Rechnung des Schülers ist, ist die Unabhängigkeitsannahme hier nicht berechtigt. Die tatsächliche Wahrscheinlichkeit ist höher als durch die Bewertungsheuristik berechnet. Bei entsprechend beschränkter Zeit unterbleibt somit im Extremfall die Berechnung der Nachfolgermengen in der ersten Phase. 3.7.2 Beschreibung Für die Beschreibung des zu durchsuchenden Teilgraphen können viele verschiedene Konzepte zum Einsatz kommen. In dem hier vorgestellten Konzept wird in Abhängigkeit von der Suchtiefe 57 das Diagnosesystem auf wenige Diagnoseregeln beschränkt. Die Diagnoseregeln einer Stufe können dabei als verpflichtend oder als optional eingestuft werden. Sind die Diagnoseregeln verpflichtend, so wird die Breitensuche ausschließlich mit den Nachfolgermengen fortgesetzt. Die Breitensuche stoppt entsprechend, wenn nicht mindestens eine Diagnoseregel angewendet werden konnte. Dies ist bei optionalen Diagnoseregeln nicht der Fall. Abbildung 21 zeigt eine graphische Darstellung eines Plans zur Addition von Brüchen. Die Bezeichnungen der Diagnoseregeln beziehen sich dabei auf Anhang A. z1 z 2 ⋅ n1 n2 mb2 mnok mbok m ok mn mnok mn ok k no Suchtiefe Diagnoseregeln Status 0 mbok, mb2 1 mnok 2 mnok 3 mnok optional 4 mnok optional 5 kok 6 dnok 7 dnok ok mn kok Bemerkung: Jeder Kantenzug zwischen Start- und Zielknoten entspricht einer dnok möglichen Diagnose, die durch den dnok Plan beschrieben ist. Abbildung 21: Beispiel einer graphischen Darstellung eines Plans In den nächsten Definitionen sollen derartige Pläne formal gefaßt werden. Die Grundlage hierfür ist die Beschränkung der Menge der Diagnoseregeln mit einer „Sicht“ auf das Diagnosesystem: Definition 27 (Sicht) Sei D = (Σ, X , R, p) ein Diagnosesystem. Eine Teilmenge V der Menge der Diagnoseregeln R heißt Sicht auf R . Das Diagnosesystem (Σ, X , V , p) wird auf die Sicht V reduziertes Diagnosesystem bezeichnet. 58 Mit einem reduzierten Diagnosesystem kann durch Bestensuche ein beschränkter Teilgraph berechnet werden. Entsprechend des oben skizzierten Konzeptes ist die dauerhafte Beschränkung des Diagnosesystems auf eine feste Teilmenge von Diagnoseregeln nicht ausreichend. Die Beschränkung des Diagnosesystems soll vielmehr abhängig von der Suchtiefe erfolgen. Definition 28 (Plan) Sei D = (Σ, X , R, p) ein Diagnosesystem und V = {V1 ,…,Vn } eine endliche Menge von Sichten auf R . Ein Plan ist ein Tupel P = (initial ,V , optional ) . Dabei ist initial ein Term über Σ( X ) und optional : {1,…, n} → {true, false}. Eine endliche Menge von Plänen heißt Plansystem. Bemerkung: Der Term initial soll die Ausführbarkeit eines Plans einschränken. So kann ein Plansystem Pläne für verschiedene Aufgabentypen (z.B. Addition oder Subtraktion) enthalten. 3.7.3 Planbasierte Breitensuche Aufbauend auf obigen Definitionen läßt sich nun eine Methode zur Breitensuche, wie in Algorithmus 9 gezeigt, implementieren. Die Menge leveli speichert dabei alle Terme im Iterationsschritt i . Methode Pläne w 1: 2: Für alle Pläne (initial ,{V1 ,…,Vn }, optional ) des Plansystems Falls w Instanz von initial 3: level0 = {w} 4: Für 0 < i ≤ n 5: Beschränke D auf (Σ, X , Vi , p) 6: Für alle w j ∈ leveli −1 7: 8: Expandiere w j , true (Algorithmus 5, S. 43) Falls optional (i ) dann leveli := leveli −1 ∪ ∪ {v (r , v) ∈ Follow(w )} j w j ∈leveli −1 9: sonst leveli := ∪ {v (r , v) ∈ Follow(w )} j w j ∈leveli −1 Algorithmus 9: Breitensuche nach Plänen 59 Die Berechnung von leveli in den Zeilen 8 bzw. 9 läßt sich in praktischen Implementierungen leicht in die Berechnung der Nachfolgermengen (Zeile 7) integrieren. Der Plan aus Abbildung 21 (S. 58) soll nun noch einmal aufgegriffen werden und am Beispiel der Aufgabe 1 2 ⋅ 34 die Breitensuche demonstriert werden. Da Plan angewendet werden. Die Menge level0 wird mit 1 2 ⋅ 34 eine Instanz von z1 n1 ⋅ nz22 ist, kann der {12 ⋅ 34 } initialisiert. Zur Berechnung der ersten Suchebene wird das Diagnosesystem auf die Sicht V1 = {mbok , mb2} reduziert. Es ist dann ⎛ 1 3 ⎞ ⎧ 1 ⋅ 3 (1 ⋅ 4) ⋅ (3 ⋅ 2) ⎫ , level1 = Follow⎜ ⋅ ⎟ = ⎨ ⎬ 8⋅8 ⎝ 2 4 ⎠ ⎩2 ⋅ 4 ⎭ Für die nächsten beiden Suchebenen wird das Diagnosesystem auf die Sicht V2 = V3 = {mnok} reduziert. Es errechnen sich dann ⎛ 1⋅ 3 ⎞ ⎛ (1 ⋅ 4) ⋅ (3 ⋅ 2) ⎞ level2 = Follow⎜ ⎟ ⎟ ∪ Follow⎜ 8⋅8 ⎝ 2⋅4⎠ ⎝ ⎠ ⎧ 3 1 ⋅ 3 ⎫ ⎧ 4 ⋅ (3 ⋅ 2) (1 ⋅ 4) ⋅ 6 (1 ⋅ 4) ⋅ (3 ⋅ 2) ⎫ =⎨ , , , ⎬∪⎨ ⎬ 8⋅8 64 ⎩2 ⋅ 4 8 ⎭ ⎩ 8⋅8 ⎭ und ⎛ 3 ⎞ ⎛ 1⋅ 3 ⎞ level3 = Follow⎜ ⎟ ∪ Follow⎜ ⎟ ⎝ 2⋅4⎠ ⎝ 8 ⎠ ⎛ (1 ⋅ 4) ⋅ (3 ⋅ 2) ⎞ ⎛ (1 ⋅ 4) ⋅ 6 ⎞ ⎛ 4 ⋅ (3 ⋅ 2) ⎞ ∪ Follow⎜ ⎟ ⎟ ∪ Follow⎜ ⎟ ∪ Follow⎜ 64 ⎠ ⎝ ⎝ 8⋅8 ⎠ ⎝ 8⋅8 ⎠ ⎧ 3 ⎫ ⎧ 3 ⎫ ⎧ 4 ⋅ 6 4 ⋅ (3 ⋅ 2) ⎫ ⎧ 4 ⋅ 6 (1 ⋅ 4) ⋅ 6 ⎫ ⎧ 4 ⋅ (3 ⋅ 2) (1 ⋅ 4) ⋅ 6 ⎫ , , . = ⎨ ⎬∪⎨ ⎬∪⎨ ⎬ ⎬∪⎨ ⎬∪⎨ 64 ⎭ 64 ⎭ ⎩ 64 64 ⎭ ⎩ 8 ⋅ 8 ⎩8 ⎭ ⎩8 ⎭ ⎩ 8 ⋅ 8 ⎧ 3 4 ⋅ 6 4 ⋅ (3 ⋅ 2) (1 ⋅ 4) ⋅ 6 ⎫ , , =⎨ , ⎬ 64 ⎭ 64 ⎩8 8 ⋅ 8 60 Für die nächsten beiden Suchebenen bleibt das Diagnosesystem auf die Sicht V4 = V5 = {mnok} reduziert. Wegen optional (4) = optional (5) = true wird jedoch die jeweils vorige Suchebene beibehalten: ⎛ 3⎞ ⎛ 4⋅6⎞ ⎛ 4 ⋅ (3 ⋅ 2) ⎞ ⎛ (1 ⋅ 4) ⋅ 6 ⎞ level4 = level3 ∪ Follow⎜ ⎟ ∪ Follow⎜ ⎟ ∪ Follow⎜ ⎟ ∪ Follow⎜ ⎟ ⎝8⎠ ⎝ 8⋅8 ⎠ ⎝ 64 ⎠ ⎝ 64 ⎠ ⎧ 24 4 ⋅ 6 ⎫ ⎧ 4 ⋅ 6 ⎫ ⎧ 4 ⋅ 6 ⎫ = level3 ∪ ∅ ∪ ⎨ , ⎬∪⎨ ⎬∪⎨ ⎬ ⎩ 8 ⋅ 8 64 ⎭ ⎩ 64 ⎭ ⎩ 64 ⎭ ⎧ 3 4 ⋅ 6 4 ⋅ (3 ⋅ 2) (1 ⋅ 4) ⋅ 6 24 4 ⋅ 6 ⎫ , , , , =⎨ , ⎬ 64 64 8 ⋅ 8 64 ⎭ ⎩8 8 ⋅ 8 und ⎛ 24 ⎞ ⎛ 4⋅6⎞ level5 = level4 ∪ … ∪ Follow⎜ ⎟ ∪ Follow⎜ ⎟ ⎝ 8⋅8 ⎠ ⎝ 64 ⎠ ⎧ 24 ⎫ ⎧ 24 ⎫ = level4 ∪ … ∪ ⎨ ⎬ ∪ ⎨ ⎬ ⎩ 64 ⎭ ⎩ 64 ⎭ ⎧ 3 4 ⋅ 6 4 ⋅ (3 ⋅ 2) (1 ⋅ 4) ⋅ 6 24 4 ⋅ 6 24 ⎫ , , , , , ⎬ =⎨ , 64 64 8 ⋅ 8 64 64 ⎭ ⎩8 8 ⋅ 8 Für die restlichen drei Suchebenen wird das Diagnosesystem auf die Sicht V6 = {kok} bzw. auf die Sichten V7 = V8 = {dnok} reduziert. Es ergeben sich ⎛ 3⎞ ⎛ 24 ⎞ level6 = Follow⎜ ⎟ ∪ … ∪ Follow⎜ ⎟ ⎝ 64 ⎠ ⎝8⎠ ⎧ 24 : 2 24 : 4 24 : 8 ⎫ ⎧ 24 : 2 24 : 4 24 : 8 ⎫ , , , , = ∅ ∪… ∪ ∅ ∪ ⎨ ⎬=⎨ ⎬ ⎩ 64 : 2 64 : 4 64 : 8 ⎭ ⎩ 64 : 2 64 : 4 64 : 8 ⎭ ⎛ 24 : 2 ⎞ ⎛ 24 : 4 ⎞ ⎛ 24 : 8 ⎞ level7 = Follow⎜ ⎟ ∪ Follow⎜ ⎟ ∪ Follow⎜ ⎟ ⎝ 64 : 2 ⎠ ⎝ 64 : 4 ⎠ ⎝ 64 : 8 ⎠ ⎧ 12 24 : 2 ⎫ ⎧ 6 24 : 4 ⎫ ⎧ 3 24 : 8 ⎫ , , , =⎨ ⎬∪⎨ ⎬∪⎨ ⎬ ⎩ 64 : 2 32 ⎭ ⎩ 64 : 4 16 ⎭ ⎩ 64 : 8 8 ⎭ ⎧ 12 24 : 2 6 24 : 4 3 24 : 8 ⎫ , , , , , =⎨ ⎬ ⎩ 64 : 2 32 64 : 4 16 64 : 8 8 ⎭ und ⎛ 12 ⎞ ⎛ 24 : 8 ⎞ level8 = Follow⎜ ⎟ ∪ … ∪ Follow⎜ ⎟ ⎝ 64 : 2 ⎠ ⎝ 8 ⎠ ⎧3⎫ =⎨ ⎬ ⎩8 ⎭ 61 4 BugFix In den folgenden Kapiteln wird mit dem Diagnoseprogramm BugFix eine mögliche Implementierung einer computergestützten Fehlerdiagnose auf der Basis der eingeführten Konzepte vorgestellt. BugFix ist weitestgehend unabhängig von der Domäne des mathematischen Lernsystems. Hierzu wird eine dem Bereich entsprechende Spezifikation des Diagnosesystems von BugFix gelesen und in eine interne, für die Fehlerdiagnose geeignete, Darstellung umgesetzt. Die offene Spezifikation des Diagnosesystems ist wartungsfreundlich und ermöglicht im Ausnahmefall sogar eine Anpassung durch einen menschlichen Lehrer am Einsatzort. Die Entwicklung eines Diagnosesystems ist ein vergleichsweise aufwendiger Vorgang bei der Entwicklung eines intelligenten Lernsystems. Für einige Anwendungsbereiche kann hierbei jedoch glücklicherweise auf Publikationen aus der Fachdidaktik, der Kognitionswissenschaft oder der Psychologie zurückgegriffen werden, die als Grundlage der Arbeiten dienen können. Im Rahmen der Integration von BugFix in verschiedene Projekte zur Bruchrechnung wurde ein Diagnosesystem für die Bruchrechnung auf diese Weise entwickelt. Die zugehörige Dokumentation befindet sich im Anhang A. 4.1 Spezifikation des Diagnosesystems (BFS) Die Spezifikation von Diagnosesystemen für BugFix erfolgt in einer eigenen Spezifikationssprache: BugFix Spezifikation, kurz BFS. Das wichtigste Sprachkonstrukt von BFS ist der Term (vgl. Abbildung 22). Alle Sprachkonstrukte von BFS werden durch Terme in Präfix-Notation beschrieben. Das Syntaxdiagramm für BFS ist Abbildung 23 zu entnehmen. Die Erklärung der einzelnen Rechtecke wird in den nächsten Abschnitten erläutert. Kommentare werden grundsätzlich mit „//“ eingeleitet und erstrecken sich bis zum Ende einer Zeile. Term Bezeichner Konstante Bezeichner ( Term , Abbildung 22: Syntaxdiagramm Term 62 ) Spezifikation Sortendeklaration Aritätsdeklaration Regel KontextDeklaration Kontext Gruppe PlanDeklaration Plan InAktiv PlanAktiv Kommentar Abbildung 23: Syntaxdiagramm Spezifikation Kommentar // CR Alle Zeichen außer CR Abbildung 24: Syntaxdiagramm Kommentar 4.1.1 Grundlegende Syntaxdiagramme Die grundlegenden Syntaxdiagramme für Buchstaben, Zahlen, der verschiedene Konstantentypen und Bezeichnern sind in Abbildung 25 bis Abbildung 34 enthalten: Buchstabe a ... z A ... Z Abbildung 25: Syntaxdiagramm Buchstabe Ziffer 0 1 ... 9 Abbildung 26: Syntaxdiagramm Ziffer + Vorzeichen - Abbildung 27: Syntaxdiagramm Vorzeichen 63 Ziffernfolge Ziffer Abbildung 28: Syntaxdiagramm Ziffernfolge IntKonstante Ziffernfolge Vorzeichen Abbildung 29: Syntaxdiagramm IntKonstante Beispiel: 15 und -3 Skalierung Ziffernfolge E Vorzeichen e Abbildung 30: Syntaxdiagramm Skalierung FloatKonstante Ziffernfolge . Ziffernfolge Vorzeichen Skalierung Abbildung 31: Syntaxdiagramm FloatKonstante Beispiel: 1.23 und 4E-15 StrKonstante " " Alle Zeichen außer " und CR Abbildung 32: Syntaxdiagramm StrKonstante Konstante IntKonstante FloatKonstante StrKonstante Abbildung 33: Syntaxdiagramm Konstante Bezeichner Buchstabe Buchstabe Ziffer Abbildung 34: Syntaxdiagramm Bezeichner Beispiel: b1 und add 64 4.1.2 Signatur Der erste Schritt zur Spezifikation eines Diagnosesystems mit BFS ist die Angabe der Signatur gemäß Definition 1 (S. 19). BugFix deklariert die grundlegenden Sorten „int“ für Ganzzahlen, „float“ für Fließkommazahlen und „str“ für Zeichenketten bereits selbständig. Konstanten dieser im folgenden als „atomar“ bezeichneten Sorten werden automatisch deklariert. Weitere Sorten können in BFS deklariert werden (vgl. Abbildung 35). Der Operator „sorte“ erhält als einziges Argument den gewünschten Bezeichner der neuen Sorte. Sortendeklaration sorte( Bezeichner ); Abbildung 35: Syntaxdiagramm Sortendeklaration Beispiel: sorte(bruch); sorte(gem); Die Angaben der Operatoren und Konstanten einer Signatur erfolgt in Form der Aritätenmengen (vgl. Definition 2, S. 20). Aritätenmengen können in BFS gemäß Abbildung 36 bis Abbildung 38 spezifiziert werden. Dem Operator „arität“ folgt dabei als erstes Argument die Menge der beteiligten Sorten und als weitere Argumente die Operatoren bzw. Konstanten dieser Arität. Operatoren werden dabei durch nachgestelltes „(_)“ kenntlich gemacht. AritätKonstante arität(sorte( Bezeichner ) , Bezeichner ); Bezeichner (_) Abbildung 36: Syntaxdiagramm AritätKonstante AritätOperator arität(sorte( Bezeichner ) , , Abbildung 37: Syntaxdiagramm AritätOperator AritätKonstante Aritätsdeklaration AritätOperator Abbildung 38: Syntaxdiagramm Aritätsdeklaration Beispiel: sorte(int); arität(sorte(int),a,b,c); arität(sorte(int,int,int),add(_),sub(_)); 65 ); Insbesondere lassen sich durch die Deklaration neuer Sorten und Aritätenmengen auch neue, zusammengesetzte Datentypen erzeugen. Das nächste Beispiel deklariert so die Sorten „bruch“ und „gem“ für Brüche bzw. gemischte Zahlen. Dabei ist der Bezeichner der Sorte vom Bezeichner des jeweiligen Operatoren zu unterscheiden. Beispiel: sorte(bruch); sorte(gem); arität(sorte(int,int,bruch),bruch(_)); arität(sorte(int,bruch,gem),gem(_)); 4.1.3 Diagnoseregeln Diagnoseregeln stellen den wohl wichtigsten Bestandteil eines Diagnosesystems dar. In BFS erfolgt die Spezifikation einer Diagnoseregel entsprechend Abbildung 39. Dem Operator „regel“ folgen insgesamt acht Argumente: der Regelname, die Priorität der Regel entsprechend der Prioritätsfunktion, eine Angabe, ob die Diagnose eine mathematisch korrekte Umformung darstellt, einen Wert für die Bewertungsfunktion von Regeln (Definition 16, S. 35), die linke und rechte Seite der Diagnoseregel, die Anwendungskondition und eine Beschreibung der Rechenstrategie in Textform (vgl. auch Tabelle 3, S. 67). Regel regel( StrKonstante IntKonstante , Regelname , Priorität wahr schlecht , Korrektheitsgrad falsch FloatKonstante , Term , Term , StrKonstante Term , Regelseiten Anwendungskondition ); Abbildung 39: Syntaxdiagramm Regel 66 Bewertung Beschreibung Tabelle 3: Argumente der Regelspezifikation Nr. Bedeutung Erklärung 1 Regelname Der Regelname gibt der Diagnoseregel einen kurzen Namen mit dem die Regel identifiziert werden kann. Die Angabe erfolgt als Zeichenkette. Der Regelbezeichner muß eindeutig sein. 2 Priorität Die Priorität gibt an, welchen Wert die Prioritätsfunktion (vgl. Definition 10 und Definition 11, S. 25) für diese Regel liefert. Es handelt sich bei der Priorität um eine positive ganze Zahl. 3 Korrektheitsgrad Der Korrektheitsgrad gibt an, ob die Diagnoseregel eine mathematisch korrekte Rechenstrategie beschreibt (wahr), eine zwar korrekte, aber ungünstige Rechenstrategie (schlecht) oder eine fehlerhafte Rechenstrategie (falsch) beschreibt. 4 Bewertung Gibt einen Vorgabewert für die Bewertungsfunktion für Regeln an. 5 Linke Regelhälfte Linke Seite der Diagnoseregel. Der Ausdruck darf Variablenbezeichner enthalten. 6 Rechte Regelhälfte Rechte Seite der Diagnoseregel. Der Ausdruck darf Variablenbezeichner enthalten. 7 Anwendungskondition Anwendungskondition der Diagnoseregel in Term-Notation (siehe Abschnitt 4.1.4). Der Ausdruck darf Variablenbezeichner enthalten. Der Ausdruck „wahr“ ermöglicht die Festlegung einer unbedingten Anwendbarkeit einer Regel. 8 Beschreibung Beispiel: Eine Beschreibung der Fehlerstrategie in Form einer Zeichenkette. Der Wert hat auf die Fehlerdiagnose keinen Einfluß, kann jedoch von Anwendungsprogrammen bei der Auswertung der Fehlerdiagnose benutzt werden. regel("anok",200,wahr,0.95,add(a,b),c,is(c,add(a,b)), "Korrekte Addition von natürlichen Zahlen"); regel("abok",100,wahr,0.80, add(bruch(z1,n),bruch(z2,n)),bruch(add(z1,z2),n), wahr, "Korrekte Addition von Brüchen"); 67 4.1.4 Anwendungskondition Die Implementierung von BugFix verwendet Terme zur Beschreibung von Anwendungskonditionen (vgl. Definition 8, S. 24)., zu deren Beschreibung Terme verwendet werden. Agiert die Anwendungskondition als Wächter über die Anwendbarkeit einer Diagnoseregel u → v Ac , so wird die durch einen Term t beschriebene Anwendungskondition mit einer für u gültige Substitution σ instanziert und nach „wahr“ oder „falsch“ ausgewertet. Im ersten Fall erlaubt der Wächter die Anwendung der Diagnoseregel ( Ac(σ ) = {σ } ), im zweiten Fall verhindert er sie ( Ac(σ ) = ∅ ). Alternativ kann die Anwendungskondition als Multiplikator agieren. Dabei beschränkt die Implementierung von BugFix das allgemeinere Konzept der Anwendungskondition auf eine Iterationsvariable, die Werte zwischen einer unteren und einer oberen Schranke annehmen kann. I Ac ist also Teilmenge der natürlichen Zahlen. Ein weiteres Argument agiert als Wächter. Das Syntaxdiagramm ist Abbildung 40 zu entnehmen. bool Anwendungskondition for( Bezeichner int , , int , bool ) Abbildung 40: Syntaxdiagramm Anwendungskondition Die durch BugFix auswertbaren Terme genügen dabei den Syntaxdiagrammen in Abbildung 41 bis Abbildung 44. Die dabei erlaubten Operatoren sind in BugFix vordefiniert und mit einer entsprechenden Semantik hinterlegt (vgl. Tabelle 4 bis Tabelle 6). Die vordefinierten Operatoren sind im wesentlichen auf die wichtigsten arithmetischen und logischen Operationen beschränkt. Hinzu kommen einige weitere Operatoren, die für die Realisierung des Diagnosesystems zur Bruchrechnung hilfreich waren, etwa die Berechnung des kleinsten gemeinsamen Vielfachen. Weitere vordefinierte Operatoren für andere Bereiche können bei Bedarf in BugFix integriert werden. 68 Bezeichner wahr bool falsch , and( bool or( not( bool is( Bezeichner t( int , int/float , int ) =( <>( >( int/float , int/float >=( <( <=( Abbildung 41: Syntaxdiagramm bool Tabelle 4: Bedeutung der Operatoren im Syntaxdiagramm bool Operator Bedeutung Bemerkungen wahr Logische Konstante „wahr“ falsch Logische Konstante „falsch“ and Logisches Und or Logisches Oder not Logisches Nicht is Wertzuweisung Erweiterung der Einsetzung gemäß Anwendungskondition. Die Wertzuweisung liefert die logische Konstante „falsch“, falls die Auswertung des zweiten Arguments nicht möglich ist, z.B. Division durch 0. t ist Teiler von Liefert „wahr“, wenn das erste Argument echter Teiler des zweiten ist, sonst „falsch“ = Vergleich auf Gleichheit <> Vergleich auf Ungleichheit > Vergleich „größer als“ Die Argumente können sowohl ganze Zahlen oder Fließkommazahlen (auch gemischt) sein. Bei der Auswertung führt BugFix ggf. eine Typumwandlung der ganzen Zahl in eine Fließkommazahl durch. >= Vergleich „größer oder gleich“ < Vergleich „kleiner als“ <= Vergleich „kleiner oder gleich“ Die Auswertung der Argumente stoppt, sobald das Ergebnis des Terms bestimmt ist. 69 Bezeichner IntKonstante int add( sub( mul( div( bruch( int min( , int max( mod( kgv( ) ggt( runde( int/float ganz( abs( int Abbildung 42: Syntaxdiagramm int Tabelle 5: Bedeutung der Operatoren im Syntaxdiagramm int Operator Bedeutung Bemerkungen add Addition sub Subtraktion mul Multiplikation div Division bruch Division (identisch div) min Minimum max Maximum mod Restklassendivision kgv kleinstes gemeinsames Vielfaches ggt größter gemeinsamer Teiler runde Rundung runde(4.6) = 5 ganz Ganzzahliger Anteil runde(4.6) = 4 abs Absoluter Wert Division durch 0 führt zu fehlerhafter Auswertung, Wertzuweisungen mit „is“ liefern entsprechend die logische Konstante „falsch“. Die Division liefert ggf. eine Fließkommazahl (vgl. Abbildung 43) Rest der Division 70 Bezeichner FloatKonstante float gem( int , float int , float float , int float , float add( sub( mul( div( bruch( ) min( max( reell( int/float abs( float Abbildung 43: Syntaxdiagramm float Tabelle 6: Bedeutung der Operatoren im Syntaxdiagramm float Operator Bedeutung Bemerkungen add Addition sub Subtraktion mul Multiplikation div Division bruch Division (identisch div) min Minimum max Maximum reell Nachkommaanteil abs Absoluter Wert Division durch 0 führt zu fehlerhafter Auswertung, Wertzuweisungen mit „is“ liefern entsprechend die logische Konstante „falsch“. reell(4.6) = 0.6 int int/float float Abbildung 44: Syntaxdiagramm int/float 71 4.1.5 Kontextkondition Die Angabe von Kontextkonditionen (vgl. Definition 26, S. 55) für Diagnoseregeln ist in BFS optional. Die Spezifikation einer Kontextkondition besteht aus der Kontextdeklaration und einer Auflistung der Kontexte. Bei der Deklaration folgen auf dem Operator „kontext“ zwei Argumente. Das erste Argument gibt den Namen der Diagnoseregeln an, für die der Kontext deklariert wird. Mit dem zweiten Argument wird festgelegt, ob die folgende Auflistung erlaubte Kontexte („wahr“) oder verbotene Kontexte („falsch“) enthält. wahr KontextDeklaration kontext( StrKonstante , ); falsch Abbildung 45: Syntaxdiagramm KontextDeklaration Nach der Deklaration eines Kontextes kann die Auflistung der erlaubten bzw. verbotenen Kontexte erfolgen. Nach dem Operator „kontext“ wird dazu für jeden zu erlaubenden bzw. zu verbietenden Kontext ein Term bestehend aus dem Namen der Diagnoseregeln und dem Kontext angegeben. Die Platzhaltervariable wird in BFS durch das Zeichen „@“ ersetzt.. Optional kann als drittes Argument ein logischer Ausdruck angegeben werden, dessen Semantik analog zur Anwendungskondition ist. KontextTerm Bezeichner Konstante @ Bezeichner ( KontextTerm ) , Abbildung 46: Syntaxdiagramm KontextTerm Kontext kontext( StrKonstante , KontextTerm ); , bool Abbildung 47: Syntaxdiagramm Kontext Folgendes Beispiel zeigt die Spezifikation einer Diagnoseregel für das Kürzen eines Bruches. Eine Kontextkondition mit Auflistung verbotener Kontexte verhindert, daß bei der Addition von Brüchen einer der Brüche gekürzt wird, wenn bereits ein gemeinsamer Hauptnenner vorhanden ist. 72 Beispiel: regel("kok",100,wahr,0.95, bruch(z1,n1),bruch(div(z1,k),div(n1,k)), for(k,2,ggt(n1,z1),and(t(k,n1),t(k,z1))), "Korrektes Kürzen eines Bruchs"); kontext("kok",falsch); kontext("kok",add(@,bruch(z2,n2)),=(n1,n2)); kontext("kok",add(bruch(z2,n2),@),=(n1,n2)); kontext("kok",add(@,gem(g,bruch(z2,n2))),=(n1,n2)); kontext("kok",add(gem(g,bruch(z2,n2)),@),=(n1,n2)); 4.1.6 Gruppen In BFS können Diagnoseregeln zu einer Gruppe zusammengefaßt werden. Gruppen können z.B. bei der Spezifikation von Plänen als Sicht (Definition 27, S. 58) verwendet werden. Die Spezifikation einer Gruppe erfolgt durch den Operator „gruppe“. Das erste Argument gibt der Gruppe einen eindeutigen Namen, alle weiteren Argumente bezeichnen entweder die Namen von Diagnoseregeln oder bereits spezifizierten Gruppen, die in die neue Gruppe aufgenommen werden sollen. Gruppe gruppe( StrKonstante , StrKonstante ); GruppenAufruf Abbildung 48: Syntaxdiagramm Gruppe GruppenAufruf gruppe( StrKonstante ) Abbildung 49: Syntaxdiagramm GruppenAufruf Im folgenden Beispiel ist die Spezifikation von Gruppen demonstriert. Die beiden Gruppen „addbh1“ und „addbh2“, die verschiedene Diagnoseregeln enthalten, werden in einer weiteren Gruppe zusammengefaßt. Beispiel: gruppe("addbh1","abhok/1","abh0","abh7","abh8","abh9"); gruppe("addbh2","abhok/2","abh1","abh2","abh3"); gruppe("addbh1/2",gruppe("addbh1"),gruppe("addbh2")); 73 4.1.7 Pläne Die Spezifikation von Plänen in BFS orientiert sich an Definition 28 (S. 59). Der erste Schritt zur Spezifikation eines Plans ist seine Deklaration. Bei der Deklaration erhält der Operator „plan“ als erstes Argument einen eindeutigen Namen für den Plan. Der zweite Operator ist optional und enthält den Term initial , von dem die Ausführung eines Plans abhängt. Unterbleibt die Angabe, ist der Plan nie anwendbar und agiert lediglich als Teilplan für andere Pläne. PlanDeklaration plan( StrKonstante ); , Term Abbildung 50: Syntaxdiagramm PlanDeklaration Bei der eigentlichen Spezifikation eines Planes ist für jede Suchebene ein eigener Term vorzusehen. Der Operator „plan“ hat dabei zwei oder drei Argumente. Nach der Wiederholung des Namens des Planes als erstes Argument folgt die Angabe der Sicht in Form einer einzelnen Diagnoseregel oder einer deklarierten Gruppe. Alternativ kann der zweite Operator auch auf einen Teilplan verweisen. Das optionale dritte Argument gibt an, ob die Anwendung der spezifizieren Regeln bzw. des Planes optional ist. Plan plan( StrKonstante , StrKonstante GruppenAufruf ); , optional PlanAufruf Abbildung 51: Syntaxdiagramm Plan PlanAufruf plan( StrKonstante ) Abbildung 52: Syntaxdiagramm PlanAufruf Im folgenden Beispiel werden zwei Pläne spezifiziert. Der erste Plan „simp1“ agiert lediglich als Teilplan, d.h. er wird nie eigenständig ausgeführt. Die Ausführung des zweiten Plans ist möglich, wenn die Aufgabenstellung eine Instanz von z1 n1 + nz22 ist. Zur Erläuterung der Gruppen sei erwähnt, daß es sich bei diesem Beispiel um einen Auszug aus dem Diagnosesystem zur Bruchrechnung handelt. Dort enthält die Gruppe „k“ korrekte Rechenstrategien zum Kürzen eines Bruchs und die Gruppe „primitiv“ die Rechenstrategien in den natürlichen Zahlen. Der erste Plan erlaubt also das Kürzen eines Bruchs. Der zweite Plan beschreibt die Addition von Brüchen (ohne Bildung eines Hauptnenners). 74 Beispiel: plan("simp1"); plan("simp1",gruppe("k")); plan("simp1",gruppe("primitiv")); plan("simp1",gruppe("primitiv")); plan("addb1",add(bruch(z1,n1),bruch(z2,n2))); plan("addb1",gruppe("addb")); plan("addb1",gruppe("primitiv")); plan("addb1",gruppe("primitiv")); plan("addb1",gruppe("primitiv"),optional); plan("addb1",plan("simp1")); 4.1.8 Deaktivierung Während der Entwicklung eines Diagnosesystems und zur Anpassung des Diagnosesystem an unterschiedlich leistungsfähige Computer ermöglicht BFS die Deaktivierung von einzelnen Diagnoseregeln, Gruppen von Diagnoseregeln oder Plänen, sowie der vollständigen Besten- bzw. Plansuche. Dem Operator „inaktiv“ wird hierzu als Argument der Regelname, ein Gruppen- oder Planaufruf bzw. die Bezeichner „bestensuche“ bzw. „plansuche“ übergeben. Inaktiv inaktiv( StrKonstante ); Gruppenaufruf Planaufruf bestensuche plansuche Abbildung 53: Syntaxdiagramm Inaktiv Im Unterschied zur Deaktivierung einer Diagnoseregel durch Kommentarmarkierungen „//“ kann bei der Deaktivierung mit „inaktiv“ die Diagnoseregel auch weiterhin Bestandteil von Gruppen oder Plänen sein. Einen Spezialfall bilden Diagnoseregeln, die zwar während der Bestensuche deaktiviert sind, jedoch durch Pläne aktiviert werden können. BFS sieht hierfür den Operator „planaktiv“ vor. Als Argument folgt der entsprechende Name der Diagnoseregel oder ein Gruppenaufruf. 75 PlanAktiv planaktiv( StrKonstante ); Gruppenaufruf Abbildung 54: Syntaxdiagramm PlanAktiv Beispiel: inaktiv("ab4"); inaktiv(plan("addh4")); planaktiv(gruppe("addbkreuz")); 4.2 Design und Implementierung Die Programmiersprache Prolog (siehe z.B. Clocksin, Mellish, 1987 und Sterling, Shapiro, 1988) unterstützt mit zahlreichen Sprachkonstrukten die Entwicklung von Diagnoseprogrammen. So diente dann auch ein überwiegend in Prolog entwickeltes Diagnoseprogramm (Hennecke, 1997a, 1997b) als lehrreicher Prototyp für die Entwicklung von BugFix. Leider konnte auf dieser Basis jedoch keine für die dynamische Berechnung der Nachfolgermengen hinreichend effiziente Implementierung gefunden werden, so daß statt dessen eine objektorientierte Erweiterung der Programmiersprache Pascal3 eingesetzt wurde. Auch wenn eine objektorientierte Implementierung zahlreiche Vorteile bietet, wurde BugFix aus Gründen besserer Performanz überwiegend prozedural entwickelt. In den folgenden Abschnitten wird das Design dennoch objektorientiert dargestellt, da dies eine besonders übersichtliche Beschreibung von BugFix ermöglicht. Die Darstellung orientiert sich dabei stark an der von Booch, Rumbaugh und Jacobsen (1999) entwickelten Unified Modeling Language (UML). Neben der detaillierten Sprachbeschreibung in Rumbaugh, Jacobsen und Booch (1999) sei hier insbesondere auf die kompakte Darstellung in Oestereich (1998) verwiesen. Für die hier verwendeten Konzepte unterscheidet sich die Notation von UML jedoch nicht wesentlich von der eigentlich veralteten, aber sehr weit verbreiteten Object Modeling Technique (OMT) aus Rumbaugh (1993). In den folgenden Abschnitten soll das Design und die Implementierung von BugFix kurz vorgestellt werden. Eine detaillierte Beschreibung findet sich in der technischen Dokumentation, die nicht Bestandteil der vorliegenden Arbeit ist. 4.2.1 Signatur Für die Verwaltung der Signatur des Diagnosesystems verfügt BugFix über ein Sortenmanagement (Abbildung 55), eine Operatoren- (Abbildung 56) und eine Variablenverwaltung (Abbildung 57). 3 Verwendet wurde das in der Entwicklungsumgebung Delphi integrierte ObjectPascal der Firma Inprise (früher Borland). 76 Das Sortenmanagement besteht aus der Sortenverwaltung zur Speicherung der vordefinierten und der deklarierten Sortenbezeichner und der Aritätenverwaltung zur Speicherung von Aritäten. Sorten und Aritäten werden über entsprechende Indexe identifiziert. Jeder registrierten Arität können Operatoren, Konstanten und Variablen zugeordnet werden. Die Sortenverwaltung enthält nach Initialisierung bereits die vordefinierten Sorten Int, Float und Str. «Dienstprogramm» Sortenverwaltung -Index -SortCount : Integer +RegisterSort(Ident : TSortIdent) : TSort . +GetSortCount() : Integer +FindSort(Ident : TSortIdent) : TSort +GetSortIdent(Nr : TSort) : TSortIdent TSort -Ident : TSortIdent * «Dienstprogramm» Sortenmanagement 1 {geordnet} Arity +ResetSortManagement() TSortIdent String [20] Arity.Count > 1 * -Count : Integer 1 TOperator * Arity.Count = 1 1 -Index TVariable «Dienstprogramm» Aritätenverwaltung -ArtiySetCount : Integer +RegisterArity(ExpTree : PExpTree) : Boolean . +GetArityCount() : Integer +ValidArity(ExpTree : PExpTree) : Boolean TExpTree Die Registrierung von Arität erfolgt über den aus der Bug-Fix-Spezifikation geparsten Terme Abbildung 55: Klassendiagramm Sortenmanagement (UML) Die Operatorenverwaltung dient zur Speicherung der Bezeichner der Operatoren. Die Identifizierung der Operatoren erfolgt über einen Index. Neben den Bezeichnern stellt die Operatorenverwaltung auch Informationen für Eingabekomponenten zur Verfügung (nicht modelliert). 77 In der Variablenverwaltung werden u.a. die Bezeichner von Variablen und Bindungen der Variablen an Terme verwaltet. In der Variablenverwaltung werden ebenfalls alle deklarierten Konstanten registriert. Atomare Konstanten, wie Ganz- und Fließkommazahlen und Zeichenketten sind nicht extra registriert. «Dienstprogramm» Operatorverwaltung -Index ResetOperatoren() RegisterOperator(S : AnsiString) : TOperator GetOperatorCount() : Integer FindOperator(S : AnsiString) : TOperator GetOperatorIdent(Nr : TOperator) : TOperatorIdent . TOperator -Ident : TOperatorIdent Die Operatorverwaltung enthält nach der Initialisierung bereits vordefinierte Operatoren (z.B. add, sub, is, max), die für die Auswertung der Anwendungskonditionen mit einer Semantik belegt werden Abbildung 56: Klassendiagramm Operatorverwaltung (UML) 78 TOperatorIdent String [20] <<Dienstprogramm>> Variablenverwaltung +ResetVariablen() +GetVariablenCount() : Integer +LookupVariable(Ident : TVarIdent) : TVariable +GetVariableIdnet(Nr : TVariable) : TVarIdent +SetVariableConst(Nr : TVariable) +SetVariableVar(Nr : TVariable) +UnBindVariablen() +UnBindVariable(Nr : TVariable) +BindVariable(Nr : TVariable, Tree : PExpTree) : Boolean +GetVariable(Nr : TVariable) : PExpTree +IsVariableBind(Nr : TVariable) : Boolean +SaveVariableBinds() +LoadVariableBinds() +ResetVariableUsed() +GetVariableUsed(Nr : TVariable) : Integer +EnterExecVariable(Nr : TVariable) : Boolean +LeaveExecVariable(Nr : TVariable) -Nr TVariable -Ident : TVarIdent -Typ : TVarFieldType -Used : Integer -Bind : PExpTree -BindSaved: PExeTree -Exec : Boolean TExpTree <<Aufzählung>> TVarFieldType vt_Variable vt_Konstante TVarIdent String [20] Die Variablenverwaltung enthält nach der Initialisierung bereits vordefinierte Konstanten (z.B. wahr, falsch). Abbildung 57: Klassendiagramm Variablenverwaltung (UML) 4.2.2 Terme Für die Arbeit eines Diagnoseprogramms stellt der flexible und effiziente Umgang mit Termen eine der zentralen Aufgaben dar. BugFix stellt Terme als gerichteten Graphen dar. Dessen Knoten entsprechen entweder Operatoren, atomare Werte (ganze Zahlen, Fließkommazahlen und Zeichenketten), Konstanten oder Variablen. Der in Abbildung 57 gezeigten Grundidee einer hierarchischen Klassenstruktur stehen die schlechten Laufzeiteigenschaften einer objektorientierten Implementierung entgegen. BugFix verwendet daher variante Records. Die Liste der Argumente eines Operators werden als verkettete Liste der Argumente realisiert, die im folgenden als Kinderliste bezeichnet wird. Für den Zugriff auf Terme steht entsprechend eine prozedurale Schnittstelle zur Verfügung. 79 Implementierung erfolgt als varianter Record <<Aufzählung>> TNoteTyp TExpTree nt_Inner nt_IntOuter nt_StrOuter nt_FloatOuter nt_Variable -Assessment : Double -MinDeep : Integer NoteTyp TExpTree (Inner) Operator TExpTree (Int) -Value : Integer TExpTree (Float) -FloatValue : Double TExpTree (Str) TExpTree (Var) -StrValue : PChar ChildList Variable Tree TChildList TVariable TOperator Next Abbildung 58: Klassendiagramm TExpTree (UML) Zur Verdeutlichung der Implementierung der Kinderliste dient das Zeigerdiagramm in Abbildung 59. Es zeigt die Repräsentierung des Terms 1 2 + 34 . Dabei stehen Kreise für Operatoren und die Rechtecke für ihre Kinderlisten. + b b 1 2 3 Abbildung 59: Zeigerstruktur von TExpTree für 4 1 2 + 3 4 Alle von BugFix erzeugten Terme werden in eine Hash-Tabelle (vgl. Knuth, 1973) eingetragen, um einen bestimmten Term möglichst schnell wiederfinden zu können. Diese Operation ist insbesondere für die dynamische Berechnung der Nachfolgermengen wichtig. Beim Hashing wird mittels einer einfachen arithmetischen Hash-Funktion ein Schlüssel berechnet, der als Adresse des Terms 80 in der Tabelle dient. BugFix arbeitet dabei nach dem Verfahren des Open-Hashing, d.h. wird mehreren Termen durch die Hash-Funktion ein identischer Schlüssel zugewiesen, werden die Terme in eine verketteten Liste gespeichert (siehe Abbildung 60). TRegList ... 5 6 7 8 9 ... Next Next Next Tree Tree Tree ... ... ... Next Next Tree Tree ... ... TExpTree HashArray Abbildung 60: Hash-Tabelle mit verketten Listen für Datensätze des Typs TExpTrees mit gleichen Hash-Adressen (open-hashing) Die Speicherung der Terme erfolgt in BugFix nach dem Prinzip der maximalen Strukturteilung (maximum structure sharing). Anstatt einen mehrfach benötigten (Teil-) Term mehrfach zu erzeugen wird der (Teil-) Term lediglich mehrfach referenziert. Hierfür ist die Bestimmung der Adresse des (Teil-) Terms im Speicher nötig, die über die Hash-Tabelle erfolgen kann. In der Termgraphersetzung (siehe Sleep, Plasmeijer, van Eekelen, 1993; Plasmeijer; van Eekelen, 1993; Plump, 1998) werden Terme ebenfalls als Graphen repräsentiert. Hier spricht man in diesem Zusammenhang von vollständig kollabierten Graphen. Für die Fehlerdiagnose ist es besonders wichtig, daß nicht nur einzelne Terme in sich vollständig kollabiert sind, sondern alle bekannten Terme untereinander ebenfalls vollständig kollabiert sind. Die Speicherung und Kollabierung der Terme werden durch die Schnittstelle in Abbildung 61 vollständig nach außen verborgen. Dies ist möglich, da es bei der Fehlerdiagnose nie nötig ist, identische (Teil-) Terme zu unterscheiden. Die Funktionen zum Erstellen von Termen sind daher so ausgelegt, daß sie vor dem dynamischen Reservieren eines Speicherplatz zuerst in der Tabelle nach den zu erstellenden Term suchen. Ist der Term bereits in der Hash-Tabelle registriert, wird keine neue Instanz des gleichen Terms angelegt, sondern ein Zeiger auf den bereits registrierten Datensatz verwendet. Dieser Mechanismus wird bei mehrstelligen Operatoren auf alle Argumente fortgesetzt, so daß bereits bei der Erstellung von Termen die maximale Stukturteilung sichergestellt wird. Insbe81 sondere wird die Menge der Terme vollständig kollabiert gespeichert. Um Nebenläufigkeit (z.B. zwischen Fehlerdiagnose und Eingabekomponente) zu ermöglichen, ist dieser Mechanismus durch kritische Regionen (Dijkstra, 1968) geschützt. TExpTree TChildList <<Dienstprogramm>> ExpTreeVerwaltung -Hash-Tabelle TNoteTyp +StrToExpTree(AStr : AnsiString) : PExpTree +IsOperator(ExpTree : PExpTree) : Boolean +Operator(ExpTree : PExpTree, AOperator : TOperator) : Boolean +GetExpTreeNoteTyp(ExpTree : PExpTree) : TNoteTyp +GetExpTreeInt(ExpTree : PExpTree) : Integer +GetExpTreeFloat(ExpTree : PExpTree) : Double +GetExpTreeCStr(ExpTree : PExpTree) : PChar +GetExpTreeStr(ExpTree : PExpTree) : AnsiString +GetExpTreeOperator(ExpTree : PExpTree) : TOperator +GetExpTreeVariable(ExpTree : PExpTree) : TVariable +GetExpTreeAssessment(ExpTree : PExpTree) : TRuleAssessment +SetExpTreeAssessment(ExpTree : PExpTree, Assessment : TRuleAssessment) TOperator TVariable TRuleAssessment Abbildung 61: vereinfachtes ExpTreeVerwaltung (UML) Klassendiagramm Dienstprogramm 4.2.3 Diagnoseregeln Die Verwaltung der Diagnoseregeln erfolgt über die Regelverwaltung gemäß Abbildung 62. Die einzelnen Diagnoseregeln werden über einen Index identifiziert und über das Dienstprogramm Regelverwaltung angesprochen. Zu jeder Diagnoseregel gehören neben den spezifizierten Daten eine Menge von Kontexten. 82 <<Dienstprogramm>> Regelverwaltung -Count : Integer +ResetRuleManagement() +FinalizationRuleRegistration() +RegisterRule(AIdent : PChar, APrio : Integer, ACorrect : TRuleCorrect, ADefAssessment : TRuleAssessment, ALeftExp, ARightExp, ACondition : PExpTree, ADescription : PChar) : TRule +GetRuleCount() : Integer +GetRuleByIdent(Ident : TRuleIdent) : TRule +RegisterContext(Ident : PChar, Kontext, Condition: PExpTree) : Boolean +RegisterContextTyp(Ident : PChar; Typ : PExpTree) : Boolean +AcceptContext(Rule : TRule, Left : PExpTree) : Boolean TRuleCorrect TRuleAssessment {geordnet} -Nr TExpTree LeftExp RightExp Condition TRule Assessment DefAssessment Correct -Ident : PChar -Prio : Integer -Description : PChar -KontextTyp : Boolean 1 TVariable * TKontext {Eine der vordefinierten Variablen "wahr", "falsch" oder "schlecht"} -Tree : PExpTree -Condition : PExpTree Abbildung 62: Klassendiagramm Regelverwaltung (UML) Um das Laufzeitverhalten bei der Anwendung der Diagnoseregeln zu verbessern, sind die Diagnoseregeln entsprechend der Regelordnung (Definition 29) sortiert. Die Anwendung der Diagnoseregeln erfolgt entsprechend der absteigenden Sortierung. Das heißt, die Anwendbarkeit von Diagnoseregeln mit hoher Priorität wird zuerst getestet. Konnte eine Diagnoseregel hoher Priorität angewendet werden, brauchen Regeln niedriger Priorität nicht auf Anwendbarkeit untersucht werden. Diagnoseregeln gleicher Priorität sind so sortiert, daß gleiche linke Regelseiten aufeinander folgen. Eine einmal berechnete Einsetzung kann daher für alle Diagnoseregeln mit der gleichen linken Regelseite verwendet werden. 83 Definition 29 (Regelordnung) Sei R die Menge der Diagnoseregeln und p : R → IN die Prioritätsfunktion eines Diagnosesystems. Sei mit adr : TΣ ( X ) → IN eine injektive Funktion gegeben. Die partielle Ordnung auf R heißt Regelordnung, falls für alle Regeln (r1 : u1 → v1 ), (r2 : u 2 → v 2 ), (r3 : u 3 → v3 ) ∈ R setzt gilt: i) p (r1 ) > p (r2 ) ⇒ r1 ii) p (r1 ) = p (r2 ) ∧ adr (u1 ) > adr (u 2 ) ⇒ r1 iii) p(r1 ) = p(r2 ) = p(r3 ) ∧ adr (u1 ) = adr (u 2 ) > adr (u 3 ) ⇒ r1 r2 r2 r3 ∧ r2 r3 Bemerkung: Die Funktion adr ist durch die Speicheradresse des Terms gegeben. 4.2.4 Gruppen Für die Verwaltung von Gruppen von Diagnoseregeln, wie sie z.B. für die Spezifikation von Sichten verwendet werden, stellt BugFix das Dienstprogramm Regelgruppen zur Verfügung. Die Identifizierung der Regelgruppen erfolgt dabei über einen Index. «Dienstprogramm» Regelgruppen -Index -RuleGroups : TList +RegisterRuleGroup(Ident : PChar) : TRuleGroup +GetRuleGroupCount() : Integer +GetRuleGroup(Index : Integer) : TRuleGroup +GetRuleGroupByIdent(Ident : PChar) : TRuleGroup +RegisterRuleGroupMember(RuleGroup : TRuleGroup, Rule : TRule) : Boolean . +IsRuleGroupMember(RuleGroup : TRuleGroup, Rule : TRule) : Boolean +GetRuleGroupMemberCount(RuleGroup : TRuleGroup) : Integer +GetRuleGroupMember(RuleGroup : TRuleGroup, Index : Integer) : TRule TRuleGroup TRuleGroupMember -Index Rule TRule -Ident : PChar Abbildung 63: Klassendiagramm Regelgruppen (UML) 4.2.5 Pläne Die Verwaltung von Plänen organisiert BugFix entsprechend Abbildung 64. Das Dienstprogramm Planverwaltung stellt eine Schnittstelle zur Verfügung, mit der über einen Index auf die jeweiligen Pläne zugriffen werden kann. Jeder Plan besteht dabei aus einer indizierten Menge von Suchebenen. 84 Jede Suchebene enthält eine Sicht und ein Attribut, das angibt, ob die Suchebene optional ist oder nicht. <<Dienstprogramm>> Planverwaltung -Plans:TList +RegisterPlan(Ident : PChar, Initial : PExpTree) : TPlan +GetPlanCount() : Integer +GetPlanByIdent(Ident : PChar) : TPlan +GetPlanIdent(Plan : TPlan) : String +GetPlan(Index : Integer) : TPlan +RegisterPlanStep(Plan : TPlan; Param1, Param2 : PExpTree) : Boolean +GetPlanStepCount(Plan : TPlan) : Integer; +ActivatePlan(Plan : TPlan; Step : Integer; View : TRuleViewTyp) +GetPlanStepTyp(Plan : TPlan; Step : Integer): TPlanStepTyp TExpTree -Index <<Aufzählung>> TRuleViewTyp rv_aktiv rv_planaktiv rv_expand rv_reduce TPlan TPlanStep -Step Rules TRuleView -Ident : PChar -Aktiv : Boolean 1 Typ <<Aufzählung>> TPlanStepTyp ps_standard ps_optional Abbildung 64: Klassendiagramm Planverwaltung (UML) 85 * TRule 4.3 Phase I Die erste Phase der Fehlerdiagnose beginnt mit der Festlegung der dem Schüler zu stellenden Aufgabe A und endet bei der Eingabe der Schülerlösung w . Abhängig von Aufgabe, Schüler und Gestaltung des Lernsystems steht für die erste Phase relativ viel Zeit – meist zwischen 5 und 10 Sekunden – zur Verfügung. Ohne Kenntnis der Schülerlösung kann diese Zeit genutzt werden um die Nachfolger- und Vorgängermengen zu berechnen, wie in Kapitel 3 ausgeführt. 4.3.1 Design und Implementierung Da bei der dynamischen Berechnung der Nachfolgermengen eines Terms f (t1 ,… , t n ) die Nachfolgermengen der Argumente t1 bis t n benötigt werden, muß der Zugriff auf Nachfolgermengen sehr effizient realisierbar sein. Das in Abbildung 65 gezeigte Design von BugFix trägt dieser Anforderung Rechnung, indem sowohl Nachfolger- als auch Vorgängermengen über gerichtete Assoziationen (Implementierung als Zeiger) von dem jeweiligen Term erreicht werden können. Für die Unterscheidung, ob eine Nachfolgermenge noch nicht, nur mit einer beschränkten Sicht bei der Berechnung eines Planes oder vollständig berechnet wurde, verfügt jeder Term zudem über ein entsprechenden Attribut. <<Dienstprogramm>> Nachfolger & Vorgängerverwaltung +GetFirstFollow(ExpTree : PExpTree, FollowList : PFollowList) : PExpTree +GetNextFollow(FollowList : PFollowList) : PExpTree +GetFollowRule(Follow : PFollowList) : TRule +GetFollowTree(Follow : PFollowList) : PExpTree +FreePrevList(List : PPrevList) Follow <<Aufzählung>> TWorkState ws_Expanded ws_Plan ws_None PrevList TExpTree WorkState : TWorkState Rule TFollowList TPrevList Next Tree Tree TRule Nachfolgermenge Follow Vorgängermenge Previous Abbildung 65: Klassendiagramm Nachfolger und Vorgänger (UML) 86 Next Die einzelne Elemente der Nachfolgermenge werden über eine verkette Liste realisiert, deren Zusammenspiel mit der Vorgängermenge in Abbildung 66 anhand eines Zeigerdiagramms gezeigt wird. PrevList nt_Inner op_add ChildList FollowList ... Tree abok Next ab0 Next Tree ... Next Tree nt_Inner op_bruch PrevList FollowList ChildList ... Abbildung 66: Verkettete Liste für Nachfolger- und Vorgängermengen 4.3.2 Beispiel In diesem Abschnitt soll an einem Beispiel gezeigt werden, wie sich die bisher formal beschriebene Berechnung der Nachfolgermengen praktisch darstellt. Als Beispielaufgabe dient auch hier wieder 1 2 + 34 , die, wie in Abbildung 67 gezeigt, gespeichert wird. Aufgabenstellung + b b 1 Abbildung 67: Zeigerstruktur für die Beispielaufgabe 2 1 2 + 3 4 3 4 Zur Vereinfachung soll die Menge der Regeln für dieses Beispiel auf die in Tabelle 7 gezeigten Regeln beschränkt werden. Hierbei handelt es sich um eine Auswahl von Regeln zur fehlerhaften Addition von Brüchen sowie um einige Regeln zur korrekten und fehlerhaften Addition bzw. Multiplikation in der Menge der natürlichen Zahlen. 87 Tabelle 7: Auswahl von Regeln zur fehlerhaften Addition von Brüchen und für die Addition bzw. Multiplikation von natürlichen Zahlen Nr. a0 Regel ⎛z z ⎞ add ( z1 , z 2 ) add ⎜⎜ 1 , 2 ⎟⎟ → add ( n1 , n2 ) ⎝ n1 n2 ⎠ Beschreibung Falsche additive Technik bei der Addition von Brüchen a1 ⎛z z ⎞ mul ( z1 , z 2 ) add ⎜⎜ 1 , 2 ⎟⎟ → mul ( n1 , n2 ) ⎝ n1 n2 ⎠ Addition ersetzt durch Multiplikation bei der Addition von Brüchen a2 ⎛z z ⎞ mul ( z1 , z 2 ) add ⎜⎜ 1 , 2 ⎟⎟ → add ( n1 , n2 ) ⎝ n1 n2 ⎠ anok add (a, b ) → c is (c, add (a, b)) 4 Falsche additive Technik und Verwechslung mit Multiplikation bei der Addition von Brüchen Korrekte Addition in IN anp add (a, b ) → c is (c, add (add (a, b),1)) „Weiterzählen“ bei Addition in IN anm add (a, b ) → c is (c, sub(add (a, b),1)) Addition in IN minus 1 mnok mul (a, b ) → c is (c, mul (a, b)) mni1 mul (1, b ) → 1 Korrekte Multiplikation in IN Fehlerhafte Multiplikation in IN bei neutralem Element Beim Start des Algorithmus enthält die Menge der noch zu bearbeitenden Elemente ToDo0 nur den Startterm add (bruch(1,2), bruch(3,4)) . Bei der Berechnung der Nachfolgermenge kann nicht auf die bereits berechneten Nachfolgermengen der Parameter bruch(1,2) und bruch(3,4) zurückgegriffen werden, so daß diese zuerst berechnet werden müssen. Gemäß dem Regelsatz aus Tabelle 7 sind beide Nachfolgermengen leer. Die Nachfolgermenge von add (bruch(1,2), bruch(3,4)) errechnet sich daher nur durch Regeln, deren linke Seite direkt mit dem Hauptoperator add anwendbar ist. In diesem Beispiel sind dies die Regeln a0, a1 und a2. Zur Anwendung der Regel a0 wird zuerst für die Menge der Variablen der Regel eine treffende Einsetzung bestimmt. In diesem Fall σ = {z1 ← 1, n1 ← 2, z 2 ← 3, n2 ← 4} . Der Nachfolgermenge von add (bruch(1,2), bruch(3,4)) wird dann ein neues Element hinzugefügt (siehe Abbildung 68). Da die Adressen der Terme zur Speicherung der ganzen Zahlen bereits aus der Substitution bekannt sind, kann ein Nachschlagen in der Hash-Tabelle entfallen. 4 Diese Regeln verfügen über eine Anwendungskondition, die der Variablen c einen Wert zuweisen. Bei add, sub und mul handelt es sich um vordefinierte Operatoren, die die Parameter addieren, subtrahieren bzw. multiplizieren (vgl. Abschnitt 4.1.4, S. 68). 88 Aufgabenstellung Follow + b b 1 2 3 4 a0 b + + Abbildung 68: Zeigerstruktur nach Anwendung der Regel a0 Ebenfalls mit der Substitution σ = {z1 ← 1, n1 ← 2, z 2 ← 3, n2 ← 4} sind auch die Regeln a1 und a2 anwendbar. Dementsprechend wird die Nachfolgermenge von add (bruch(1,2), bruch(3,4)) erweitert (siehe Abbildung 69). Im Unterschied zu den Regelanwendungen a0 und a1 können bei der Regelanwendung a2 mehr als nur die ganzen Zahlen wieder verwendet werden, da bereits ExpTrees für mul (1,3) und add (2,4) angelegt sind. Die Adressen dieser Terme sind bei der Erstellung der rechten Regelhälfte jedoch nicht bekannt, so daß die entsprechenden Terme mittels der Hash-Tabelle bestimmt werden müssen. 89 Aufgabenstellung + Follow b b 1 a0 2 3 4 a1 b a2 b + b + * * Abbildung 69: Zeigerstruktur nach Anwendung der Regeln a1 und a2 In diesem Beispiel ist die Nachfolgermenge von add (bruch(1,2), bruch(3,4)) vollständig berechnet. Die Menge der noch zu bearbeitenden Elemente T1 enthält nun die drei Elemente bruch(add (1,3), add (2,4)) , bruch(mul (1,3), mul (2,4)) und bruch(mul (1,3), add (2,4)) . Für die Fortsetzung des Beispiels habe die Bewertungsfunktion für Terme für bruch(add (1,3), add (2,4)) die beste Bewertung. Zur Berechnung der Nachfolgermenge von bruch(add (1,3), add (2,4)) werden zunächst die Nachfolgermengen für add (1,3) und add (2,4) berechnet. Abbildung 70 zeigt die Zeigerstruktur nach deren Berechnung. Die Adressen für die Zeiger auf die Datensätze zur Speicherung der ganzen Zahlen werden dabei mit der Hash-Tabelle bestimmt bzw. neu erzeugt. Nachdem die Nachfolgermengen für die Operanden bekannt sind, kann die Nachfolgermenge für bruch(add (1,3), add (2,4)) berechnet werden. Die hierzu verwendete verkettete Liste wird dabei wie in Abbildung 71 angedeutet eingefügt. 90 Aufgabenstellung + Follow b b 1 a0 3 a2 b + 4 a1 b Follow 2 + b * Follow * 6 anok anok 5 7 anp anp anm anm Abbildung 70: Zeigerstruktur nach Berechnung der Nachfolgermenge von add(1,3) und add(2,4) Nachdem die Nachfolgermenge von bruch(add (1,3), add (2,4)) berechnet wurde, befinden sich in der Menge der noch zu bearbeitenden Elemente T2 neben den Termen bruch(mul (1,3), mul (2,4)) und bruch(mul (1,3), add (2,4)) noch die Terme der Nachfolger-Elemente von bruch(add (1,3), add (2,4)) . Gemäß der Bewertungsfunktion für Terme soll in diesem Beispiel der Term bruch(mul (1,3), mul (2,4)) bearbeitet werden. Hierzu werden zunächst die Nachfolgermengen der Argumente mul (1,3) und mul (2,4) berechnet. Abbildung 71 zeigt die Zeigerstruktur nach der Berechnung der entsprechenden Nachfolgermengen. 91 Aufgabenstellung + Follow b b 1 a0 b Follow b 4 + Follow Follow a2 b Follow * 6 * Follow Follow 8 mnok mnok anok anok 5 3 a1 Follow + 2 7 anp anm anm mni1 anp ... ... ... Abbildung 71: Zeigerstruktur nach der Berechnung der Nachfolgermenge von bruch(mul(1,3),mul(2,4)) In Abbildung 71 wird auch der eigentliche Vorteil der dynamischen Programmierung bei der Fehlerdiagnose deutlich. Während bei der Bearbeitung der Terme bruch(add (1,3), add (2,4)) und bruch(mul (1,3), mul (2,4)) die Nachfolgermengen der Parameter erst berechnet werden mußten, kann bei der Bearbeitung von bruch(mul (1,3), add (2,4)) auf die bereits berechneten Nachfolgermengen zurückgegriffen werden. Hierdurch gewinnt das Verfahren deutlich an Geschwindigkeit, da zahlreiche Regelanwendungen entfallen können. Gleichzeitig wird der entsprechende Speicherplatz eingespart. 92 4.4 Phase II Nachdem in der ersten Phase der Fehlerdiagnose der Nachfolgermengen-Graph berechnet wurde, gilt es in der zweite Phase aus diesem die Menge der Diagnosen Diag ε (w) für die Schülerantwort w zu bestimmen. Hierzu verwendet BugFix den in Abschnitt 3.5.3 (S. 54) vorgestellten dynami- schen Algorithmus. 4.4.1 Design und Implementierung Die berechnete Menge der Diagnosen Diag ε (w) für die Schülerantwort w sollte in einer Form vorliegen, die für nachfolgende Methoden möglich einfach zu bearbeiten ist. Gleichzeitig soll die Datenstruktur effizient zu erzeugen sein und möglichst wenig Speicher beanspruchen. Abbildung 72 zeigt das Design dieser Datenstruktur. Sie ist als verkettete Liste von verketteten Listen implementiert. Lookup TExpTree Left TLookupList Items Next TLookup -Count : Integer Right -Assessment : Double -Length : Integer Items TLookupElement Next Rule TRule Abbildung 72: Klassendiagramm Lookup (UML) Das Beispiel in Abbildung 73 zeigt die Datenstruktur mit drei Diagnosen. Auch hier kann wieder die Idee der Stukturteilung (vgl. Abschnitt 4.2.2) eingesetzt werden, indem identische Enden einer Diagnose nur einmal gespeichert werden. Abbildung 73 zeigt diesen Fall am Beispiel der unteren zwei Diagnosen. Werden permutierte Regelfolgen entsprechend Abschnitt 3.5.2 (S. 52) zu einem Klassenrepräsentanten zusammengefaßt, tritt Abbildung 73 so nicht auf (siehe deshalb auch Abschnitt 4.4.2). 93 TLookupList: TLookup: 3 Items 0,196 3 Items Left ab0 TLookupElement: Next 1 3 + 2 4 TLookup: TLookupElement: 0,006 3 anok Next anok Next Right Right 1+ 3 2+4 4 2+4 4 6 Left ab3 Next 1 3 + 2 4 TLookup: TLookupElement: Items Next Right 0,006 Left 3 Items Next mnok Next mnok Next Right Right Right 1⋅ 4 2⋅3 4 2⋅3 4 6 Next ab3 1 3 + 2 4 Next mnok Next Right Right 1⋅ 4 2⋅3 1⋅ 4 6 Abbildung 73: Zeigerdiagramm Lookup Die eigentliche Berechnung der Menge der Diagnosen Diag ε (w) erfolgt in Rückwärtsrekursion ausgehend von der Schülerantwort w . Das bei der dynamischen Berechnung zuerst berechnete Teilproblem enthält dabei genau die Diagnosen aus Diag ε ( w, w) . Als nächstes werden die Diagnosen von der Vorgängermenge von w nach w berechnet und entsprechend weiter (siehe Abschnitt 3.5.3, S. 54). 4.4.2 Beispiel Die dynamische Berechnung der zweiten Phase soll anhand des folgenden Beispiels illustriert werden. Abbildung 74 zeigt die für dieses Beispiel angenommen Datenstruktur der ersten Phase. Die Lösung des Diagnoseproblems Diag ε ( w, w) ist bereits eingetragen. Es handelt sich um eine leere Liste von Diagnosen. Im nächsten Schritt kann die Kante „d“ bearbeitet werden. Abbildung 75 zeigt die entsprechende Datenstruktur mit einer Diagnose. Die Diagnose besteht dabei ausschließlich aus dem Rechenschritt „d“. 94 TL oo ku pE le m en t TL oo ku p TL oo ku pL ist up Li st TL oo k a a c b c b b c b c Lookup 1 Left Items 1 d Next d Items d Next Right Lookup Lookup o Items o Lösung Items Abbildung 74: Zeigerstruktur in der zweiten Phase der Fehlerdiagnose, Bild 1 Lösung Abbildung 75: Zeigerstruktur in der zweiten Phase der Fehlerdiagnose, Bild 2 Beim Bearbeiten der nächsten Teilprobleme (siehe Abbildung 76) kommen die Vorteile des dynamischen Algorithmus zum Tragen, da auf eine bereits bekannte Lösung eines kleineren Teilproblems zurückgegriffen werden kann. Die Datenstrukturen sind so gewählt, daß für die neu berechnete Diagnose direkt auf den bereits bekannten Teil der Diagnose verwiesen werden kann. Abbildung 76 zeigt die Datenstruktur nach Einfügen der Diagnosen für den linken und den rechten Ast. Hier ist zu bemerken, daß beide Diagnosen in ihrem jeweiligen letzten Rechenschritt auf den gleichen Datensatz verweisen (Strukturteilung). Für nachfolgende Methoden, die lediglich mit der Liste der Diagnosen arbeiten sollen, stellt diese Mehrfachnutzung jedoch keine Einschränkung dar, da Diag ε (w) weiterhin als verkettete Liste von verketteten Listen gesehen werden kann. Lediglich bei der Freigabe zur Laufzeit erzeugter Datensätze oder deren Veränderung ist diese Konstruktion zu beachten. 95 c ku p Lookup Left Left 1 Items Next 2 b Next TL oo TL oo ku p b Lookup 1 Li st TL oo ku pE le m en t TL oo ku pE le m en t TL oo ku p TL oo ku pL ist a c Items 2 Items b c Items Right Lookup Right Next Next 1 Left Items 1 Next d Items d Next Right Lookup Lösung o Items Abbildung 76: Zeigerstruktur in der zweiten Phase der Fehlerdiagnose, Bild 3 Die folgende Abbildung 77 schließlich zeigt das Ergebnis des letzten Schritts dieses Beispiels. Dabei werden erstmals zwei Diagnosen erzeugt, indem jeweils auf die Ergebnisse der beiden Folgeknoten verwiesen wird. Alle weiteren Schritte (ohne Abbildungen) setzen ihrerseits auf beiden erzeugten Diagnosen dieses Knoten auf. 96 t m en t Li st ok up TL o TL o ok up TL oo ku p El e m en El e ok up TL o TL oo ku p ku pL ist TL oo a 2 Left Items Left Next 3 c Next b 3 Items c b Items Right Right Lookup Lookup Next 1 Next Left Left 1 Items Next 2 b Next c Items 2 Items b c Items Right Lookup Right Next Next 1 Left Items 1 Next d Items d Next Right Lookup Lösung o Items Abbildung 77: Zeigerstruktur in der zweiten Phase der Fehlerdiagnose, Bild 4 4.4.3 Filter Abhängig von Aufgabenstellung und Schülerantwort variiert die Anzahl der Diagnosen in Diag ε (w) sehr stark. Aus Diag ε (w) sollten daher möglichst repräsentative und/oder wahrscheinliche Diagnosen gewählt werden. Verfahren die in der zweite Phase der Fehlerdiagnose eine derartige Auswahl treffen werden im folgenden als Filter bezeichnet. In Abschnitt 3.5.2 wurde mit der Behandlung von permutierten Regelfolgen bereits ein derartiger Filter vorgestellt. Das Permutationsfilter läßt sich bereits in die zweiten Phase der Fehlerdiagnose einbauen. Dazu wird beim Lösen jedes Teilproblems nur ein Repräsentant jeder Klasse von permutierten Diagnosen in die Lösungsmenge aufgenommen. 97 Abbildung 78 zeigt die der Abbildung 77 entsprechende Datenstruktur unter Verwendung des Per- TL ku pL TL oo TL oo ku p ist oo ku pE le a TL ku p TL oo TL oo ku pL ist oo ku pE le m en t m en t mutationsfilters. 1 Left Items 3 c Next b Items c Right Lookup Lookup Next 1 Left Left 1 Items Next 2 b Next c 2 Items b c Items Right Lookup Right Next Next 1 Left Items 1 Next d Items d Next Right Lookup Lösung o Items Abbildung 78: Zeigerstruktur in der zweiten Phase der Fehlerdiagnose mit Permutationsfilter 98 Items 4.5 Wiederaufsetzen Die Berechnung von Aufgaben durch den Schüler besteht normalerweise aus mehreren Rechenschritten. Diese können entweder im Kopf nachvollzogen, als Zwischenergebnisse auf Papier geschrieben oder bei einem computergestützten Lernsystem in einem geeigneten Editor eingeben werden. Liegen bei der Fehlerdiagnose derartige Zwischenergebnisse vor, können möglicherweise mehrdeutige Diagnosen eliminiert werden. Die Fehlerdiagnose sollte daher schrittweise von der ursprünglichen Aufgabenstellung zu der Zwischenlösung und dann von der Zwischenlösung zu ggf. vorhanden weiteren Zwischenlösungen und schließlich von der letzten Zwischenlösung zum Endergebnis durchgeführt werden. Sei A = w1 = … = wn eine derartige Schülerrechnung mit Zwischenschritten w1 bis wn −1 . Dann wird in der ersten Phase der Fehlerdiagnose der NachfolgermengenGraph mit dem Startknoten A berechnet, in dem, wenn eine Diagnose möglich ist, irgendwo auch der Knoten w1 auftritt. Typischerweise ist w1 jedoch nicht ein Blatt des NachfolgermengenGraphen, vielmehr sind auch von w1 bereits Nachfolgermengen berechnet (vgl. Abbildung 79). In diesem Fall kann bei der Berechnung des Nachfolgermengen-Graphen von w1 in der direkt folgenden ersten Phase zur Diagnose der Schülerrechnung w1 = w2 der bereits bekannte Nachfolgermengen-Graph wieder verwendet werden (wiederaufsetzen). A w1 w2 Abbildung 79: Nachfolgermengen-Graph mit Zwischenschritten Ein Wiederaufsetzen kann auch in anderen Situationen sinnvoll sein. Konnte z.B. für die Schülerrechnung A = w1 keine Diagnose berechnet werden, da w1 nicht im berechnetem Nachfolgermengen-Graphen enthalten ist, kann der Algorithmus wiederaufsetzen, in der Hoffnung durch Vergrö99 ßerung des Nachfolgermengen-Graphen auf w1 zu treffen. Auch kann auf die NachfolgermengenGraphen anderer älterer Aufgaben aufgesetzt werden, um einmal berechnete NachfolgermengenGraphen als Teilgraphen zu nutzen. Die folgenden Abschnitte stellen diese drei Strategien näher vor. 4.5.1 Wiederaufsetzen zur Qualitätsverbesserung Das Wiederaufsetzen zur Qualitätsverbesserung ist nur dann nötig, wenn der Algorithmus zur dynamischen Berechnung des Nachfolgermengen-Graphen durch Benutzerabbruch angehalten wurde. In diesem Fall ist die Menge ToDo nicht leer. Ein Wiederaufsetzen ist problemlos möglich, indem die alte Menge ToDo verwendet wird. Die abgebrochene Berechnung wird somit direkt fortgesetzt. Wurde der Algorithmus durch Erreichen der vorgegebenen Qualität ε STOP gestoppt, ist die Menge ToDo hingegen leer, da zur Beschleunigung der Operationen auf ToDo im i -ten Iterationsschritt nur Terme t ∈ ΤΣ ( X ) mit aTΣ ( X ) ,i (t ) < ε STOP aufgenommen wurden. Zum Wiederaufsetzen müßte die Menge ToDo neu berechnet werden, d.h. es müßten alle Terme bestimmt werden, deren Nachfolgermengen noch nicht berechnet wurde. Dies steht in der Praxis jedoch in keiner sinnvollen Aufwand-Nutzen-Relation zu dem erwarteten Ergebnis, dessen Bewertung schlechter als ε STOP wäre. Wiederaufsetzen ist daher nur bei frühzeitigem Benutzerabbruch sinnvoll. 4.5.2 Wiederaufsetzen nach Zwischenergebnissen Bereits in der Einleitung (Abschnitt 4.5) wurde das Wiederaufsetzen nach Zwischenergebnissen besonders hervorgehoben. Neben der Berechnung der Menge ToDo stellt sich hier jedoch noch ein weiteres Problem, die Neubewertung aller bekannten Terme t ∈ TΣ ( X ) durch aTΣ ( X ) (t ) . Dazu wird der Nachfolgermengen-Graph ausgehend vom neuen Startterm in Tiefensuche durchlaufen und entsprechend Algorithmus 6 (S. 51) neu bewertet. Die Neubewertung terminiert in Folge der Monotonie der Bewertungsfunktion für Regelfolgen (Lemma 1, S. 36). Abbildung 80 und Abbildung 81 zeigen an einen einfachem Beispiel die Neubewertung. Die Neubewertung vollzieht praktisch die Berechnung des auf die Zwischenlösung folgenden Teils des Nachfolgermengen-Graphen nach. Das Wiederaufsetzen hat somit die gleiche Komplexität wie die Berechnung des entsprechenden Nachfolgermengen-Graphen selbst. Die Laufzeit für jeden Rechenschritt ist jedoch erheblich kürzer. 100 aTΣ ( X ) = 1 A aR = 0,9 aTΣ ( X ) = 0,9 aR = 0,5 w1 aT = 0,45 Σ( X ) aR = 0,2 aR = 0,8 aTΣ ( X ) = 0,36 aTΣ ( X ) = 0,09 aR = 0,7 aR = 0,7 aTΣ ( X ) = max {0,36 ⋅ 0,7; 0,09 ⋅ 0,7} = 0,252 Abbildung 80: Beispiel: Nachfolgermengen-Graph vor der Neubewertung A aTΣ ( X ) = nicht definiert aR = 0,9 aTΣ ( X ) = nicht definiert aR = 0,5 w1 aR = 0,8 aTΣ ( X ) = 1 aR = 0,2 aTΣ ( X ) = 0,8 aR = 0,7 aTΣ ( X ) = 0,2 aR = 0,7 aTΣ ( X ) = max {0,8 ⋅ 0,7; 0,2 ⋅ 0,7} = 0,56 Abbildung 81: Beispiel: Nachfolgermengen-Graph nach der Neubewertung Im praktischen Einsatz in einem Lernsystem stellt sich das Wiederaufsetzen nach Zwischenergebnissen als äußerst einfache Möglichkeit der Beschleunigung der ersten Phase der Fehlerdiagnose dar. Insbesondere wenn mit fortgeschrittener Schülerrechnung die Rechenschritte einfacher werden und mehrere Rechenschritte leicht und schnell im Kopf berechnet werden können, kann durch das Wiederaufsetzen i.d.R. eine ausreichende Suchtiefe des Diagnosesystems erreicht werden. 101 4.5.3 Wiederaufsetzen bei neuer Aufgabenstellung Das Wiederaufsetzen bei einer völlig neuen Aufgabenstellung auf Nachfolgermengen-Graphen älterer Berechnungen ist prinzipiell wie das Wiederaufsetzen nach Zwischenergebnissen realisierbar. Dennoch ist es in den meisten Fällen nicht ratsam, da so im Nachfolgermengen-Graphen in der zweiten Phase der Fehlerdiagnose hinderliche „fehlweisende“ Kanten entstehen. Hierbei handelt es sich um Kantenzüge, die von der alten Aufgabenstellung und nicht der aktuellen ausgehen. In der Praxis sind die entstehenden Laufzeitvorteile für die erste Phase der Fehlerdiagnose nur gering, die Rechenzeit der besonders zeitkritischen zweite Phase der Fehlerdiagnose kann jedoch, je nach Schülerlösung, erheblich ansteigen. Vom Wiederaufsetzen bei einer neuen Aufgabenstellung ist daher eher abzuraten. 102 5 Empirische Untersuchungen In diesem Kapitel sollen zwei Studien vorgestellt werden, die im Rahmen dieser Arbeit durchgeführt wurden. Sie dienten der Konstruktion bzw. der Erprobung des vorgeschlagenen Diagnosealgorithmus. Im Rahmen einer Untersuchung in der sechsten Klassenstufe wurde die von Schülern für die Bearbeitung von Bruchrechenaufgaben in einem computergestützten Lernsystem benötigten Zeiten gemessen. Drei diagnostische Tests zu Beginn der siebten Klassenstufe mit über 500 Schülern dienten zum Aufbau des Diagnosesystems zur Bruchrechnung und zur Demonstration des Diagnosealgorithmus. 5.1 7te-Klassen-Studie Zur Demonstration des Diagnosealgorithmus wurde als Domäne die Bruchrechnung gewählt. Diese Entscheidung ist motiviert durch die Projekteinbindung dieser Arbeit und die hohe Komplexität des Diagnoseproblems bei der Bruchrechnung. Das entwickelte Diagnosesystem ist in Anhang A ausführlich dokumentiert. Das Diagnosesystem baut auf didaktischen Untersuchungen von Hart (1981), Lörcher (1982), Daubert und Gerster (1983), Gerster und Grevsmühl (1983), Tappe u.a. (1984), Hasemann (1985), Payne (1986) und Padberg (1986, 1995, 1996)) auf. Beim Entwurf des Diagnosesystems stellte sich jedoch rasch heraus, daß die vorgenannten Arbeiten nicht umfassend und/oder formal genug für die Formulierung des Diagnosesystems waren. Ergänzend wurde daher mit Beginn des Schuljahr 1997/98 in insgesamt 21 Klassen (505 Schüler) des siebten Schuljahrs ein Test zur Bruchrechnung durchgeführt. Da die Bruchrechnung Bestandteil des Lehrplans des sechsten Schuljahrs ist, sollten die Schüler über die für die Bearbeitung dieses Testes nötigen Kenntnisse verfügen. Drei bis sechs Wochen später haben 14 der 21 Klassen (300 Schüler) an einem zweiten Test zur Bruchrechnung und zur Dezimalbruchrechnung teilgenommen. Einige der Klassen hatten in diesem Zeitraum Inhalte der Bruchrechnung wiederholt. An einem dritten Test am Ende des ersten Schulhalbjahrs haben schließlich noch 10 Klassen (234 Schüler) teilgenommen. Tabelle 8 zeigt die Verteilung der teilnehmenden Schüler auf die unterschiedlichen Schularten. Tabelle 8: Verteilung der teilnehmenden Schüler auf die unterschiedlichen Schularten Schulart Gymnasium 1. Test 2. Test 3. Test 376 190 197 Realschule 92 72 37 Hauptschule 37 38 0 505 300 234 Gesamt 103 Ziel der Untersuchung war die Bestimmung der Fehlerstrategien in den Schülerrechnungen. Da viele schwächer eingestufte Schüler jedoch leider mehrere der Aufgaben gar nicht erst bearbeiteten, konnten auch keine Fehlerstrategien bestimmt werden5. Die Teilnehmer der Studie mußten daher so gewählt werden, daß überhaupt Fehlerstrategien beobachtet werden konnten. Unter diesem Gesichtspunkt wurde ein Schwerpunkt der Studie auf Gymnasien gelegt Die von den Schülern unter Aufsicht der Mathematiklehrer bearbeiteten Übungsblätter wurden zentral am Institut für Mathematik und Angewandte Informatik korrigiert. Fehlerhafte, unvollständige oder nicht bearbeitete Aufgaben wurden in einer Datenbank erfaßt (vgl. Ostermeier, 1998). Dabei wurden neben der Aufgabenstellung alle von den Schülern aufgeschriebenen Rechenschritte (ca. 6400) gespeichert. Korrekt und vollständig berechnete Aufgaben wurden zur Verkleinerung des Aufwands nicht erfaßt. Als Ergebnis der Untersuchungen wurde das Diagnosesystem um 70 relevante Diagnoseregeln erweitert. Dabei halfen die in Anhang C ausführlich dokumentierten Rechengraphen mit ihren Diagnosetabellen. Ihre Erläuterung befindet sich ebenfalls in Anhang C. Gleichzeitig wurde deutlich, daß viele der in der Literatur (s.o.) genannten Fehlerstrategien für die Diagnose der erfaßten Schülerrechnungen nicht benötigt werden. Da dies jedoch auch durch die bekannte Abhängigkeit der Fehlerstrategien von der Aufgabenstellung zurückführbar ist, wurden auch diese Diagnoseregeln in der Menge der Diagnoseregeln belassen. In den folgenden Abschnitten werden die drei diagnostischen Test dokumentiert. 5.1.1 Diagnostischer Test 1 Das erste Übungsblatt wurden den teilnehmenden Klassen zu Beginn des Schuljahrs vorgelegt. Dabei waren die Lehrer angehalten, den Test möglichst in einer der ersten Unterrichtsstunden durchzuführen ohne vorher Inhalte der Bruchrechnung zu wiederholen. Das Übungsblatt wurde zusammen mit Lehrern konzipiert. Es enthält daher nicht nur Aufgaben, die für das vorgestellte Diagnosesystem zur Bruchrechnung geeignet sind. Abbildung 82 zeigt das erste Übungsblatt6. 5 Eine gestellte Aufgabe nicht zu bearbeiten kann im weitesten Sinn auch als Fehlerstrategie gesehen werden. Diese Null-Strategie ist jedoch für die Diagnose nur von ungeordneter Bedeutung. 6 Zum Abdruck in dieser Arbeit wurde die Übungsblätter leicht verkleinert. 104 Übungsblatt Bruchrechnung Löse die folgenden Aufgaben. Schreibe Nebenrechnungen auch mit auf diesen Zettel. Aufgabe 1: Schreibe in das Kästchen jeweils die richtige Zahl! a) 3 = 4 24 b) 2 10 = 5 c) 1 1 = 3 6 Aufgabe 2: Kürze soweit wie möglich! 6 = 8 36 c) = 12 a) 9 = 18 7 d) = 7 b) Aufgabe 3: Addiere bzw. subtrahiere und vereinfache das Ergebnis soweit wie möglich! 5 3 − = 8 8 5 1 b) − = 12 8 2 3 c) 2 +1 = 3 5 1 12 d) 1 − = 5 10 1 e) 2 − 1 = 4 1 2 + 3 +1= f) 2 15 21 a) Aufgabe 4: In der Klasse 7a können von den 30 Schülerinnen und Schülern sind noch Nichtschwimmer? 105 3 schwimmen. Wie viele 5 Aufgabe 5: Multipliziere bzw. dividiere und vereinfache das Ergebnis soweit wie möglich! 2 3 ⋅ = 3 8 5 3 b) : = 8 4 3 2 c) 1 ⋅ 2 = 4 3 2 3 d) 2 : = 3 7 3 2 e) 1 ⋅ = 13 3 3 6 f) : = 4 8 a) Aufgabe 6: Löse die folgenden Aufgaben und vereinfache das Ergebnis soweit wie möglich! 3 4 = a) 1 2 2 3 b) 2 − ⋅ = 3 5 1 ⎛ 1 1⎞ 1 ⋅⎜ − ⎟ ⋅ = c) 3 ⎝ 2 3⎠ 2 Aufgabe 7: Schreibe in das Kästchen jeweils die richtige Zahl oder den richtigen Bruch! a) 2 ⋅ 3 = 4 3 b) 2 ⋅ 5 +1= 6 3 Abbildung 82: 7te-Klassen-Studie, 1. Übungsblatt zur Bruchrechnung 106 5.1.2 Diagnostischer Test 2 Das zweite Übungsblatt enthält neben Aufgaben zur Bruchrechnung auch Aufgaben zur Dezimalbruchrechnung. Es stand den Klassen drei bis sechs Wochen nach Wiederbeginn des Unterrichts zur Verfügung. Sofern die Lehrkräfte zu Beginn der siebten Klasse Bruchrechnung wiederholt haben, wurde der Test als Abschluß der Wiederholung geschrieben. Abbildung 83 zeigt das Übungsblatt. Übungsblatt Bruchrechnung und Dezimalrechnung Löse die folgenden Aufgaben. Schreibe Nebenrechnungen auch mit auf diesen Zettel. Aufgabe 1: Schreibe in das Kästchen jeweils die richtige Zahl! a) 5 = 6 24 b) 3 2 = 4 8 Aufgabe 2: Kürze soweit wie möglich! a) 56 = 8 b) 6 = 24 c) 9 = 9 Aufgabe 3: Addiere bzw. subtrahiere und vereinfache das Ergebnis so weit wie möglich! 10 3 − = 7 7 6 5 b) 2 −1 = 18 6 5 8 c) 1 + 2 = 8 5 1 = d) 5 − 2 3 1 10 e) 3 − = 3 3 4 7 f) 3 +8 −3 = 20 15 a) Aufgabe 4: Auf dem ersten Übungsblatt wurden von den 25 Aufgaben durchschnittlich gerechnet. Wie viele Aufgaben wurden durchschnittlich richtig gerechnet? 107 2 fehlerhaft 5 Aufgabe 5: Multipliziere bzw. dividiere und vereinfache das Ergebnis so weit wie möglich! 2 3 : = 3 4 2 3 b) ⋅3 = 3 4 6 8 c) 2 : = 8 7 5 10 = d) : 8 16 1 5 e) 3 ⋅2 = 4 4 1 2 = f) 3 4 a) Aufgabe 6: Löse die folgenden Aufgaben und vereinfache das Ergebnis so weit wie möglich! 1,6 + 0,25 + 0,4 = b) 1,23 − 0,09 = c) 0,3 ⋅ 0,6 = 1 d) ⋅ 1,2 = 3 a) Aufgabe 7: Löse die folgenden Aufgaben und vereinfache das Ergebnis so weit wie möglich! 3 1 ⋅ 0,5 + 0,3 = 4 b) (3, 4 − 0,5 ) ⋅ 0,2 = ⎛1 ⎞ 1 c) ⎜ ⋅ 3 ⎟ ⋅ + 0,5 = ⎝2 ⎠ 3 d) 1,23 ⋅ 4,2 = e) 0, 4 : 0,3 = a) Abbildung 83: 7te-Klassen-Studie, 2. Übungsblatt zur Bruchrechnung 108 5.1.3 Diagnostischer Test 3 Das dritte Übungsblatt enthält ebenfalls Aufgaben zur Bruchrechnung und zur Dezimalbruchrechnung. Es wurden den Klassen kurz vor Ende des ersten Schulhalbjahrs vorgelegt. Abbildung 84 zeigt das Übungsblatt. Übungsblatt Bruchrechnung und Dezimalrechnung Löse die folgenden Aufgaben. Schreibe Nebenrechnungen auch mit auf diesen Zettel. Aufgabe 1: Schreibe in die Kästchen jeweils die richtige Zahl! a) 3 = 7 21 b) 5 4 = 6 12 Aufgabe 2: Kürze soweit wie möglich! a) 54 = 9 b) 9 = 36 c) 8 = 8 Aufgabe 3: Addiere bzw. Subtrahiere und vereinfache das Ergebnis so weit wie möglich! 15 3 − = 6 6 4 15 b) 3 −1 = 7 21 6 7 c) 1 + 3 = 7 6 2 = d) 7 − 3 5 28 8 e) −4 = 5 5 3 8 f) 5 −1 + 4 = 21 14 a) Aufgabe 4: Auf einem Parkplatz haben 12 Autos die Farbe Rot. Das sind 3 aller Autos, die auf dem 7 Parkplatz stehen. Wie viele Autos befinden sich insgesamt auf dem Parkplatz? 109 Aufgabe 5: Multipliziere bzw. Dividiere und vereinfache das Ergebnis so weit wie möglich! 3 5 : = 5 6 4 5 b) ⋅2 = 5 8 6 7 c) 2 : = 7 5 4 16 = d) : 9 36 2 1 e) 2 ⋅3 = 3 2 2 3 = f) 5 9 a) Aufgabe 6: Löse die folgenden Aufgaben und vereinfache das Ergebnis so weit wie möglich! 2,7 + 0,35 − 0,5 = b) 2, 43 − 0,19 = c) 0,5 ⋅ 0,3 = 1 ⋅ 1,8 = d) 9 a) Aufgabe 7: Löse die folgenden Aufgaben und vereinfache das Ergebnis so weit wie möglich! 1 2 ⋅ 0,6 + 0,3 = 3 b) (3,7 + 0,5 ) ⋅ 0,3 = ⎛ 1⎞ 1 c) ⎜ 4 ⋅ ⎟ ⋅ + 0,7 = 3 4 ⎝ ⎠ d) 1,3 ⋅ 3,24 = e) 1,2 : 0,4 = a) Abbildung 84: 7te-Klassen-Studie, 2. Übungsblatt zur Bruchrechnung 110 5.2 6te-Klassen-Studie Im Rahmen einer Kooperation des Instituts für Mathematik und Angewandte Informatik der Universität Hildesheim mit dem Hildesheimer Gymnasium Andreanum wurde ein Schulversuch zur Einführung der Bruchrechnung in Klasse 5 statt Klasse 6 durchgeführt. Dazu wurde das Currciulum der fünften und sechsten Klassenstufe neu aufgeteilt. In Klassenstufe 5 wurde insbesondere der Bruchbegriff eingeführt und verstärkt motiviert. Hierzu kamen regelmäßig verschiedene Lernprogramme zur Bruchrechnung, insbesondere das Programm „Alice“ (Cornelsen), zum Einsatz. Im Mittelpunkt der Untersuchung stand dabei die Visualisierung des Bruchbegriffes und der grundlegenden Rechenarten. Eine detaillierte Beschreibung des Schulversuchs wird an anderer Stelle publiziert. In diesem Zusammenhang relevant ist ein zu Beginn der sechsten Klassenstufe durchgeführter Test zur Bruchrechnung, an dem eine der beiden Klassen teilgenommen hat. Die Schüler wurden dabei mit einer Auswahl der Übungsaufgaben der 7te-Klassen-Studie konfrontiert, die diesmal jedoch nicht auf Papier sondern am Computer bearbeitet werden sollten. Hierzu stand ein einfacher, für die Bruchrechnung geeigneter Editor zur Verfügung, in dessen Bedienung die Schüler einzeln eingewiesen wurden. Im Unterschied zu den meisten Lernprogrammen, waren die Schüler hierbei nicht an feste Eingabemasken gebunden, sondern konnten den Rechenweg und die Zwischenschritte frei wählen. Im Rahmen dieser Untersuchung wurde vom Rechner die Zeit gestoppt, die zwischen Aufgabenstellung und erster eingegebener Zwischenlösung verstrich. Hierbei war nicht relevant, ob das Ergebnis richtig oder falsch war. Fehlerhaft berechnete Aufgaben wurden jedoch bis zu dreimal vom Schüler wiederholt. Tabelle 9 zeigt das vollständige Ergebnis dieser Testreihe. Zu jeder gestellten Aufgabe ist die Anzahl der erfaßten Datensätze, die minimale, mittlere und maximale Zeit vermerkt. Die letzten beiden Spalten geben die mittlere Zeit der schnellsten 70% bzw. 30% der Antwortzeiten an. Die Auswirkungen dieser Testreihe für den Diagnosealgorithmus sind am Beginn des Kapitels 3 (S. 32) dokumentiert. 111 Tabelle 9: Zeitspanne zwischen Aufgabenstellung und erster Schülerantwort Nr. Aufgabe Anzahl Minimum Mittel [s] [s] Maximum Mittel [s] Mittel [s] [s] 70% 30% schnellste schnellste 1 36 12 32 5,6 27 71 18 11 2 7 7 31 3,1 10 28 7 4 3 1 3 2+4 33 6,2 47 144 27 13 2 5 4 1 +4 3 6 46 6,2 65 183 39 23 5 5 3 8-8 36 5,1 19 37 14 10 6 5 1 12 - 8 53 12,3 67 298 42 26 3 2 7 2 +1 5 3 40 20,2 65 243 45 30 1 12 8 1 5 10 33 10,8 44 165 28 20 1 9 2-1 4 30 4,5 27 89 18 11 10 2 3 3⋅8 30 2,0 46 132 28 15 11 5 3 8:4 33 2,3 47 138 32 19 3 2 12 1 ⋅ 2 4 3 43 3,3 54 230 35 20 2 3 13 2 : 3 7 23 2,2 51 132 37 23 3 2 14 1 ⋅ 13 3 22 2,3 44 65 32 19 3 6 4:8 26 1,7 32 78 21 10 3 4 1 2 21 9,4 40 90 29 22 2 3 17 2 - ⋅ 3 5 37 4,3 43 113 29 18 15 16 112 Nr. Aufgabe Anzahl Minimum Mittel [s] [s] Maximum Mittel [s] Mittel [s] [s] 70% 30% schnellste schnellste 6 5 18 2 - 1 18 6 18 3,7 60 148 40 26 5 8 19 1 + 2 8 5 13 2,7 58 167 38 20 1 20 5 - 2 3 13 1,4 30 74 18 13 1 10 21 3 3 3 13 1,3 17 44 11 5 22 2 3 3 : 34 13 2,7 34 65 21 11 23 2 3 3 : 17 12 1,6 32 81 20 10 Bemerkung: Die extrem kurzen minimalen Bearbeitungszeiten ab Aufgabe 10 sind durch einen Schüler zu erklären, der lustlos lediglich „0“ als Lösung jeder Aufgabe eingegeben hat. 113 6 Zusammenfassung und Ausblick In den vorherigen Kaptiteln wird ein leistungsfähiger Algorithmus zur Diagnose von korrekten und fehlerhaften Rechenwegen vorgestellt. Der vorgeschlagene Diagnosealgorithmus ist für den Einsatz in einem Lehr-Lern-System konzipiert, wobei die Online-Diagnose im Lernsystem die Akzeptanzkriterien Laufzeit, Flexibilität und Diagnosegüte vorgibt. Basierend auf den hier neu eingeführten formalen Konzepten zur Fehlerdiagnose wurde das Design und die Implementierung der Diagnosekomponente BugFix entwickelt. BugFix kann durch eine eigene Sprache (BFS) an verschiedene mathematische Domänen adaptiert werden. Daher eignet es sich als leicht integrierbares Diagnosemodul für intelligente mathematische Lehr-Lern-Systeme. Im Rahmen eines Projektes am Institut für Mathematik und Angewandte Informatik der Universität Hildesheim erfolgt diese Integration zur Zeit am Beispiel eines Lehr-Lern-Systems zur Bruchrechnung. In diesem Kontext entstand als Anwendungsbeispiel für BugFix ein Diagnosesystem für die Bruchrechnung. Zusammen mit den in der Literatur dokumentierten Studien und einer eigenen empirischen Untersuchung wurde knapp 250 Diagnoseregeln zur Bruchrechnung ermittelt (Anhang A). Auf dieser Domäne zeigt wiederholt BugFix sein für den Einsatz in Lernsystemen optimales Laufzeitverhalten (vgl. Anhang B). Ohne daß für den Schüler eine subjektiv wahrnehmbare Wartezeit entsteht, berücksichtigt BugFix – falls nötig – mehrere Milliarden verschiedener korrekter oder fehlerhafter Rechenwege als mögliche Diagnosen einer Schülerantwort. Diese Leistungsfähigkeit verdankt der Diagnosealgorithmus im wesentlichen der dynamischen Programmierung und der maximalen Strukturteilung der verwendeten Datentypen. Letztere ermöglicht eine äußerst kompakte Speicherung der Diagnosen und benötigt i.A. nur zwischen 0,0001 und 0,02 Byte pro gespeicherter Diagnose. Bezüglich der Demonstrationsdomäne Bruchrechnung ist die Effizienz des Diagnosealgorithmus so hoch, daß es für den praktischen Einsatz in einem Lernsystem sinnvoll sein wird, die Berechnung frühzeitig zu stoppen, um nicht unnötig Speicher zu belegen. Die umfangreichen Erfahrungen in dieser komplexen Demonstrationsdomäne sowie bei Testläufen auf dem Gebiet der Differentialrechnung stellen eine erfolgversprechende Perspektive für den Einsatz von BugFix in anderen mathematischen Bereichen dar. 114 In Kooperation mit Fachdidaktikern und Schulpsychologen ist die Entwicklung weiterer Diagnosesysteme für andere mathematische Anwendungsgebiete bereits im konkreten Planungsstadium. Die Verfügbarkeit von umfassenden Diagnosesystemen für verschiedene Domänen wird sicherlich ausschlaggebend für den breiten Einsatz in kommerziellen Lernprogrammen sein – da aus wirtschaftlicher Sicht ansonsten die Investition in eine aufwendige multimediale Gestaltung der Lernprogramme sinnvoller erscheinen mag. Durch die Berechnung der Fehlerdiagnosen zur Laufzeit des Programmes kann der Diagnosealgorithmus flexibel reagieren. Es ist weder eine Beschränkung der Auswahl der Übungsaufgaben noch eine Einschränkung der möglichen Rechenwege der Schüler aus Sicht der Fehlerdiagnose notwendig. Selbst wenn der Rechenweg zu einem Zwischenergebnis nicht diagnostiziert werden kann, ermöglicht der Diagnosealgorithmus prinzipiell die Diagnose des restlichen Rechenweges. Durch die Adaption der Bewertungsfunktion für Regeln läßt sich der Suchraum des Diagnosealgorithmus an jeden Schüler individuell anpassen. So können bekannte korrekte und fehlerhafte Rechenstrategien des Schülers stärker bei der Suche berücksichtigt werden. Verschiedene alternative oder sich ergänzende Adaptionsstrategien sind zur Zeit am Institut für Mathematik und Angewandte Informatik der Universität Hildesheim in Entwicklung bzw. Erprobung. Die Sprache BFS ermöglicht eine einfache Skalierung des Diagnosesystems an unterschiedlich leistungsfähige Rechner. Somit kann BugFix insbesondere auch auf leistungsschwachen Systemen eingesetzt werden – sofern die multimediale Gestaltung des Lernsystems dies zuläßt. Der vorgeschlagene Diagnosealgorithmus erfüllt somit uneingeschränkt die Anforderungen an die Flexibilität des Algorithmus für den Einsatz in einem Lehr-Lern-System. Im Unterschied zu Systemen wie DEBUGGY, bei denen es zur Bewältigung der Komplexität nötig ist, mehrere Übungsaufgaben in die Diagnose einzubeziehen, arbeitet der vorgeschlagene Diagnosealgorithmus mit einzelnen Übungsaufgaben. Dies ermöglicht eine schnelle Reaktion auf erkannte Fehlvorstellungen und verhindert deren Automatisierung bereits in den Ansätzen. Da zu zahlreichen Schülerlösungen verschiedene mögliche Diagnosen zutreffen können, sind die gelieferten Diagnosen jedoch nicht immer eindeutig und müssen auch nicht in jedem Fall dem tatsächlichen Rechenweg des untersuchten Schülers entsprechen. Durch die Hinzunahme von Methoden, die aus den Diagnosemengen mehrerer Aufgaben ein Lernermodell konstruieren, läßt sich daher die Qualität der Diagnose sicherlich deutlich verbessern. Hier können die von Burton (1982) für IDEBUGGY vorgeschlagenen Techniken sicherlich als sinnvoller Ansatz für weitere Arbeiten dienen. 115 Ergänzend läßt sich zusätzlich durch eine gezielte Wahl der Übungsaufgaben die Qualität der Diagnosen erheblich verbessern. Die Übungsaufgaben sind hierzu so zu wählen, daß möglichst viele fehlerhafte Schülerantworten eindeutig diagnostizierbar sind. In einer Diplomarbeit (Kube, 1999) am Institut für Mathematik und Angewandte Informatik werden derartige Übungsaufgaben durch systematische Berechnungen der Nachfolgermengen-Graphen bestimmt. Dem enormen Rechenaufwand kann sinnvoll nur durch aufwendige und parallele Berechnung begegnet werden. Bei Berücksichtigung der möglichen Kombinationen der verschiedenen Schwierigkeitsfaktoren (vgl. Padberg, 1995) ist die Einschränkung der Aufgabenauswahl in einem Lehr-Lern-System unwesentlich. Als ein nach Ansicht des Autors vielversprechender Ansatz zur Verbesserung der Diagnosegüte ist der Diskurs mit dem Schüler über seine Fehlvorstellungen einzuschätzen. Wenn zum Beispiel nicht zwischen verschiedenen Diagnosen unterschieden werden kann, könnte das Lernsystem den Schüler etwa fragen, welchen der diagnostizierten Rechenwege er verwendet hat. Dies erfordert deutlich geringere metakognitive Fähigkeiten als die Frage, was der Schüler gerechnet hat. Insofern ist diese Technik vielleicht auch bei jüngeren Schülern, deren metakognitive Fähigkeiten noch nicht sehr weit ausgeprägt sind, einsetzbar. Diese Methode empfiehlt daher eine sehr einfache und qualitativ hochwertige Alternative zu statistischen Verfahren, wie sie von Burton für IDEBUGGY vorgeschlagen wurden. Bei der Konstruktion von Modellen für intelligente Lernsysteme ist die Unabhängigkeit von der Domäne ein bisher unerreichtes Ziel. Mit der Konzentration auf mathematische Bereiche war es in dieser Arbeit möglich, einen sehr leistungsfähigen Diagnosealgorithmus zu entwickeln. Allein schon die vielversprechenden Ansätze in verschiedenen mathematischen Arbeitsgebieten (vgl. S. 114) zeichnen den Diagnosealgorithmus positiv aus. Da die Darstellung der Rechenschritte durch Terme wesentliche Voraussetzung für die Effizienz der Diagnose ist, hat der Einsatz von BugFix in einigen anderen Domänen, wie Sprachen (mögliche Ausnahme: Deklination von Verben), Kunst oder Sozialwissenschaften sicherlich seine Grenzen. Von zukünftigen Interesse wäre auch die Beschränkung von BugFix auf korrekte mathematische Regeln. Zwar würde BugFix aufgrund seiner Konstruktion als „Bestensucher“ dabei nicht die Effizienz vergleichbarer Systeme erreichen, aber zur Generierung möglichst einfacher Beweise eingesetzt werden. Ein anderes Einsatzgebiet außerhalb von Lernsystemen kann auch in der Fehlersuche und Wartung von komplexen technischen Systemen liegen. Beide Beispiele würden hierbei von einer Parallelisierung des Diagnosealgorithmus profitieren. BugFix ist für eine entsprechende Parallelisierung bereits vorbereitet. 116 Anhang A: Diagnosesystem zur Bruchrechnung In der Literatur finden sich zahlreiche Untersuchungen über die von Schüler verwendeten korrekten und fehlerhaften Rechenstrategien neben den Bereich der Grundrechenarten (z.B. Gerster, 1979) insbesondere für den Bereich der Bruchrechnung (Marshall, 1980; Hart, 1981; Lörcher, 1982; Tappe u.a., 1984; Daubert, Gerster, 1983; Gerster, Grevsmühl, 1983; Hasemann, 1985; Payne, 1986; Padberg, 1986, 1995, 1996). Die zitierten Studien zur Bruchrechnung umfassen die Rechnungen von mehr als 1000 Schülern verschiedener Klassenstufen und Schultypen und bilden das Fundament für das in dieser Arbeit vorgestellte Diagnosesystem zur Bruchrechnung. Ergänzt wurden diese Arbeiten durch eigene Beobachtungen im Rahmen der 7te-Klassen-Studie mit über 6000 fehlerhaften oder unvollständigen Rechnungen von über 500 Schülern. Zur leichteren Unterscheidung der Diagnoseregeln sind ihre Namen systematisch aufgebaut. Der erste Buchstabe steht dabei immer für die Rechenoperation (siehe Tabelle A-1). Tabelle A-1: Regelgruppen Kürzel Gruppe a Addition d Division k Kürzen m Multiplikation s Subtraktion u Umwandlung (gemischte Zahlen in Brüche usw.) Der zweite und möglicherweise der dritte Buchstabe des Namens geben Auskunft über die Sorten der Argumente, dabei steht „n“ für natürliche bzw. ganze Zahlen, „b“ für Brüche und „g“ für gemischte Zahlen. Als nächstes folgt ein Unterscheidungsmerkmal für Diagnoseregeln mit gleichen Rechenoperationen und gleichen Argumentsorten. Dabei steht „ok“ für mathematisch korrekte und sinnvolle Rechenstrategien. Alle anderen Diagnoseregeln werden durchnumeriert. Diese Numerierung kann ggf. um Buchstaben erweitert werden um inhaltliche „Verwandtschaften“ von Diagnoseregeln auszudrücken. In den folgenden Tabellen werden die Diagnoseregeln des Diagnosesystems vorgestellt. Die Tabellen enthalten jeweils eine kurze Beschreibung, die in vielen Fällen mit einem Beispiel versehen ist (Gerster, Grevsmühl, 1983). Bei der Beschreibung einiger Diagnoseregeln sind zudem Prozentzahlen angegeben. Sie sollen die Anwendungshäufigkeit einer Fehlerstrategie beschreiben. Die Werte beziehen sich auf Untersuchungen von Lörcher (1982) auf der Grundlage von 134 Hauptschülern 117 (7.-9. Schuljahr) und 438 Realschülern (6. und 7. Schuljahr), auf eine Untersuchung von Hasemann (1985) mit 70 Hauptschülern (7. Schuljahr) sowie auf Angaben von Padberg (1995). Ferner enthalten die Tabellen die Diagnoseregeln selbst. Zur besseren Lesbarkeit wurde dabei, wann immer möglich, die Infix-Notation verwendet. Sofern relevant, sind Anwendungs- und Kontextkonditionen angegeben. Die Priorität ist nur bei Abweichungen von der „Standardpriorität“ angegeben – ihr Wert beträgt 100. Obwohl in das vorgestellte Diagnosesystem bereits sehr viel Arbeit investiert wurde, besteht dennoch an einigen Stellen die Möglichkeit für sinnvolle Erweiterungen, insbesondere für den praktischen Einsatz in einem intelligenten Lernsystem. Dies ist i.A. im Anhang C ersichtlich. A.1 Grundrechenarten in den natürlichen Zahlen Tabelle A-2: Diagnoseregeln für die Grundrechenarten (korrekt) Nr. Beschreibung Regeln, Anwendungskondition anok Korrekte Addition in den natürlichen a + b → c c := a + b Zahlen Priorität: 200 snok Korrekte Subtraktion in den natürli- a − b → c c := a − b chen Zahlen Priorität: 200 snn Nullvermeidungsstrategie bei der Sub- a − a → a + b traktion in den natürlichen Zahlen Priorität: 200 mnok Korrekte Multiplikation in den natür- a ⋅ b → c c := a ⋅ b lichen Zahlen Priorität: 200 dnok Korrekte Division ohne Rest in den a : b → c b a, c := a : b natürlichen Zahlen Priorität: 200 118 A.2 Addition A.2.1 Brüche Tabelle A-3: Diagnoseregeln zur Addition von Brüchen Nr. Beschreibung Regeln, Anwendungskondition abok Addition korrekt z1 z 2 z + z2 + → 1 n n n ab0 Falsche additive Technik 5 2 5+2 7 Beispiel: + = = 3 6 3+6 9 (Lörcher: 24%, Hasemann: 33%, Padberg7: 20-30%) Addition ersetzt durch Multiplikation 5 2 10 Beispiel: + = 2 6 12 (Lörcher: 4%) z1 z 2 z + z2 + → 1 n1 n 2 n1 + n 2 ab1 ab1a Addition ersetzt durch Multiplikation z1 z 2 z ⋅z + → 1 2 bei gleichen Nennern n n n 4 2 8 Beispiel: + = 3 3 3 ab2 Falsche additive Technik und Ver- z1 z 2 z ⋅z + → 1 2 wechslung mit Multiplikation n1 n 2 n1 + n 2 2 4 8 Beispiel: + = 3 6 9 ab3 Addition mit Kehrwertbildung Beispiel: 5 2 5 ⋅ 6 30 + = = 3 6 3⋅ 2 6 z1 z 2 z ⋅n + → 1 2 n1 n2 n1 ⋅ z 2 ab4 Addition ersetzt durch Subtraktion ab5 Zähler gleichnamig machen, Nenner z1 z 2 z + → addieren n1 n2 n1 ⋅ e1 + n2 ⋅ e2 (Lörcher: 1,5%) z1 ≠ z 2 , z = kgv( z1 , z 2 ), e1 = z : z1 , e2 = z : z 2 ab5a Nenner addieren, bei gleichem Zähler 3 3 3 3 Beispiel: + = = 5 2 5+ 2 7 7 z1 z 2 z ⋅z + → 1 2 n1 n2 n1 ⋅ n 2 z1 z 2 z − z2 + → 1 n n n z z z + → n1 n2 n1 + n2 Padberg zitiert eine Untersuchung aus den USA von Post (1981) 119 A.2.2 Hauptnennerbildung bei der Addition von Brüchen Tabelle A-4: Diagnoseregeln für die Hauptnennerbildung bei der Addition von Brüchen Nr. Beschreibung Regeln abhok Hauptnenner korrekt, Erweiterungen z ⎛z z ⎞ z 1 + 2 → addh⎜⎜ 1 , 2 , n ⎟⎟ korrekt n1 n2 ⎝ n1 n 2 ⎠ n1 ≠ n2 , n = kgv(n1 , n 2 ) ⎛z z ⎞ z ⋅e z ⋅e addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 1 + 2 2 n n ⎝ n1 n2 ⎠ e1 = n / n1 , e2 = n / n2 Priorität: 300 abh0 Hauptnenner durch Multiplikation ge- z ⎛z z ⎞ z 1 + 2 → addh⎜⎜ 1 , 2 , n ⎟⎟ bildet, obwohl kleineres kgV existiert n1 n2 ⎝ n1 n 2 ⎠ (kein Fehler). n1 ≠ n2 , n = n1 ⋅ n 2 , n ≠ kgv(n1 , n 2 ) abh1 Hauptnenner korrekt, jedoch Zähler ⎛z z ⎞ z z addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 + 2 nicht erweitert n n ⎝ n1 n2 ⎠ (Lörcher: 13%) Priorität: 300 abh2 Hauptnenner korrekt, jedoch Zähler ⎛z z ⎞ z +e z + e2 addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 1 + 2 additiv erweitert n n ⎝ n1 n2 ⎠ (Lörcher: 13%) e1 = n / n1 , e2 = n / n2 Priorität: 300 abh3 Hauptnenner korrekt, jedoch Zähler ⎛z z ⎞ e e addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 + 2 durch Erweiterungszahlen ersetzt n n ⎝ n1 n 2 ⎠ (Lörcher: 2%) ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 abh4 Hauptnenner korrekt, jedoch Erweite⎛z z ⎞ z ⋅e z ⋅e addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 2 + 2 1 rungszahlen vertauscht n n ⎝ n1 n2 ⎠ (Lörcher: 2%) ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 120 Nr. Beschreibung Regeln abh5 Hauptnenner korrekt, jedoch beide ⎛ z1 z 2 ⎞ z1 ⋅ e1 z 2 ⋅ e1 + Zähler mit der gleichen Erweiterungs- addh⎜⎜ , , n ⎟⎟ → n1 n 2 ⎠ n n ⎝ zahl erweitert e1 = n / n1 Priorität: 300 ⎛z z ⎞ z ⋅e z ⋅e addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 2 + 2 2 n n ⎝ n1 n 2 ⎠ e2 = n / n 2 Priorität: 300 abh6 Hauptnenner korrekt, jedoch nur ei⎛z z ⎞ z ⋅e z addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 1 + 2 nen Zähler erweitert n n ⎝ n1 n2 ⎠ e1 = n / n1 ,1 ≠ n / n 2 Priorität: 300 ⎛z z ⎞ z z ⋅e addh⎜⎜ 1 , 2 , n ⎟⎟ → 1 + 2 2 n n ⎝ n1 n 2 ⎠ 1 ≠ n / n1 , e2 = n / n2 Priorität: 300 abh7 Hauptnenner ersetzt durch Maximum Beispiel: abh8 Hauptnenner ersetzt durch Minimum Beispiel: abh9 7 7 14 + = 15 10 15 7 7 14 + = 15 10 10 z1 z 2 z + z2 + → 1 n1 n2 n n1 ≠ n2 , n = max(n1 , n2 ) z1 z 2 z + z2 + → 1 n1 n2 n n1 ≠ n2 , n = min(n1 , n2 ) Hauptnenner ersetzt durch größten z1 z 2 z + z2 + → 1 gemeinsamen Teiler (ggT) n1 n2 n 7 7 14 n1 ≠ n2 , n = ggt (n1 , n2 ) Beispiel: + = 15 10 5 Bemerkung: Die Diagnoseregeln „abh5“ bis „abh9“ waren bei der Berechnung der Diagnosen in Anhang C nicht aktiviert. 121 A.2.3 Ganze Zahlen und Brüche Tabelle A-5: Diagnoseregeln für die Addition von ganzen Zahlen und Brüchen Nr. Beschreibung anbok Addition mit natürlichen Zahlen kor- rekt anb0 Regeln, Anwendungskondition z z →a n n z z +a→a n n a+ Falsche additive Technik bei natürliz a+ → cher Zahl n 1 3 z Beispiel: 2 + = +a→ 4 7 n (Padberg: 20%) z a+ → n a+z a+n z+a n+a a+z n z z+a +a→ n n anb1 Addition ersetzt durch Multiplikation z a⋅z a+ → bei natürlicher Zahl (vollständig) n a⋅n z z⋅a 2 2⋅2 4 +a→ Beispiel: 2 + = = n n⋅a 3 2⋅3 6 z a⋅z → n n z z⋅a +a→ n n a+ anb3 Addition mit Kehrwertbildung mit z a⋅n a+ → natürlicher Zahl n z z z 5 5 5 +a→ Beispiel: + 3 = = n n⋅a 4 4 ⋅ 3 12 122 A.2.4 Gemischte Zahlen Tabelle A-6: Diagnoseregeln für die Addition von gemischten Zahlen und Brüchen Nr. Beschreibung agok Addition korrekt Regeln, Anwendungskondition g1 z1 z 2 z + z2 + → g1 1 n n n g1 ⎛ z1 z z ⎞ z + g 2 2 → gem⎜⎜ g1 + g 2 , 1 ⎟⎟ + 2 n1 n2 n1 ⎠ n2 ⎝ g z1 z 2 z z + → 1 +g 2 n n n n z1 z z z +g 2 →g 1 + 2 n n n n ag0 Falsche additive Technik8 ag1 Addition ersetzt durch Multiplikation ag1a Addition ersetzt durch Multiplikation z ⋅z z z g 1+ 2 →g 1 2 bei gleichen Nennern n n n ag2 Falsche additive Technik und Verz ⋅z z z g 1+ 2 →g 1 2 wechslung mit Multiplikation n1 n 2 n1 + n 2 ag3 Addition mit Kehrwertbildung ag4 Addition ersetzt durch Subtraktion ag5 Zähler gleichnamig machen, Nenner z z z g 1 + 2 →g addieren n1 n2 n1 ⋅ e1 + n2 ⋅ e2 g z1 z 2 z + z2 + →g 1 n1 n 2 n1 + n 2 g z ⋅z z1 z 2 + →g 1 2 n1 n 2 n1 ⋅ n2 g z1 z 2 z ⋅n + →g 1 2 n1 n 2 n1 ⋅ z 2 g z1 z 2 z − z2 + →g 1 n n n z1 ≠ z 2 , z = kgv( z1 , z 2 ), e1 = z : z1 , e2 = z : z 2 ag5a 8 Nenner addieren, bei gleichem Zähler g z z z + →g n1 n2 n1 + n2 Eine analoge Rechenstrategie mit gemischter Zahl als zweiter Summand wird durch agok/3 und ag0 behandelt. 123 A.2.5 Hauptnennerbildung bei der Addition von gemischten Zahlen Tabelle A-7: Diagnoseregeln für die Hauptnennerbildung bei der Addition von gemischten Zahlen Nr. Beschreibung Regeln aghok Hauptnenner korrekt, Erweiterungen ⎛ z z ⎞ z z g1 1 + 2 → addh⎜⎜ g1 1 , 2 , n ⎟⎟ korrekt n1 n 2 ⎝ n1 n 2 ⎠ n1 ≠ n 2 , n = kgv(n1 , n 2 ) g1 ⎛ z ⎞ z1 z z + g 2 2 → addh⎜⎜ g 1 1 , g 2 2 , n ⎟⎟ n2 ⎠ n1 n2 ⎝ n1 n1 ≠ n2 , n = kgv(n1 , n2 ) ⎛ z z ⎞ z ⋅e z ⋅e addh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 1 + 2 2 n n ⎝ n1 n2 ⎠ e1 = n / n1 , e2 = n / n 2 Priorität: 300 ⎛ z ⎞ z ⋅e z z ⋅e addh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 1 + g 2 2 2 n2 ⎠ n n ⎝ n1 e1 = n / n1 , e2 = n / n 2 Priorität: 300 agh0 Hauptnenner durch Multiplikation ⎛ z z ⎞ z1 z 2 → addh⎜⎜ g1 1 , 2 , n ⎟⎟ gebildet, obwohl kleineres kgV exis- g1 + n1 n 2 ⎝ n1 n 2 ⎠ tiert (kein Fehler). n1 ≠ n2 , n = n1 ⋅ n 2 , n ≠ kgv(n1 , n 2 ) g1 agh1 ⎛ z ⎞ z1 z z + g 2 2 → addh⎜⎜ g 1 1 , g 2 2 , n ⎟⎟ n1 n2 n2 ⎠ ⎝ n1 n1 ≠ n2 , n = n1 ⋅ n 2 , n ≠ kgv(n1 , n 2 ) Hauptnenner korrekt, jedoch Zähler ⎛ z z ⎞ z z addh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 + 2 nicht erweitert n n ⎝ n1 n2 ⎠ Priorität: 300 ⎛ z ⎞ z z z addh⎜⎜ g 1 1 , g 2 2 , n ⎟⎟ → g1 1 + g 2 2 n2 ⎠ n n ⎝ n1 Priorität: 300 124 Nr. Beschreibung Regeln agh2 Hauptnenner korrekt, jedoch Zähler ⎛ z z ⎞ z +e z + e2 addh⎜⎜ g 1 1 , 2 , n ⎟⎟ → g1 1 1 + 2 additiv erweitert n n ⎝ n1 n 2 ⎠ e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛ z ⎞ z z +e z + e2 addh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 1 + g 2 2 n2 ⎠ n n ⎝ n1 e1 = n / n1 , e2 = n / n2 Priorität: 300 agh3 Hauptnenner korrekt, jedoch Zähler ⎛ z z ⎞ e e addh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 + 2 durch Erweiterungszahlen ersetzt n n ⎝ n1 n2 ⎠ ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛ z ⎞ z e e addh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g 1 1 + g 2 2 n2 ⎠ n n ⎝ n1 ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 agh4 Hauptnenner korrekt, jedoch Erwei⎛ z z ⎞ z ⋅e z ⋅e addh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 2 + 2 1 terungszahlen vertauscht n n ⎝ n1 n2 ⎠ ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛ z ⎞ z z ⋅e z ⋅e addh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 2 + g 2 2 1 n2 ⎠ n n ⎝ n1 ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 125 Nr. Beschreibung Regeln agh5 Hauptnenner korrekt, jedoch beide ⎛ z1 z 2 ⎞ z1 ⋅ e1 z 2 ⋅ e1 + Zähler mit der gleichen Erweite- addh⎜⎜ g 1 , , n ⎟⎟ → g1 n1 n 2 ⎠ n n ⎝ rungszahl erweitert e1 = n / n1 Priorität: 300 ⎛ z ⎞ z z ⋅e z ⋅e addh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 1 + g 2 2 1 n2 ⎠ n n ⎝ n1 e1 = n / n1 Priorität: 300 ⎛ z z ⎞ z ⋅e z ⋅e addh⎜⎜ g 1 1 , 2 , n ⎟⎟ → g1 1 2 + 2 2 n n ⎝ n1 n 2 ⎠ e2 = n / n 2 Priorität: 300 ⎛ z ⎞ z z ⋅e z ⋅e addh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g 1 1 2 + g 2 2 2 n2 ⎠ n n ⎝ n1 e2 = n / n 2 Priorität: 300 agh6 Hauptnenner korrekt, jedoch nur ⎛ z z ⎞ z ⋅e z addh⎜⎜ g 1 1 , 2 , n ⎟⎟ → g1 1 1 + 2 einen Zähler erweitert n n ⎝ n1 n 2 ⎠ e1 = n / n1 ,1 ≠ n / n 2 Priorität: 300 ⎛ z ⎞ z z ⋅e z addh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 1 + g 2 2 n2 ⎠ n n ⎝ n1 e1 = n / n1 ,1 ≠ n / n 2 Priorität: 300 ⎛ z z ⎞ z z ⋅e addh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 + 2 2 n n ⎝ n1 n2 ⎠ 1 ≠ n / n1 , e2 = n / n2 Priorität: 300 ⎛ z ⎞ z z z ⋅e addh⎜⎜ g 1 1 , g 2 2 , n ⎟⎟ → g1 1 + g 2 2 2 n2 ⎠ n n ⎝ n1 1 ≠ n / n1 , e2 = n / n2 Priorität: 300 126 Nr. Beschreibung Regeln agh7 Hauptnenner ersetzt durch Maxiz z z + z2 g1 1 + 2 → g1 1 mum n1 n2 n 7 7 14 n1 ≠ n2 , n = max(n1 , n2 ) Beispiel: + = 15 10 15 Priorität: 300 agh8 Hauptnenner ersetzt durch Miniz z z + z2 g1 1 + 2 → g1 1 mum n1 n2 n 7 7 14 n1 ≠ n2 , n = min(n1 , n2 ) Beispiel: + = 15 10 10 Priorität: 300 agh9 Hauptnenner ersetzt durch größten z + z2 z z g1 1 + 2 → g1 1 gemeinsamen Teiler (ggT) n1 n2 n 7 7 14 n1 ≠ n2 , n = ggt (n1 , n2 ) Beispiel: + = 15 10 5 Priorität: 300 Bemerkung: Die Diagnoseregeln „agh5“ bis „agh9“ waren bei der Berechnung der Diagnosen in Anhang C nicht aktiviert. 127 A.2.6 Gemischte und natürliche Zahlen Tabelle A-8: Diagnoseregeln für die Addition von ganzen und gemischten Zahlen Nr. Beschreibung Regeln, Anwendungskondition angok Addition mit gemischten Zahlen korz z⎞ ⎛ a + g → gem⎜ a + g , ⎟ rekt n n⎠ ⎝ z z⎞ ⎛ g + a → gem⎜ g + a, ⎟ n n⎠ ⎝ ang0 Falsche additive Technik bei natürliz a+z a+g → g cher Zahl n a+n g z z+a +a→ g n n+a z a+z →g n n z z+a g +a→ g n n a+g ang1 Addition ersetzt durch Erweitern z a⋅z bzw. Multiplikation bei natürlicher a + g n → g a ⋅ n Zahl z z⋅a g +a→ g n n⋅a z a⋅z →g n n z z⋅a g +a→ g n n a+g ang2 Addition mit Kehrwertbildung mit z a⋅n a+g → g natürlicher Zahl n z z n⋅a +a→ g n z z z a+g → g n a⋅n z z g +a→ g n n⋅a g 128 A.2.7 Kürzen Tabelle A-9: Diagnoseregeln für das Kürzen bei Addition Nr. Beschreibung Regeln abk1 Falsches Kürzen bei Addition z1 z 2 z :k z + → 1 + 2 n1 n2 n1 n2 : k Beispiel: 4 1 1 1 + = + 7 4 7 1 (Lörcher: 12%) ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 z1 z 2 z z :k + → 1 + 2 n1 n2 n1 : k n2 ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 agbk1 Falsches Kürzen bei Addition bei einer z z z :k z + 2 g1 1 + 2 → g1 1 gemischten Zahl n1 n2 n1 n2 : k ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 g1 z1 z 2 z z :k + → g1 1 + 2 n1 n2 n1 : k n2 ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 z1 z z :k z + g2 2 → 1 + g2 2 n1 n2 n1 n2 : k ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 z1 z z z :k + g2 2 → 1 + g2 2 n1 n2 n1 : k n2 ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 agk1 Falsches Kürzen bei Addition bei zwei z z z :k z + g2 2 g1 1 + g 2 2 → g1 1 gemischten Zahlen n1 n2 n1 n2 : k ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 g1 z :k z1 z z + g 2 2 → g1 1 + g 2 2 n2 n1 n2 n1 : k ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 129 A.3 Subtraktion A.3.1 Brüche Tabelle A-10: Diagnoseregeln bei Subtraktion von Brüchen Nr. Beschreibung Regeln sbok Subtraktion korrekt z1 z 2 z − z2 − → 1 n n n sb0 Subtraktion mit falscher subtraktiver z1 z 2 z − z2 − → 1 Technik n1 n2 n1 − n2 3 2 3−2 1 Beispiel: − = = 9 6 9−6 3 sb1 Subtraktion ersetzt durch Multiplika- z1 z 2 z ⋅z − → 1 2 tion n1 n 2 n1 ⋅ n 2 7 5 35 Beispiel: − = 8 8 64 sb2 Subtraktion ersetzt durch Addition z1 z 2 z + z2 − → 1 n n n 130 A.3.2 Hauptnennerbildung bei der Subtraktion Tabelle A-11: Diagnoseregeln für die Hauptnennerbildung bei der Subtraktion von Brüchen Nr. Beschreibung Regeln sbhok Hauptnenner korrekt, Erweiterungen z ⎛z z ⎞ z 1 − 2 → subh⎜⎜ 1 , 2 , n ⎟⎟ korrekt n1 n2 ⎝ n1 n 2 ⎠ n1 ≠ n2 , n = kgv(n1 , n 2 ) ⎛z z ⎞ z ⋅e z ⋅e subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 1 − 2 2 n n ⎝ n1 n 2 ⎠ e1 = n / n1 , e2 = n / n 2 Priorität: 300 sbh0 Hauptnenner durch Multiplikation ge- z ⎛z z ⎞ z 1 − 2 → subh⎜⎜ 1 , 2 , n ⎟⎟ bildet, obwohl kleineres kgV existiert n1 n2 ⎝ n1 n2 ⎠ (kein Fehler). n1 ≠ n2 , n = n1 ⋅ n 2 , n ≠ kgv(n1 , n 2 ) sbh1 Hauptnenner korrekt, jedoch Zähler ⎛z z ⎞ z z subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 − 2 nicht erweitert n n ⎝ n1 n 2 ⎠ (Lörcher: 13%) Priorität: 300 sbh2 Hauptnenner korrekt, jedoch Zähler ⎛z z ⎞ z +e z + e2 subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 1 − 2 additiv erweitert n n ⎝ n1 n 2 ⎠ (Lörcher: 13%) e1 = n / n1 , e2 = n / n2 Priorität: 300 sbh3 Hauptnenner korrekt, jedoch Zähler ⎛z z ⎞ e e subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 − 2 durch Erweiterungszahlen ersetzt n n ⎝ n1 n 2 ⎠ (Lörcher: 2%) ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 sbh4 Hauptnenner korrekt, jedoch Erweite⎛z z ⎞ z ⋅e z ⋅e subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 2 − 2 1 rungszahlen vertauscht n n ⎝ n1 n 2 ⎠ (Lörcher: 2%) ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 131 Nr. Beschreibung Regeln sbh5 Hauptnenner korrekt, jedoch beide ⎛ z1 z 2 ⎞ z1 ⋅ e1 z 2 ⋅ e1 − Zähler mit der gleichen Erweiterungs- subh⎜⎜ , , n ⎟⎟ → n1 n 2 ⎠ n n ⎝ zahl erweitert e1 = n / n1 Priorität: 300 ⎛z z ⎞ z ⋅e z ⋅e subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 2 − 2 2 n n ⎝ n1 n 2 ⎠ e2 = n / n 2 Priorität: 300 sbh6 Hauptnenner korrekt, jedoch nur ei⎛z z ⎞ z ⋅e z subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 1 − 2 nen Zähler erweitert n n ⎝ n1 n 2 ⎠ e1 = n / n1 ,1 ≠ n / n 2 Priorität: 300 ⎛z z ⎞ z z ⋅e subh⎜⎜ 1 , 2 , n ⎟⎟ → 1 − 2 2 n n ⎝ n1 n 2 ⎠ 1 ≠ n / n1 , e2 = n / n2 Priorität: 300 sbh7 Hauptnenner ersetzt durch Maximum z1 z 2 z − z2 − → 1 n1 n2 n n1 ≠ n2 , n = max(n1 , n2 ) sbh8 Hauptnenner ersetzt durch Minimum z1 z 2 z − z2 − → 1 n1 n2 n n1 ≠ n2 , n = min(n1 , n2 ) sbh9 Hauptnenner ersetzt durch größten z1 z 2 z − z2 − → 1 gemeinsamen Teiler (ggT) n1 n2 n n1 ≠ n2 , n = ggt (n1 , n2 ) Bemerkung: Die Diagnoseregeln „sbh5“ bis „sbh9“ waren bei der Berechnung der Diagnosen in Anhang C nicht aktiviert. 132 A.3.3 Ganze Zahlen und Brüche Tabelle A-12: Diagnoseregeln bei Subtraktion von Brüchen und ganzen Zahlen Nr. Beschreibung snb0 Subtraktion mit falscher subtraktiver z Technik bei natürlicher Zahl (voll- a − n → ständig) z −a→ 7 10 − 7 3 n = Beispiel: 10 − = 5 10 − 5 5 z a− → n z −a→ n snb1 Regeln a−z a−n z−a n−a a−z n z−a n Subtraktion ersetzt durch Multiplikaz a−z a − → tion bei nat. Zahl (vollständig) n a−n 7 14 z z⋅a Beispiel: 2 − = −a → 5 10 n n⋅a a− z a⋅z → n n z z⋅a −a → n n 133 A.3.4 Gemischte Zahlen Tabelle A-13: Diagnoseregeln bei Subtraktion von gemischten Zahlen Nr. Beschreibung Regeln sgok korrekte Subtraktion bei gemischten z z z − z2 g1 1 − 2 → g1 1 Zahlen n n n g z1 z 2 z + n ⎞ z2 ⎛ − → gem⎜ g − 1, 1 ⎟− n n n ⎠ n ⎝ z1 < z 2 , g ≥ 1 g1 sg0 Subtraktion mit falscher subtraktiver z z z − z2 g1 1 − 2 → g1 1 Technik n1 n 2 n1 − n 2 g1 sg1 sg2 sg3 ⎛ z1 z z ⎞ z − g 2 2 → gem⎜⎜ g1 − g 2 , 1 ⎟⎟ − 2 n1 n2 n1 ⎠ n 2 ⎝ ⎛ z1 z z − z2 ⎞ ⎟ − g 2 2 → gem⎜⎜ g1 − g 2 , 1 n1 n2 n1 − n 2 ⎟⎠ ⎝ Subtraktion ersetzt durch Multiplikaz z z ⋅z g1 1 − 2 → g1 1 2 tion n1 n 2 n1 ⋅ n 2 Subtraktion ersetzt durch Addition Subtraktionsrichtung falsch 3 4 1 Beispiel: 5 − 4 = 1 5 5 5 g1 ⎛ z1 z z ⋅z ⎞ − g 2 2 → gem⎜⎜ g1 − g 2 , 1 2 ⎟⎟ n1 n2 n1 ⋅ n 2 ⎠ ⎝ g1 z1 z 2 z + z2 − → g1 1 n n n g1 z1 z z + z2 ⎞ ⎛ − g 2 2 → gem⎜ g1 − g 2 , 1 ⎟ n n n ⎠ ⎝ g1 z1 z z − z1 ⎞ ⎛ − g 2 2 → gem⎜ g1 − g 2 , 2 ⎟ n n n ⎠ ⎝ g1 z1 z z − z2 ⎞ ⎛ − g 2 2 → gem⎜ g 2 − g1 , 1 ⎟ n n n ⎠ ⎝ 134 A.3.5 Hauptnennerbildung bei der Subtraktion von gemischten Zahlen Tabelle A-14: Diagnoseregeln für die Hauptnennerbildung bei der Subtraktion von gemischten Zahlen Nr. Beschreibung Regeln sghok Hauptnenner korrekt, Erweiterungen ⎛ z z ⎞ z z g1 1 − 2 → subh⎜⎜ g1 1 , 2 , n ⎟⎟ korrekt n1 n 2 ⎝ n1 n 2 ⎠ n1 ≠ n2 , n = kgv(n1 , n2 ) ⎛z ⎞ z1 z z − g 2 2 → subh⎜⎜ 1 , g 2 2 , n ⎟⎟ n2 ⎠ n1 n2 ⎝ n1 n1 ≠ n2 , n = kgv(n1 , n2 ) g1 ⎛ z ⎞ z1 z z − g 2 2 → subh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ n1 n2 n2 ⎠ ⎝ n1 n1 ≠ n 2 , n = kgv(n1 , n 2 ) ⎛ z z ⎞ z ⋅e z ⋅e subh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 1 − 2 2 n n ⎝ n1 n 2 ⎠ e1 = n / n1 , e2 = n / n 2 Priorität: 300 ⎛z ⎞ z z ⋅e z ⋅e subh⎜⎜ 1 , g 2 2 , n ⎟⎟ → 1 1 − g 2 2 2 n2 ⎠ n n ⎝ n1 e1 = n / n1 , e2 = n / n 2 Priorität: 300 ⎛ z ⎞ z z ⋅e z ⋅e subh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 1 − g 2 2 2 n2 ⎠ n n ⎝ n1 e1 = n / n1 , e2 = n / n2 Priorität: 300 sgh0 Hauptnenner durch Multiplikation ⎛ z z ⎞ z1 z 2 → subh⎜⎜ g1 1 , 2 , n ⎟⎟ gebildet, obwohl kleineres kgV exis- g1 − n1 n 2 ⎝ n1 n 2 ⎠ tiert (kein Fehler). n1 ≠ n2 , n = n1 ⋅ n 2 , n ≠ kgv(n1 , n 2 ) ⎛z ⎞ z1 z z − g 2 2 → subh⎜⎜ 1 , g 2 2 , n ⎟⎟ n1 n2 n2 ⎠ ⎝ n1 n1 ≠ n2 , n = n1 ⋅ n 2 , n ≠ kgv(n1 , n 2 ) g1 ⎛ z ⎞ z1 z z − g 2 2 → subh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ n1 n2 n2 ⎠ ⎝ n1 n1 ≠ n 2 , n = n1 ⋅ n 2 , n ≠ kgv(n1 , n 2 ) 135 Nr. Beschreibung Regeln sgh1 Hauptnenner korrekt, jedoch Zähler ⎛ z z ⎞ z z subh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 − 2 nicht erweitert n n ⎝ n1 n 2 ⎠ Priorität: 300 ⎛z ⎞ z z z subh⎜⎜ 1 , g 2 2 , n ⎟⎟ → 1 − g 2 2 n2 ⎠ n n ⎝ n1 Priorität: 300 ⎛ z ⎞ z z z subh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 − g 2 2 n2 ⎠ n n ⎝ n1 Priorität: 300 sgh2 Hauptnenner korrekt, jedoch Zähler ⎛ z z ⎞ z +e z + e2 subh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 1 − 2 additiv erweitert n n ⎝ n1 n 2 ⎠ e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛z ⎞ z z +e z + e2 subh⎜⎜ 1 , g 2 2 , n ⎟⎟ → 1 1 − g 2 2 n2 ⎠ n n ⎝ n1 e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛ z ⎞ z +e z + e2 z subh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 1 − g 2 2 n2 ⎠ n n ⎝ n1 e1 = n / n1 , e2 = n / n2 Priorität: 300 136 Nr. Beschreibung Regeln sgh3 Hauptnenner korrekt, jedoch Zähler ⎛ z z ⎞ e e subh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 − 2 durch Erweiterungszahlen ersetzt n n ⎝ n1 n 2 ⎠ ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛z ⎞ z e e subh⎜⎜ 1 , g 2 2 , n ⎟⎟ → 1 − g 2 2 n2 ⎠ n n ⎝ n1 ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛ z ⎞ z e e subh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g 1 1 − g 2 2 n2 ⎠ n n ⎝ n1 ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 sgh4 Hauptnenner korrekt, jedoch Erwei⎛ z z ⎞ z ⋅e z ⋅e subh⎜⎜ g1 1 , 2 , n ⎟⎟ → g1 1 2 − 2 1 terungszahlen vertauscht n n ⎝ n1 n 2 ⎠ ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛z ⎞ z z ⋅e z ⋅e subh⎜⎜ 1 , g 2 2 , n ⎟⎟ → 1 2 − g 2 2 1 n2 ⎠ n n ⎝ n1 ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 ⎛ z ⎞ z ⋅e z z ⋅e subh⎜⎜ g1 1 , g 2 2 , n ⎟⎟ → g1 1 2 − g 2 2 1 n2 ⎠ n n ⎝ n1 ¬( z1 = 1, z 2 = 1) e1 = n / n1 , e2 = n / n2 Priorität: 300 137 A.3.6 Gemischte und natürliche Zahlen Tabelle A-15: Diagnoseregeln für die Subtraktion von ganzen und gemischten Zahlen Nr. Beschreibung Regeln sngok Subtraktion gemischter und natürliz z⎞ ⎛ a − g → gem⎜ a − g , ⎟ cher Zahl korrekt n n⎠ ⎝ a≥g g sng0 z z⎞ ⎛ − a → gem⎜ g − a, ⎟ n n⎠ ⎝ g≥a Subtraktionsrichtung falsch bei natürz z⎞ ⎛ a − g → gem⎜ a − g , ⎟ licher Zahl n n⎠ ⎝ 2 2 a≥g Beispiel: 2 − 1 = 1 5 5 z z⎞ ⎛ a − g → gem⎜ g − a, ⎟ n n⎠ ⎝ g≤a 138 A.3.7 Kürzen Tabelle A-16: Diagnoseregeln für das Kürzen bei Subtraktion Nr. Beschreibung Regeln sbk1 Falsches Kürzen bei Subtraktion z1 z 2 z :k z − → 1 − 2 n1 n2 n1 n2 : k Beispiel: 4 1 1 1 − = − 7 4 7 1 (Lörcher: 12%) ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 z1 z 2 z z :k − → 1 − 2 n1 n2 n1 : k n2 ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 sgbk1 Falsches Kürzen bei der Subtraktion z z z :k z − 2 g1 1 − 2 → g1 1 bei einer gemischten Zahlen n1 n2 n1 n2 : k ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 g1 z1 z 2 z z :k − → g1 1 − 2 n1 n2 n1 : k n2 ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 z1 z z :k z − g2 2 → 1 − g2 2 n1 n2 n1 n2 : k ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 z1 z z z :k − g2 2 → 1 − g2 2 n1 n2 n1 : k n2 ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 sgk1 Falsches Kürzen bei der Subtraktion z z z :k z − g2 2 g1 1 − g 2 2 → g1 1 bei zwei gemischten Zahlen n1 n2 n1 n2 : k ∀2 ≤ k ≤ ggt ( z1 , n2 ) : n1 ≠ n2 , k z1 , k n2 g1 z :k z1 z z − g 2 2 → g1 1 − g 2 2 n2 n1 n2 n1 : k ∀2 ≤ k ≤ ggt (n1 , z 2 ) : n1 ≠ n2 , k n1 , k z 2 139 A.4 Multiplizieren A.4.1 Brüche Tabelle A-17: Diagnoseregeln für die Multiplikation von Brüchen Nr. Beschreibung Regeln mbok Multiplikationsaufgabe korrekt mb0 z1 z 2 z ⋅z ⋅ → 1 2 n1 n 2 n1 ⋅ n 2 Multiplikation mit falscher additiver z1 Technik n1 3 6 9 z1 Beispiele: ⋅ = 4 7 11 n 1 3 6 9 ⋅ = 4 7 28 3 6 18 oder ⋅ = 4 7 11 oder ⋅ z2 z + z2 → 1 n2 n1 + n2 ⋅ z2 z + z2 → 1 n2 n1 ⋅ n2 z1 z 2 z ⋅z ⋅ → 1 2 n1 n2 n1 + n2 (Padberg: 8%, meist flüchtig) mb0a Multiplikation mit falscher additiver z1 z 2 z + z2 ⋅ → 1 Technik bei gleichen Nennern n n n 3 4 7 Beispiel: ⋅ = 5 5 5 mb1 Multiplikation ersetzt durch Division Beispiel: 3 6 21 ⋅ = 4 7 24 z1 z 2 z ⋅n ⋅ → 1 2 n1 n 2 n1 ⋅ z 2 (Padberg: einige) mb1a Multiplikation ersetzt durch Division z z ⋅ →1 bei identischen Brüchen n n 3 3 Beispiel: ⋅ = 1 4 4 mb2 Multiplikation mit Hauptnennerbil- z1 z 2 mul ( z1 ⋅ e1 , z 2 ⋅ e2 ) ⋅ → dung (1. Variante kein Fehler) n1 n 2 n⋅n 3 6 21 ⋅ 24 504 n1 ≠ n2 , n = kgv(n1 , n2 ), Beispiel: ⋅ = = 4 7 28 ⋅ 28 784 e = n : n ,e = n : n 1 mb3 1 2 2 Multiplikation mit falscher Hauptnen- z1 z 2 z ⋅ n + z 2 ⋅ n1 ⋅ → 1 2 nertechnik n1 n2 n1 ⋅ n2 3 6 21 ⋅ 24 504 n = kgv(n1 , n2 ), n : n1 ≠ 1, n : n2 ≠ 2 Beispiel: ⋅ = = 4 7 28 28 z1 z 2 mul ( z1 ⋅ e1 , z 2 ⋅ e2 ) ⋅ → n1 n2 n n1 ≠ n2 , n = kgv(n1 , n2 ), e1 = n : n1 , e2 = n : n2 140 Nr. Beschreibung Regeln mb3a Multiplikation mit falscher Hauptnen- z1 z 2 z ⋅z ⋅ → 1 2 nertechnik bei gleichen Nennern n n n 3 4 12 Beispiel: ⋅ = 5 5 5 (Padberg: 17%, meist flüchtig) A.4.2 Ganze Zahlen und Brüche Tabelle A-18: Diagnoseegeln für die Multiplikation Nr. Beschreibung mnbok Multiplikationsaufgabe bei natürlicher Zahl korrekt Regeln z a⋅z → n n z z⋅a ⋅a → n n a⋅ mnb0 Multiplikation mit falscher additiver z a⋅ → Technik bei natürlicher Zahl n z 3 8 3 28 ⋅a → Beispiele: 5 ⋅ = oder 5 ⋅ = n 5 5 5 5 z a⋅ → n z ⋅a → n a+z n z+a n a⋅n + z n z + a⋅n n mnb1 Multiplikation ersetzt durch Erweitern z a⋅ → (bei natürlicher Zahl) n z 3 15 ⋅a → Beispiel: 5 ⋅ = n 5 25 a⋅z a⋅n z⋅a n⋅a (Padberg: 25%) mnb2 Multiplikation ersetzt durch Division z a⋅ → bei natürlicher Zahl n z 3 3 ⋅a → Beispiel: 5 ⋅ = n 5 25 141 z a⋅n z n⋅a A.4.3 Gemischte Zahlen Tabelle A-19: Diagnoseregeln für die Multiplikation von gemischten Zahlen Nr. Beschreibung Regeln mg0 bei einer gemischten Zahl: Multiplikaz z⎞ ⎛ a ⋅ g → gem⎜ a ⋅ g , ⎟ tion nur mit einem Summanden n n⎠ ⎝ 3 3 z z⎞ ⎛ Beispiele: 5 ⋅ 1 = 5 g ⋅ a → gem g ⋅ a , ⎜ ⎟ 10 10 n n⎠ ⎝ 3 15 z a⋅z oder 5 ⋅ 1 = 1 a⋅g → g 10 10 n n z z⋅a g ⋅a → g n n mg1 bei einer gemischten Zahl: Addition z z⎞ ⎛ (verwechselt) nur mit einem Summan- a ⋅ g → gem⎜ a + g , ⎟ n n⎠ ⎝ den z z⎞ ⎛ g ⋅ a → gem⎜ g + a, ⎟ 3 3 n n⎠ Beispiele: 5 ⋅ 1 = 6 ⎝ 10 10 z a+z 3 8 a⋅g → g oder 5 ⋅ 1 = 1 n n 10 10 z z+a g ⋅a → g n n z1 z 2 z ⋅z →g 1 2 g ⋅ n1 n 2 n1 ⋅ n 2 z z ⋅z z1 ⋅g 2 → g 1 2 n1 ⋅ n 2 n2 n1 mg2 bei zwei gemischten Zahlen: getrennte ⎛ z1 z2 z ⋅z ⎞ → gem⎜⎜ g1 ⋅ g 2 , 1 2 ⎟⎟ Multiplikation der Brüche und natürli- g1 ⋅ g 2 n1 n2 n1 ⋅ n2 ⎠ ⎝ chen Zahlen miteinander 1 1 1 Beispiel: 2 ⋅ 4 = 8 2 2 4 mg3 bei zwei gemischten Zahlen: getrennte ⎛ z1 z2 z ⎞ z → gem⎜⎜ g1 + g 2 , 1 ⎟⎟ + 2 Addition (verwechselt) der Brüche und g1 ⋅ g 2 n1 n2 n1 ⎠ n2 ⎝ natürlichen Zahlen miteinander ⎛ z z z ⎞ z 1 1 1 g1 1 ⋅ g 2 2 → gem⎜⎜ g1 ⋅ g 2 , 1 ⎟⎟ + 2 Beispiel: 2 ⋅ 4 = 6 n1 n2 n1 ⎠ n2 ⎝ 2 2 4 ⎛ z z z ⎞ z g1 1 ⋅ g 2 2 → gem⎜⎜ g1 + g 2 , 1 ⎟⎟ ⋅ 2 n1 n2 n1 ⎠ n2 ⎝ g1 142 ⎛ z1 z z z ⎞ ⋅ g 2 2 → 1 ⋅ gem⎜⎜ g1 + g 2 , 2 ⎟⎟ n1 n2 n1 n2 ⎠ ⎝ A.4.4 Kürzen Tabelle A-20: Diagnoseregeln für das Kürzen bei Multiplikation Nr. Beschreibung Regeln mbk1 Falsches Kürzen bei Multiplikation Beispiel: 2 6 1 3 ⋅ = ⋅ 3 7 3 7 z1 z 2 z :k z :k ⋅ → 1 ⋅ 2 n1 n2 n1 n2 ∀2 ≤ k ≤ ggt ( z1 , z 2 ) : k z1 , k z 2 z1 z 2 z z ⋅ → 1 ⋅ 2 n1 n2 n1 : k n2 : k ∀2 ≤ k ≤ ggt (n1 , n 2 ) : k n1 , k n 2 mnbk1 Falsches Kürzen bei Multiplikation mit natürlicher Zahl Beispiel: 2 1 ⋅6 = ⋅3 3 3 a⋅ z z:k → div(a, k ) ⋅ n n ∀2 ≤ k ≤ ggt (a, z ) : k a, k z z z:k ⋅a → ⋅ div(a, k ) n n ∀2 ≤ k ≤ ggt ( z , a ) : k z , k a 143 A.5 Dividieren A.5.1 Brüche Tabelle A-21: Diagnoseregeln für die Division von Brüchen Nr. Beschreibung Regeln dbok Divisionsaufgabe korrekt z1 z 2 z n → 1⋅ 2 : n1 n 2 n1 z 2 db0 z1 z 2 z z → 1⋅ 2 : n1 n 2 n1 n2 Division ersetzt durch Multiplikation Beispiel: 2 5 10 : = 5 7 35 db0a Division ersetzt durch Multiplikation z n z⋅n : → bei invers identischen Brüchen n z z⋅n 3 4 12 Beispiel: : = =1 4 3 12 db1 Division mit Kehrwertbildung an der z1 falschen Stelle n1 3 6 5 6 z1 Beispiel: : = ⋅ 5 25 3 25 n 1 db2 Divisionsrichtung falsch Beispiel: db3 Division mit (kein Fehler) 3 6 3:6 2 : = = 5 25 5:25 5 : z2 n ⋅z → 1 2 n2 z1 ⋅ n 2 : z2 n ⋅n → 1 2 n2 z1 ⋅ z 2 z1 z 2 z :z : → 2 1 n1 n2 n2 : n1 z1 | z 2 ,n1 | n2 Hauptnennerbildung z1 z 2 z ⋅e z ⋅e → 1 1: 2 2 : n1 n 2 n n n1 ≠ n 2 , n = kgv(n1 , n 2 ), e1 = n : n1 , e2 = n : n2 db4 Division mit falscher Hauptnenner- z1 z 2 div( z1 ⋅ n2 , z 2 ⋅ n1 ) : → technik n1 n2 n1 ⋅ n2 3 6 75:30 z 2 ⋅ n1 | z1 ⋅ n2 Beispiel: : = 5 25 125 z1 ⋅ n 2 z ⋅n z1 z 2 : → 2 1 n1 ⋅ n2 n1 n2 ¬( z 2 ⋅ n1 | z1 ⋅ n2 ) db4a Division mit falscher Hauptnenner- z1 z 2 z :z : → 1 2 technik bei gleichen Nennern n n n 2 1 2 z 2 z1 Beispiel: : = 5 5 5 (Padberg 4%, meist flüchtig) 144 Nr. Beschreibung Regeln db5 Division mit additiver Technik z1 z 2 z + n2 : → 1 n1 n2 n1 + z 2 Beispiel: 3 6 3 + 25 : = 5 25 5 + 6 z1 z 2 z ⋅n : → 1 2 n1 n2 n1 + z 2 z1 z 2 z + n2 : → 1 n1 n2 n1 ⋅ z 2 db6 Division ersetzt durch Subtraktion bei z1 gleichen Nennern n z1 2 1 1 Beispiel: : = 5 5 5 n 145 z2 z − z2 z1 > z 2 → 1 n n z z − z1 : 2 → 2 z 2 > z1 n n : A.5.2 Ganze Zahlen und Brüche Tabelle A-22: Diagnoseregeln für die Division Nr. Beschreibung Regeln dnbok Divisionsaufgabe korrekt z n → a⋅ n z z z 1 :a → ⋅ n n a a: dnb0 Division ersetzt durch Multiplikation, z falls ein Operand eine natürliche Zahl a : n → ist z :a → 5 50 3 6 n Beispiel: :2 = oder 10: = 2 2 4 8 a⋅z n z⋅a n (Padberg: 10%) dnb1 Division ersetzt durch Erweitern Beispiel: 5 50 3 6 :2 = oder 10: = 2 20 4 8 (Padberg: 6%) dnb2 Division ersetzt durch Kürzen Beispiel: 6 3 :2 = 4 8 z a⋅z → n a⋅n z z⋅a :a → n n⋅a a: z z:a → n n:a a | z ,a | n z z:a :a → n n:a a | z ,a | n a: dnb3 Division mit Kehrwertbildung an der z a: → falschen Stelle bei natürlicher Zahl n z 3 4 1 4 a: → Beispiel: :2 = ⋅ = n 4 3 2 6 z :a → n z :a → n 1 z ⋅ a n 1 n ⋅ a z n ⋅a z n 1 ⋅ z a dnb4 Division mit falscher Hauptnennerz a:z a: → technik n n z|a dnb5 Division mit additiver Technik bei naz z a: →a türlicher Zahl n n z z 5 5 :a →a Beispiel: 10: = 10 n n 2 2 146 A.5.3 Gemischte Zahlen Tabelle A-23: Diagnoseregeln für die Division von gemischten Zahlen Nr. Beschreibung dgok Divisionsaufgabe korrekt dg1 Kehrwertbildung ohne Ganzzahl Regeln g1 z1 z 2 z n → g1 1 ⋅ 2 : n1 n 2 n1 z 2 a : g2 z2 n → a ⋅ g2 2 n2 z2 z1 z z n : g2 2 → 1 ⋅ g2 2 n1 n2 n1 z2 g1 dg2 z1 z z n : g 2 2 → g1 1 ⋅ g 2 2 n1 n2 n1 z2 bei einer gemischten Zahl: Division z z⎞ ⎛ a : g → gem⎜ a : g , ⎟ nur mit einem Summanden n n⎠ ⎝ g|a z a z a:g → + n g n a:g g z z⎞ ⎛ → gem⎜ g : a, ⎟ n n⎠ ⎝ a|g z⎞ z ⎛ : a → gem⎜ g : a, ⎟ n n⎠ ⎝ a|g z g z :a → + n a n z z⎞ ⎛ g : a → gem⎜ a : g , ⎟ n n⎠ ⎝ g|a g g z1 z 2 z ⋅n →g 1 2 : n1 n 2 n1 ⋅ z 2 z1 z 1 z ⋅n :g 2 → + 1 2 n1 n2 g n1 ⋅ z 2 z1 z z ⋅n :g 2 →g 1 2 n1 n2 n1 ⋅ z 2 147 Nr. Beschreibung Regeln dg3 bei zwei gemischten Zahlen: getrennte ⎛ z1 z2 z :n ⎞ → gem⎜⎜ g 1 : g 2 , 1 2 ⎟⎟ Division der Brüche und natürlichen g1 : g 2 n1 n2 n1 : z 2 ⎠ ⎝ Zahl miteinander g 2 | g1 g1 ⎛ g z :n ⎞ z1 z : g 2 2 → add ⎜⎜ 1 , 1 2 ⎟⎟ n1 n2 ⎝ g 2 n1 : z 2 ⎠ g1 ⎛ z1 z z :n ⎞ : g 2 2 → gem⎜⎜ g 2 : g1 , 1 2 ⎟⎟ n1 n2 n1 : z 2 ⎠ ⎝ g1 | g 2 A.5.4 Kürzen Tabelle A-24: Diagnoseregeln für das Kürzen bei der Division Nr. Beschreibung Regeln dbk1 Falsches Kürzen bei Division z1 z 2 z :k z ⋅ → 1 ⋅ 2 n1 n 2 n1 n 2 : k Beispiel: 2 5 2 1 : = : 5 7 1 7 ∀2 ≤ k ≤ ggt ( z1 , n2 ) : k z1 , k n 2 z1 z 2 z z :k ⋅ → 1 ⋅ 2 n1 n 2 n1 : k n 2 ∀2 ≤ k ≤ ggt (n1 , z 2 ) : k n1 , z n2 148 A.6 Kürzen A.6.1 Bruch zu Bruch Tabelle A-25: Diagnoseregeln für das Kürzen Nr. Beschreibung Regeln kok Kürzen korrekt z1 z :k → 1 n1 n1 : k ∀2 ≤k ≤ ggt ( z1 , n1 ) : k z1 ,k n1 Verbotene Kontexte: k1 Kürzungszahl tritt im Ergebnis auf 2 1 Beispiel: = 822 + z2 z mit n1 = n 2 , 2 + mit n1 = n 2 n2 n2 − z2 z mit n1 = n 2 , 2 − mit n1 = n 2 n2 n2 +g z2 z mit n1 = n 2 , g 2 + mit n1 = n 2 n2 n2 −g z2 z mit n1 = n 2 , g 2 − mit n1 = n 2 n2 n2 z div( z , k ) → n k ∀2 ≤ k ≤ ggt ( z , n) : k z , k n, k ≠ n : k z k → n div(n, k ) ∀2 ≤ k ≤ ggt ( z , n) : k z , k n, k ≠ z : k Verbotene Kontexte (jeweils): 149 + z2 z mit n1 = n 2 , 2 + mit n1 = n 2 n2 n2 − z2 z mit n1 = n 2 , 2 − mit n1 = n 2 n2 n2 +g z2 z mit n1 = n 2 , g 2 + mit n1 = n 2 n2 n2 −g z2 z mit n1 = n 2 , g 2 − mit n1 = n 2 n2 n2 A.6.2 Bruch zu Ganzzahl Tabelle A-26: Diagnoseregeln für das Kürzen Nr. Beschreibung Regeln kokn Kürzen korrekt z →z 1 Verbotener Kontext: gem( g , ) k1n Falsches Kürzen bei Identität a →0 a a →a a Verbotener Kontext (jeweils): gem( g , ) 150 A.7 Umwandlung Tabelle A-27: Diagnoseregeln für die Umwandlung von Brüchen und gemischten Zahlen Nr. Beschreibung Regeln ugbok Umwandlung einer gemischten Zahl in einen Bruch korrekt g z g ⋅n + z → n n Priorität: 50 ugb1 bei Umwandlung einer gemischten z g+z Zahl in einen Bruch Ganzzahl zum g n → n Zähler addiert Beispiel: 2 3 5 = 4 4 Tabelle A-28: Diagnoseregeln für die Umwandlung Nr. Beschreibung Regeln ubgok Umwandlung eines Bruchs in eine ge- z mischte Zahl z2 n n z > n , g = ⎣z : n ⎦, z 2 = z mod n, z 2 ≠ 0 →g Priorität: 50 151 Anhang B: Statistiken zur ersten Phase I Im Abschnitt B des Anhangs soll die Entwicklung einiger „Kenndaten“ in den erste Phasen der Fehlerdiagnose im zeitlichen Verlauf der ersten 5 Sekunden gezeigt werden. Folgende Aufgaben wurden als Beispiele ausgewählt: 2 5 13 + 46 4 12 212 + 4 6 8 8+6 12 3 3 8 + 112 Die Aufgaben wurden hierbei so ausgewählt, daß zahlreiche Möglichkeiten zum korrekten und fehlerhaften Kürzen existieren, damit die Diagnose auch tatsächlich fünf Sekunden rechnet. Zu jeder Aufgabe werden im folgenden vier Diagramme gezeigt. Das Diagramm „Nachfolger und Terme“ zeigt, wie viele Elemente von Nachfolgermengen berechnet wurden und wie viele Terme hierfür gespeichert werden müssen. Aufgrund der Strukturteilung der Terme werden weniger verschiedene Terme als Elemente von Nachfolgermengen berechnet. Das jeweils zweite Diagramm „Diagnosen“ zeigt die Anzahl der durch die Nachfolgermengen dargestellten Diagnosen im zeitlichen Verlauf. Die Anzahl der Diagnosen muß für derartige Statistiken extra berechnet werden. Hierzu müssen alle mögliche Diagnosen explizit aufgezählt werden. Durch die hohe Anzahl der indirekt berechneten Diagnosen war es für die letzte der vier Aufgaben nur für die ersten vier Meßzeitpunkte möglich, die Anzahl der Diagnosen zu berechnen9. Im dritten Diagramm wird die Anzahl der Diagnosen gezeigt, deren Länge kürzer als 15 Rechenschritte ist. Dies ist eine für die Bruchrechnung und die meisten Schüler realistische Obergrenze. Der Speicherbedarf der ersten Phase des Diagnosealgorithmus wird in dem jeweils viertem Diagramm „Speicherbelegung“ gezeigt. Hierbei wird sowohl der Speicherbedarf für alle Nachfolgermengen (Gesamt) als auch auf einer zweiten logarithmischen Skala der durchschnittliche Speicherbedarf pro Diagnose gezeigt. Durch Strukturteilung wird dabei i.A. weniger als ein Bit pro Diagnose benötigt. 9 Die Berechnung der Diagnosen für den fünften Meßzeitpunkt wurde nach 150 Stunden abgebrochen. 152 2 5 1 +4 3 6 Nachfolger und Terme 10000 9000 8000 Anzahl 7000 6000 5000 4000 3000 2000 1000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Nachfolger Terme Abbildung B-1: Berechnete Elemente von Nachfolgermengen und berechnete mögliche Schülerlösungen (Terme) im zeitlichen Verlauf 2 5 1 +4 3 6 Diagnosen 250.000.000 Diagnosen 200.000.000 150.000.000 100.000.000 50.000.000 0 0 1000 2000 3000 4000 5000 Zeit [ms] Abbildung B-2: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen im zeitlichen Verlauf 153 6000 2 5 1 +4 3 6 Diagnosen (Länge < 15) 80.000 70.000 Diagnosen 60.000 50.000 40.000 30.000 20.000 10.000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Abbildung B-3: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen aus weniger als 15 Rechenschritten im zeitlichen Verlauf 2 5 1 +4 3 6 Speicherbelegung 1 4.000.000 Speicher [Byte] 3.000.000 2.500.000 0,1 2.000.000 1.500.000 1.000.000 500.000 0 0 1000 2000 3000 4000 Zeit Gesamt pro Diagnose Abbildung B-4: Speicherbelegung im zeitlichen Verlauf 154 5000 0,01 6000 Speicher pro Diagnose [Byte] 3.500.000 2 4 12 + 12 4 Nachfolger und Terme 18000 16000 14000 Anzahl 12000 10000 8000 6000 4000 2000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Nachfolger Terme Abbildung B-5: Berechnete Elemente von Nachfolgermengen und berechnete mögliche Schülerlösungen (Terme) im zeitlichen Verlauf 4 12 + 12 4 Diagnosen 6.000.000.000 5.000.000.000 4.000.000.000 Diagnosen 2 3.000.000.000 2.000.000.000 1.000.000.000 0 0 1000 2000 3000 4000 Zeit [ms] Abbildung B-6: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen im zeitlichen Verlauf 155 5000 6000 2 4 12 + 12 4 Diagnosen (Länge < 15) 900.000 800.000 700.000 Diagnosen 600.000 500.000 400.000 300.000 200.000 100.000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Abbildung B-7: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen aus weniger als 15 Rechenschritten im zeitlichen Verlauf 4 12 + 12 4 Speicherbelegung 3.000.000 100 2.500.000 10 2.000.000 1 1.500.000 0,1 1.000.000 0,01 500.000 0,001 0 0 1000 2000 3000 4000 Zeit Gesamt pro Diagnose Abbildung B-8: Speicherbelegung im zeitlichen Verlauf 156 5000 0,0001 6000 Speicher pro Diagnose [Byte] Speicher [Byte] 2 6 8 + 8 6 Nachfolger und Terme 18000 16000 14000 Anzahl 12000 10000 8000 6000 4000 2000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Nachfolger Terme Abbildung B-9: Berechnete Elemente von Nachfolgermengen und berechnete mögliche Schülerlösungen (Terme) im zeitlichen Verlauf 6 8 + 8 6 Diagnosen 3.000.000.000 2.500.000.000 Diagnosen 2.000.000.000 1.500.000.000 1.000.000.000 500.000.000 0 0 1000 2000 3000 4000 5000 Zeit [ms] Abbildung B-10: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen im zeitlichen Verlauf 157 6000 6 8 + 8 6 Diagnosen (Länge < 15) 1.000.000 900.000 800.000 Diagnosen 700.000 600.000 500.000 400.000 300.000 200.000 100.000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Abbildung B-11: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen aus weniger als 15 Rechenschritten im zeitlichen Verlauf 6 8 + 8 6 Speicherbelegung 10 3.000.000 Speicher [Byte] 1 2.000.000 0,1 1.500.000 1.000.000 0,01 500.000 0 0 1000 2000 3000 4000 Zeit Gesamt pro Diagnose Abbildung B-12: Speicherbelegung im zeitlichen Verlauf 158 5000 0,001 6000 Speicher pro Diagnose [Byte] 2.500.000 3 12 3 +1 8 12 Nachfolger und Terme 30000 25000 Anzahl 20000 15000 10000 5000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Nachfolger Terme Abbildung B-13: Berechnete Elemente von Nachfolgermengen und berechnete mögliche Schülerlösungen (Terme) im zeitlichen Verlauf 3 12 +1 12 8 Diagnosen 14.000.000.000 12.000.000.000 10.000.000.000 Diagnosen 3 8.000.000.000 6.000.000.000 4.000.000.000 2.000.000.000 0 0 1000 2000 3000 4000 Zeit [ms] Abbildung B-14: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen im zeitlichen Verlauf 159 5000 6000 12 3 +1 8 12 Diagnosen (Länge < 15) 160.000 140.000 Diagnosen 120.000 100.000 80.000 60.000 40.000 20.000 0 0 1000 2000 3000 4000 5000 6000 Zeit [ms] Abbildung B-15: Anzahl der durch die Nachfolgermengen dargestellten Diagnosen aus weniger als 15 Rechenschritten im zeitlichen Verlauf 3 12 +1 12 8 Speicherbelegung 3.000.000 100 2.500.000 10 1 2.000.000 0,1 1.500.000 0,01 1.000.000 0,001 500.000 0,0001 0 0 1000 2000 3000 4000 Zeit Gesamt pro Diagnose Abbildung B-16: Speicherbelegung im zeitlichen Verlauf 160 5000 0,00001 6000 Speicher pro Diagnose [Byte] 3 Speicher [Byte] 3 Anhang C: Rechengraphen Für die Aufstellung der Diagnoseregeln eines Diagnosesystems stellt die Darstellung der verschiedenen Rechenwege der Schüler als Rechengraph eine wichtige Hilfe dar. Ein Rechengraph ist ein gerichteter Graph, dessen Knoten durch die Aufgabenstellung und die (Zwischen-) Ergebnisse der Schüler und dessen Kanten durch ihre Rechnungen gegeben werden. Die Beschriftung der Kanten gibt an, wie viele Schüler diese Rechnung verwendet haben. Die Beschriftung der Kante zwischen der Aufgabenstellung und dem künstlichen Knoten „NB“ gibt an, wie viele Schüler die Aufgabe nicht bearbeitet haben. Abbildung C-1 zeigt ein Beispiel für einen Rechengraphen. Abbildung C-1: Beispiel für einen Rechengraph Die den Schülern gestellte Aufgabe 6 8 kürzten z.B. 6 Schüler fehlerhaft zu 2 4 . Weitere 3 Schüler kamen über einen zusätzlichen Zwischenschritt zum gleichen Ergebnis. Bei der Aufstellung der Diagnoseregeln eines Diagnosesystems kann nun für jede Kante des Rechengraphs überprüft werden, ob die zugehörige Rechnung mit den Diagnoseregeln erklärbar ist. Gegebenenfalls kann das Diagnosesystem gezielt erweitert werden. Im Rahmen der 7.-Klassen Studie wurden alle fehlerhaften und alle unvollständigen Rechnungen der Schüler in einer Datenbank erfaßt. Durch die halbautomatische Darstellung dieser Daten in Form von Rechengraphen konnte das auf der Basis der Literatur (siehe Anhang A) erstellte Diagnosesystem zur Bruchrechnung um zahlreiche Diagnoseregeln ergänzt werden. Die restlichen Seiten des Anhangs C dokumentieren die Rechengraphen zu den Aufgaben der 7.-Klassen-Studie. Die Rechengraphen einiger Aufgaben waren dabei so komplex, daß eine übersichtliche Darstellung nur durch eine Vereinfachung der Graphen möglich wurde. Hierzu wurden alle Kanten entfernt die Rechenwege darstellen, die nur von einem einzigen Schüler verfolgt wurden. Von den so entstehenden Zusammenhangskomponenten wird in der Dokumentation nur die Größte dargestellt. Die Rechengraphen zur Bruchrechnung werden durch Tabellen mit den von BugFix berechneten Diagnosen für die wichtigsten korrekten und fehlerhaften Rechenschritte ergänzt. Den Tabellen 161 liegt eine äußerste knappe Rechenzeit von 0,5 Sekunden für die erste Phase der Fehlerdiagnose zugrunde. In realen Anwendungen stehen hingegen zwischen 5 bis 10 Sekunden zur Verfügung. C.1 Verzeichnis der Rechengraphen Die Reihenfolge der Darstellung der Rechengraphen der 7.-Klassen-Studie orientiert sich an der Art der Aufgabenstellung. Aufgaben mit ähnlichen Schwierigkeitsfaktoren wurden dabei hintereinander dargestellt um die Rechengraphen besser vergleichen zu können. Das folgende Verzeichnis gibt an, welcher Rechengraph auf welcher Seite zu finden ist. Übungsblatt 1 2a Rechengraph C-1 2b Rechengraph C-2 2c Rechengraph C-5 2d Rechengraph C-8 3a Rechengraph C-14 3b Rechengraph C-17 3c Rechengraph C-11 3d Rechengraph C-18 3e Rechengraph C-23 3f Rechengraph C-26 5a Rechengraph C-29 5b Rechengraph C-36 5c Rechengraph C-32 5d Rechengraph C-42 5e Rechengraph C-33 5f Rechengraph C-37 Übungsblatt 2 2a Rechengraph C-6 2b Rechengraph C-3 2c Rechengraph C-9 3a Rechengraph C-15 3b Rechengraph C-21 3c Rechengraph C-12 163 164 166 168 173 176 170 177 182 185 187 194 190 200 191 195 3d Rechengraph C-24 3e Rechengraph C-19 3f Rechengraph C-27 5a Rechengraph C-38 5b Rechengraph C-30 5c Rechengraph C-43 5d Rechengraph C-39 5e Rechengraph C-34 Übungsblatt 3 2a Rechengraph C-7 2b Rechengraph C-4 2c Rechengraph C-10 3a Rechengraph C-16 3b Rechengraph C-22 3c Rechengraph C-13 3d Rechengraph C-25 3e Rechengraph C-20 3f Rechengraph C-28 5a Rechengraph C-40 5b Rechengraph C-31 5c Rechengraph C-44 5d Rechengraph C-41 5e Rechengraph C-35 167 165 169 174 180 171 162 183 178 186 196 188 201 197 192 168 165 169 175 181 172 184 179 186 198 189 202 199 193 C.2 Bruchrechnung C.2.1 Kürzen Übungsblatt 1 Aufgabe 2a 6 = 8 Anzahl Schüler 505 korrekt 476 (94%) unvollständig 0 (0%) fehlerhaft 24 (5 %) nicht bearbeitet 5 (1%) Rechengraph C-1: Übungsblatt 1, Aufgabe 2a Von Nach Anzahl Diagnosen 6 8 2 4 6 6 8 1 2 4 2 4 6 8 6 8 4 6 6 8 6 8 1 2 4 6 3 4 2 4 2 2 3 8 6 8 1 4 k1/2, dnok k1/2, dnok, kok, dnok, dnok k1/2, dnok, k1/2, dnok, k1/1, dnok k1/1, dnok, ubgok, ugb1, anok, k1/1, dnok kok, dnok, dnok k1/2, dnok, k1/1, dnok 3 keine Diagnose 3 kok, dnok, dnok 3 keine Diagnose 2 k1/2, dnok, k1/2, dnok k1/1, dnok, ubgok, ugb1, anok 2 keine Diagnose 2 k1/2, dnok, k1/2, dnok, kok, dnok, dnok, kokn k1/1, dnok, ubgok, ugb1, anok, kok, dnok, dnok, kokn k1/2, dnok, k1/2, dnok, kok, dnok, dnok, k1n/2 k1/1, dnok, ubgok, ugb1, anok, kok, dnok, dnok, k1n/2 163 Übungsblatt 1 Aufgabe 2b 9 = 18 Anzahl Schüler 505 korrekt 387 (77%) unvollständig 18 (4%) fehlerhaft 88 (17%) nicht bearbeitet 12 (2%) Rechengraph C-2: Übungsblatt 1, Aufgabe 2b Von 9 18 9 18 3 6 9 18 9 18 9 18 Nach 1 9 3 6 1 3 2 1 3 1 2 Anzahl Diagnosen 55 k1/1, dnok 35 kok, dnok, dnok 16 k1/1, dnok 4 2 2 kok, dnok, dnok, k1/2, dnok, ubgok, ugb1, anok, k1n/2 [1 weitere Diagnose] kok, dnok, dnok, k1/1, dnok k1/1, dnok, k1/1, dnok kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok 164 Übungsblatt 2 Aufgabe 2b 6 = 24 Anzahl Schüler 300 korrekt 276 (92%) unvollständig 5 (2%) fehlerhaft 19 (6%) nicht bearbeitet 0 (0%) Rechengraph C-3: Übungsblatt 2, Aufgabe 2b Von 6 24 6 24 6 24 6 24 6 24 Nach 1 6 3 12 4 1 3 3 8 Übungsblatt 3 Aufgabe 2b Anzahl Diagnosen 7 k1/1, dnok k1/2, dnok, kok, dnok, dnok 4 kok, dnok, dnok 4 keine Diagnose 3 kok, dnok, dnok, k1/1, dnok k1/2, dnok, k1/2, dnok, kok, dnok, dnok 2 k1/2, dnok 9 = 36 Anzahl Schüler 234 korrekt 230 (98%) unvollständig 1 (<1%) fehlerhaft 3 (1%) nicht bearbeitet 0 (0%) Rechengraph C-4: Übungsblatt 3, Aufgabe 2b 165 Übungsblatt 1 Aufgabe 2c 36 = 12 Anzahl Schüler 505 korrekt 320 (63%) unvollständig 129 (25%) fehlerhaft 45 (9%) nicht bearbeitet 11 (2%) Rechengraph C-5: Übungsblatt 1, Aufgabe 2c Von Nach 36 12 3 1 36 12 36 12 36 12 36 12 6 2 12 1 18 6 6 6 36 12 36 12 Anzahl Diagnosen 121 6 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok, kok, dnok, dnok k1/1, dnok, k1/2, dnok k1/1, dnok, kok, dnok, dnok, k1/2, dnok kok, dnok, dnok, kok, dnok, dnok, k1/1, dnok, k1/2, dnok kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok 5 k1/2, dnok 5 kok, dnok, dnok 4 k1/1, dnok 1 3 4 k1/2, dnok, kok, dnok, dnok k1/1, dnok, k1/1, dnok kok, dnok, dnok, k1/1, dnok, k1/1, dnok kok, dnok, dnok, kok, dnok, dnok, k1/1, dnok, k1/1, dnok 6 3 3 kok, dnok, dnok, k1/1, dnok 166 Übungsblatt 2 Aufgabe 2a 56 = 8 Anzahl Schüler 300 korrekt 248 (83%) unvollständig 35 (12%) fehlerhaft 17 (6%) nicht bearbeitet 0 (0%) Rechengraph C-6: Übungsblatt 2, Aufgabe 2a Von Nach Anzahl Diagnosen 56 8 7 1 32 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok, kok, dnok, dnok k1/1, dnok, k1/1, dnok, kok, dnok, dnok 56 8 8 1 4 k1/2, dnok 56 8 14 2 3 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok k1/1, dnok, k1/1, dnok 56 8 8 1 7 8 2 k1/1, dnok 8 2 kokn 167 Übungsblatt 3 Aufgabe 2a 54 = 9 Anzahl Schüler 234 korrekt 216 (92%) unvollständig 14 (6%) fehlerhaft 3 (1%) nicht bearbeitet 1 (<1%) Rechengraph C-7: Übungsblatt 3, Aufgabe 2a Von 54 9 Nach 6 1 Übungsblatt 1 Aufgabe 2d Anzahl Diagnosen 13 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok 7 = 7 Anzahl Schüler 505 korrekt 391 (77%) unvollständig 91 (18%) fehlerhaft 9 (2%) nicht bearbeitet 14 (3%) Rechengraph C-8: Übungsblatt 1, Aufgabe 2d Von 7 7 7 7 7 7 Nach Anzahl Diagnosen 1 1 90 7 3 0 2 kok, dnok, dnok k1n/2 k1/2, dnok, kokn k1n/1 kok, dnok, dnok, k1n/1 168 Übungsblatt 2 Aufgabe 2c 9 = 9 Anzahl Schüler 300 korrekt 286 (95%) unvollständig 12 (4%) fehlerhaft 2 (1%) nicht bearbeitet 0 (0%) Rechengraph C-9: Übungsblatt 2, Aufgabe 2c Von 9 9 Nach 1 1 Übungsblatt 3 Aufgabe 2c Anzahl Diagnosen 12 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok 8 = 8 Anzahl Schüler 234 korrekt 230 (98%) unvollständig 4 (2%) fehlerhaft 0 (0%) nicht bearbeitet 0 (0%) Rechengraph C-10: Übungsblatt 3, Aufgabe 2c Von 8 8 Nach 1 1 Anzahl Diagnosen 4 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok, kok, dnok, dnok k1/1, dnok, k1/1, dnok, kok, dnok, dnok k1/2, dnok, k1/1, dnok, kok, dnok, dnok k1/2, dnok, k1/2, dnok, kok, dnok, dnok 169 C.2.2 Addition Übungsblatt 1 Aufgabe 3c 2 3 2 +1 = 3 5 Anzahl Schüler 505 korrekt 284 (56%) unvollständig 43 (9%) fehlerhaft 159 (31%) nicht bearbeitet 19 (4%) Vereinfachung keine Einfachkanten (169 Kanten, 133 Knoten, 3 Kanten höherer Ordnung) Rechengraph C-11: Übungsblatt 1, Aufgabe 3c Von Nach Anzahl Diagnosen 2 3 23 + 15 2 3 23 + 15 5 38 33 agok/2, anok, ag0, anok, anok 8 8 3+5 26 ugbok, mnok, anok, ugbok, mnok, anok 2 3 23 + 15 64 15 2 3 23 + 15 16 15 2 3 23 + 15 8 8 3+5 2 3 23 + 15 8 8 3+5 19 315 1 115 10 9 215 + 115 40 24 15 + 15 7 8 3+5 16 8 26 18 aghok/2, aghok/4, mnok, mnok, agok/2, anok, ugbok, mnok, anok, abok, anok ugbok, mnok, anok, ugbok, mnok, anok, ab1, mnok, mnok ugbok, mnok, anok, ugbok, mnok, anok, abhok/1, abh1, ab1a, mnok [30 weitere Diagnosen] aghok/2, aghok/4, mnok, mnok, agok/2, anok, agok/1, anok agok/2, anok, aghok/1, aghok/3, mnok, mnok, agok/1, anok 9 ubgok 7 aghok/2, aghok/4, mnok, mnok 7 abhok/1, abhok/2, mnok, mnok 6 keine Diagnose 6 ab0, anok, anok 170 Übungsblatt 2 Aufgabe 3c 8 5 1 +2 = 5 8 Anzahl Schüler 300 korrekt 209 (70%) unvollständig 21 (7%) fehlerhaft 68 (23%) nicht bearbeitet 2 (1%) Vereinfachung keine Einfachkanten (156 Kanten, 141 Knoten, 2 Kanten höherer Ordnung) Rechengraph C-12: Übungsblatt 2, Aufgabe 3c Von Nach 8 5 15 + 28 8 5 15 + 28 8 5 15 + 28 13 21 5 + 8 89 340 64 25 140 + 240 8 5 15 + 28 Anzahl Diagnosen 26 ugbok, mnok, anok, ugbok, mnok, anok 11 aghok/2, aghok/4, mnok, mnok, agok/2, anok, agok/1, anok agok/2, anok, aghok/1, aghok/3, mnok, mnok, agok/1, anok 8 aghok/2, aghok/4, mnok, mnok 209 40 8 aghok/2, aghok/4, mnok, mnok, agok/2, anok, ugbok, mnok, anok, abok, anok agok/2, anok, aghok/1, aghok/3, mnok, mnok, ugbok, mnok, anok, abok, anok agok/2, anok, aghok/1, ugbok, mnok, anok, abhok/2, mnok, mnok, abok, anok [26 weitere Diagnosen] 13 21 5 + 8 104 105 40 + 40 8 abhok/1, abhok/2, mnok, mnok 104 105 40 + 40 209 40 109 40 4 abok, anok 3 keine Diagnose 56 25 140 + 240 3 keine Diagnose 29 240 3 ubgok 104 105 40 + 40 8 5 15 + 28 109 40 171 Übungsblatt 3 Aufgabe 3c 6 7 1 +3 = 7 6 Anzahl Schüler 234 korrekt 187 (80%) unvollständig 4 (2%) fehlerhaft 47 (20%) nicht bearbeitet 0 (0%) Rechengraph C-13: Übungsblatt 3, Aufgabe 3c Von Nach 6 7 17 + 36 13 25 7 + 6 Anzahl Diagnosen 17 ugbok, mnok, anok, ugbok, mnok, anok 6 7 17 + 36 253 42 8 aghok/2, aghok/4, mnok, mnok, agok/2, anok, ugbok, mnok, anok, abok, anok agok/2, anok, aghok/1, aghok/3, mnok, mnok, ugbok, mnok, anok, abok, anok [18 weitere Diagnosen] 13 25 7 + 6 6 7 17 + 36 6 7 17 + 36 6 7 17 + 36 78 175 42 + 42 1 1 11 + 31 8 abhok/1, abhok/2, mnok, mnok 3 agk1/1, dnok, dnok, agk1/2, dnok, dnok agk1/1, dnok, dnok, agk1/1, dnok, dnok, agk1/2, dnok, dnok 36 49 142 + 342 3 aghok/2, aghok/4, mnok, mnok 85 442 2 aghok/2, aghok/4, mnok, mnok, agok/2, anok, agok/1, anok agok/2, anok, aghok/1, aghok/3, mnok, mnok, agok/1, anok 172 C.2.3 Subtraktion Übungsblatt 1 Aufgabe 3a 5 3 − = 8 8 Anzahl Schüler 505 korrekt 363 (72%) unvollständig 109 (22%) fehlerhaft 25 (5%) nicht bearbeitet 8 (2%) Rechengraph C-14: Übungsblatt 1, Aufgabe 3a Von Nach Anzahl Diagnosen 5 3 8-8 2 8 111 5 3 8-8 2 1 5 5 3 8-8 2 4 5 3 8-8 5 3 8-8 2 0 8 8 sbok, snok sb0, snn, anok, snok, k1/2, dnok sb2, anok, k1/1, dnok, kok, dnok, dnok sb2, anok, k1/2, dnok, kok, dnok, dnok sb2, anok, kok, dnok, dnok, kok, dnok, dnok, k1/2, dnok [4 weitere Diagnosen] sb2, anok, kok, dnok, dnok, k1n/2 sb2, anok, kok, dnok, dnok, kok, dnok, dnok, k1n/2 sb2, anok, k1/1, dnok, kok, dnok, dnok, kokn [10 weitere Diagnosen] 4 sb0, snok, snok 3 sb2, anok 8 8 1 3 5 3 8-8 1 1 2 5 3 8-8 1 4 2 5 3 8-8 5⋅3 8⋅8 2 kok, dnok, dnok, kokn kok, dnok, dnok, kok, dnok, dnok, kokn kok, dnok, dnok, kok, dnok, dnok, kok, dnok, dnok, kokn [9 weitere Diagnosen] sb2, anok, kok, dnok, dnok sb2, anok, kok, dnok, dnok, kok, dnok, dnok sb2, anok, kok, dnok, dnok, kok, dnok, dnok, kok, dnok, dnok [5 weitere Diagnosen] sbok, snok, kok, dnok, dnok sb0, snn, anok, snok, k1/2, dnok, kok, dnok, dnok sb2, anok, kok, dnok, dnok, k1/1, dnok sb1 173 Übungsblatt 2 Aufgabe 3a 10 3 − = 7 7 Anzahl Schüler 300 korrekt 279 (93%) unvollständig 11 (4%) fehlerhaft 10 (3%) nicht bearbeitet 0 (0%) Rechengraph C-15: Übungsblatt 2, Aufgabe 3a Von 10 3 7 -7 7 7 Nach Anzahl Diagnosen 7 7 14 7 5 10 3 7 -7 7 3 10 3 7 -7 7 7 1 1 1 1 2 2 sbok, snok sb2, anok, ubgok, ugb1, anok k1n/2 k1/2, dnok, kokn sbok, snok, k1n/2 sbok, snok, k1/2, dnok, kokn sb2, anok, ubgok, ugb1, anok, k1n/2 sb2, anok, ubgok, ugb1, anok, k1/2, dnok, kokn sbok, snok, kok, dnok, dnok sb2, anok, ubgok, ugb1, anok, kok, dnok, dnok kok, dnok, dnok 174 Übungsblatt 3 Aufgabe 3a 15 3 − = 6 6 Anzahl Schüler 234 korrekt 215 (92%) unvollständig 0 (0%) fehlerhaft 19 (8%) nicht bearbeitet 0 (0%) Rechengraph C-16: Übungsblatt 3, Aufgabe 3a Von Nach 15 3 6 -6 12 6 15 3 6 -6 Anzahl Diagnosen 9 sbok, snok 2 1 5 sbok, snok, kok, dnok, dnok sbok, snok, kok, dnok, dnok, kok, dnok, dnok sb0, snok, snn, anok, kok, dnok, dnok, k1/2, dnok [17 weitere Diagnosen] 15 3 6 -6 12 1 2 sb0, snn, anok, snok, k1/2, dnok 12 6 2 1 2 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok k1/1, dnok, k1/2, dnok [3 weitere Diagnosen] 12 1 12 2 kokn 175 Übungsblatt 1 Aufgabe 3b 5 1 − = 12 8 Anzahl Schüler 505 korrekt 359 (71%) unvollständig 6 (1%) fehlerhaft 118 (23%) nicht bearbeitet 22 (4%) Vereinfachung keine Einfachkanten (99 Kanten, 78 Knoten und 2 Kanten höherer Ordnung) Rechengraph C-17: Übungsblatt 1, Aufgabe 3b Von Nach Anzahl Diagnosen 5 1 12 - 8 4 4 30 4 4 1 13 5 1 12 - 8 5 1 12 - 8 10 4 24 - 24 6 24 5 1 12 - 8 10 4 24 - 24 10 3 24 - 24 6 24 1 4 5 1 24 - 24 5 1 12 - 8 6 24 sb0, snok, snok sbh0, sbh3, sbok, snok, kok, dnok, dnok, k1/2, dnok sbh0, sbh3, sb1, mnok, mnok, k1/1, dnok, kok, dnok, dnok [4 weitere Diagnosen] kok, dnok, dnok, kokn kok, dnok, dnok, kok, dnok, dnok, kokn kok, dnok, dnok, k1n/2 kok, dnok, dnok, kok, dnok, dnok, k1n/2 11 keine Diagnose 10 sbhok/1, sbhok/2, mnok, mnok 10 sbok, snok 7 kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok 4 sbhok/1, sbh1 4 24 4 sbhok/1, sbh1, sbok, snok sbh0, sbhok/2, mnok, mnok, sbok, snok, k1/2, dnok sbh0, sbh3, sbok, snok, k1/2, dnok [9 weitere Diagnosen] 3 12 4 kok, dnok, dnok 176 Übungsblatt 1 Aufgabe 3d 1 12 1 − = 5 10 Anzahl Schüler 505 korrekt 307 (61%) unvollständig 48 (10%) fehlerhaft 109 (22%) nicht bearbeitet 41 (8%) Vereinfachung keine Einfachkanten (102 Kanten, 78 Knoten, 3 Kanten höherer Ordnung) Rechengraph C-18: Übungsblatt 1, Aufgabe 3d Von Nach 1 12 15 - 10 0 10 1 12 15 - 10 1 12 15 - 10 1 12 15 - 10 2 10 2 12 110 - 10 6 12 5 - 10 11 15 1 5 10 10 1 12 12 10 - 10 2 12 110 - 10 6 12 5 - 10 14 12 10 - 10 1 10 12 12 10 - 10 12 12 10 - 10 2 10 Anzahl Diagnosen 36 sghok/1, sghok/4, mnok, mnok, ugbok, mnok, anok, sbok, snok sghok/1, sghok/4, mnok, mnok, sgok/1, snok, ugbok, mnok, anok ugbok, mnok, anok, sbhok/1, sbhok/2, mnok, mnok, sbok, snok [13 weitere Diagnosen] 33 sghok/1, sghok/4, mnok, mnok 19 ugbok, mnok, anok 11 keine Diagnose 8 kok, dnok, dnok 8 kok, dnok, dnok, kokn kok, dnok, dnok, kok, dnok, dnok, kokn kok, dnok, dnok, k1n/2 kok, dnok, dnok, kok, dnok, dnok, k1n/2 7 keine Diagnose 6 ugbok, mnok, anok 6 sbhok/1, sbhok/2, mnok, mnok 6 sbok, snok sb0, snn, anok, snok, k1/2, dnok 177 Übungsblatt 2 Aufgabe 3e 1 10 3 − = 3 3 Anzahl Schüler 300 korrekt 250 (83%) unvollständig 11 (4%) fehlerhaft 34 (11%) nicht bearbeitet 5 (2%) Rechengraph C-19: Übungsblatt 2, Aufgabe 3e Von Nach 1 10 33 - 3 10 10 3 - 3 1 10 33 - 3 0 3 1 10 33 - 3 1 10 33 - 3 1 10 33 - 3 11 10 3 - 3 7 10 3- 3 9 33 Anzahl Diagnosen 11 ugbok, mnok, anok 11 ugbok, mnok, anok, sbok, snok sgok/1, snok, ugbok, mnok, anok ugbok, mnok, anok, sb0, snn, anok, snok, kok, dnok, dnok [2 weitere Diagnosen] 3 keine Diagnose 3 keine Diagnose 3 keine Diagnose 10 10 3 - 3 3 3 sbok, snok, k1/2, dnok, kokn sb0, snn, anok, snok, kok, dnok, dnok, k1/2, dnok, kokn sb0, snn, anok, snok, k1/1, dnok, k1/2, dnok, kokn [2 weitere Diagnosen] 11 10 3 - 3 1 3 3 sbok, snok 178 Übungsblatt 3 Aufgabe 3e 28 8 −4 = 5 5 Anzahl Schüler 234 korrekt 220 (94%) unvollständig 0 (0%) fehlerhaft 12 (5%) nicht bearbeitet 2 (1%) Rechengraph C-20: Übungsblatt 3, Aufgabe 3e Von Nach Anzahl Diagnosen 28 8 5 - 45 0 5 6 ugbok, mnok, anok, sbok, snok ugbok, mnok, anok, sb0, snn, anok, snok, kok, dnok, dnok ugbok, mnok, anok, sb0, snn, anok, snok, k1/1, dnok 28 8 5 - 45 28 28 5 - 5 4 ugbok, mnok, anok 28 28 5 - 5 1 2 sb0, snn, snok, anok, kok, dnok, dnok, k1/1, dnok, kok, dnok, dnok, kokn sb1, mnok, mnok, ubgok, ugb1, anok, k1/2, dnok, kok, dnok, dnok, kokn [8 weitere Diagnosen] 179 Übungsblatt 2 Aufgabe 3b 2 6 5 −1 = 18 6 Anzahl Schüler 300 korrekt 200 (66%) unvollständig 14 (5%) fehlerhaft 86 (29%) nicht bearbeitet 0 (0%) Vereinfachung keine Einfachkanten (114 Kanten, 90 Knoten, 6 Kanten höherer Ordnung) Rechengraph C-21: Übungsblatt 2, Aufgabe 3b Von Nach 6 5 218 - 16 6 15 218 - 118 25 6 5 218 - 16 9 18 18 9 18 6 5 218 - 16 6 15 218 - 118 1 9 12 k1/1, dnok 42 11 18 - 6 9 118 10 ugbok, mnok, anok, ugbok, mnok, anok 7 keine Diagnose 9 118 1 12 7 6 5 218 - 16 3 6 5 6 15 24 15 218 - 118 118 - 118 42 22 20 18 - 18 18 Anzahl Diagnosen sghok/3, sghok/6, mnok, mnok kok, dnok, dnok, sghok/3, sghok/6, mnok, mnok [2 weitere Diagnosen] sgok/3, snok, sghok/1, sghok/4, mnok, mnok, ugbok, mnok, anok, sbok, snok sghok/3, sghok/6, mnok, mnok, sgok/3, snok, ugbok, mnok, anok, sbok, snok sgok/3, snok, sghok/1, sghok/4, mnok, mnok, sgok/1, snok, ugbok, mnok, anok [13 weitere Diagnosen] kok, dnok, dnok kok, dnok, dnok, kok, dnok, dnok ugbok, mnok, anok, kok, dnok, dnok, ubgok [4 weitere Diagnosen] sgok/3, snok, kok, dnok, dnok, ugbok, mnok, anok, sbok, snok sgok/3, snok, kok, dnok, dnok, sgok/1, snok, ugbok, mnok, anok ugbok, mnok, anok, ugbok, mnok, anok, kok, dnok, dnok, sbok, snok [6 weitere Diagnosen] 5 keine Diagnose 4 sbok, snok 180 Übungsblatt 3 Aufgabe 3b 4 15 3 −1 = 7 21 Anzahl Schüler 234 korrekt 190 (81%) unvollständig 20 (8%) fehlerhaft 24 (10%) nicht bearbeitet 0 (0%) Rechengraph C-22: Übungsblatt 3, Aufgabe 3b Von Nach 4 15 37 - 121 4 15 37 - 121 4 15 37 - 121 25 36 7 - 21 18 121 12 15 321 - 121 25 36 7 - 21 75 36 21 - 21 4 15 37 - 121 75 36 21 - 21 29 21 45 36 21 - 21 8 121 9 21 Anzahl Diagnosen 17 keine Diagnose 12 sghok/3, sghok/6, mnok, mnok 7 ugbok, mnok, anok, ugbok, mnok, anok 3 sbhok/1, sbhok/2, mnok, mnok 2 ugbok, mnok, anok, sghok/2, sghok/5, mnok, mnok, ugbok, mnok, anok ugbok, mnok, anok, ugbok, mnok, anok, sbhok/1, sbhok/2, mnok, mnok ugbok, mnok, anok, sghok/1, sghok/4, mnok, mnok, ugbok, mnok, anok sghok/3, sghok/6, mnok, mnok, ugbok, mnok, anok, ugbok, mnok, anok 2 ubgok 2 sbok, snok 181 Übungsblatt 1 Aufgabe 3e 1 2 −1 = 4 Anzahl Schüler 505 korrekt 342 (68%) unvollständig 4 (1%) fehlerhaft 107 (21%) nicht bearbeitet 52 (10%) Vereinfachung keine Einfachkanten (81 Kanten, 58 Knoten, 1 Kante höherer Ordnung) Rechengraph C-23: Übungsblatt 1, Aufgabe 3e Von 1 2 - 14 1 2 - 14 1 2 - 14 1 2 - 14 1 2 - 14 Nach 1 14 3 14 3 4 2 5 2-4 2 5 1-4 Anzahl Diagnosen 27 sngok/1, snok sng0/1, snok 18 keine Diagnose 10 keine Diagnose 6 keine Diagnose 6 keine Diagnose 8 6 4-4 2 4 4 2 4 1 2 4 2 5 2-4 1 2 - 14 1 2 - 14 8 2 4-4 4 5 4-4 1 12 2 2-4 6 4 4 2 sbok, snok sb1, mnok, mnok, kok, dnok, dnok, k1/2, dnok sb0, snn, anok, snok, k1/2, dnok sb1, mnok, mnok, k1/1, dnok, k1/2, dnok sb1, mnok, mnok, k1/2, dnok, k1/2, dnok kok, dnok, dnok k1/2, dnok, k1/1, dnok sbhok/1, sbhok/2, mnok, mnok sbhok/1, kok, dnok, dnok, sbhok/2, mnok, mnok ugbok, mnok, anok, snb1/3, mnok, kok, dnok, dnok, ubgok, ugb1, anok, ubgok ugbok, mnok, anok, snb1/1, mnok, mnok, k1/1, dnok, ubgok, ugb1, anok, ubgok 2 ugb1, anok 2 sbok, snok 182 Übungsblatt 2 Aufgabe 3d 1 5−2 = 3 Anzahl Schüler 300 korrekt 233 (78%) unvollständig 17 (6%) fehlerhaft 46 (15%) nicht bearbeitet 4 (1%) Rechengraph C-24: Übungsblatt 2, Aufgabe 3d Von 1 5 - 23 1 5 - 23 1 5 - 23 1 5 - 23 5 7 1-3 15 7 3 -3 8 3 5 7 5-3 15 1 3 - 23 Nach 8 3 5 7 1-3 1 33 5 7 5-3 15 7 3 -3 8 3 1 23 15 35 15 - 15 14 23 Anzahl Diagnosen 16 keine Diagnose 9 keine Diagnose 9 sngok/1, snok sng0/1, snok 6 keine Diagnose 5 sbhok/1, sbhok/2, mnok, mnok 4 sbok, snok sb2, anok, ubgok, ugb1, anok 4 keine Diagnose 3 sbhok/1, sbhok/2, mnok, mnok sbhok/1, kok, dnok, dnok, sbhok/2, mnok, mnok 3 keine Diagnose 183 Übungsblatt 3 Aufgabe 3d 2 7−3 = 5 Anzahl Schüler 234 korrekt 208 (89%) unvollständig 0 (0%) fehlerhaft 24 (10%) nicht bearbeitet 2 (1%) Rechengraph C-25: Übungsblatt 3, Aufgabe 3d Von 2 7 - 35 2 7 - 35 35 17 5 - 5 17 5 2 7 - 35 18 5 Nach 7 17 1- 5 35 17 5 - 5 17 5 2 35 18 5 2 35 Anzahl Diagnosen 3 keine Diagnose 3 keine Diagnose 3 keine Diagnose 3 ubgok 2 keine Diagnose 2 keine Diagnose 184 C.2.4 Addition und Subtraktion mit drei Operanden Übungsblatt 1 Aufgabe 3f 2 2 1 + 3 +1 = 21 15 Anzahl Schüler 505 korrekt 286 (57%) unvollständig 6 (1%) fehlerhaft 84 (17%) nicht bearbeitet 129 (26%) Vereinfachung keine Einfachkanten (375 Kanten, 333 Knoten, 4 Kanten höherer Ordnung) Rechengraph C-26: Übungsblatt 1, Aufgabe 3f 185 Übungsblatt 2 Aufgabe 3f 3 4 7 +8 −3= 20 15 Anzahl Schüler 300 korrekt 256 (85%) unvollständig 9 (3%) fehlerhaft 33 (11%) nicht bearbeitet 2 (1%) Vereinfachung keine Einfachkanten (94 Kanten, 85 Knoten, 1 Kante höherer Ordnung) Rechengraph C-27: Übungsblatt 2, Aufgabe 3f Übungsblatt 3 Aufgabe 3f 5 3 8 −1 + 4 = 21 14 Anzahl Schüler 234 korrekt 150 (64%) unvollständig 14 (6%) fehlerhaft 58 (25%) nicht bearbeitet 12 (5%) Vereinfachung keine Einfachkanten (166 Kanten, 152 Knoten, 2 Kanten höherer Ordnung) Rechengraph C-28: Übungsblatt 3, Aufgabe 3f 186 C.2.5 Multiplikation Übungsblatt 1 Aufgabe 5a 2 3 ⋅ = 3 8 Anzahl Schüler 505 korrekt 394 (78%) unvollständig 41 (8%) fehlerhaft 58 (11%) nicht bearbeitet 12 (2%) Rechengraph C-29: Übungsblatt 1, Aufgabe 5a Von Nach Anzahl Diagnosen 2 3 3⋅8 6 24 37 mbok, mnok, mnok mb2, mnok, mnok, mnok, mnok, kok, dnok, dnok mb3/2, mnok, mnok, mnok, k1/1, dnok [2 weitere Diagnosen] 2 3 3⋅8 16 9 24 ⋅ 24 11 keine Diagnose 16 9 24 ⋅ 24 144 24 7 mb3a, mnok kok, dnok, dnok, mb3/2, mnok, mnok, mnok kok, dnok, dnok, kok, dnok, dnok, mb3/2, mnok, mnok, mnok [6 weitere Diagnosen] 2 3 3⋅8 2⋅3 3⋅8 6 mbok 144 24 6 5 kok, dnok, dnok, kokn kok, dnok, dnok, kok, dnok, dnok, kokn kok, dnok, dnok, kok, dnok, dnok, kok, dnok, dnok, kokn [8 weitere Diagnosen] 2 3 3⋅8 5 24 4 mb0/2, mnok, anok 187 Übungsblatt 2 Aufgabe 5b 2 3 ⋅3 = 3 4 Anzahl Schüler 300 korrekt 203 (68%) unvollständig 26 (9%) fehlerhaft 68 (23%) nicht bearbeitet 3 (1 %) Vereinfachung keine Einfachkanten (75 Kanten, 58 Knoten, 3 Kanten höherer Ordnung) Rechengraph C-30: Übungsblatt 2, Aufgabe 5b Von Nach 2 3 3 ⋅ 34 5 2 2 3 3 ⋅ 34 2 3 3 ⋅ 34 3 2 1⋅3 1⋅2 2⋅4 3⋅15 2 3 3 ⋅ 34 5 2 2 15 3⋅ 4 2⋅15 3⋅4 1 12 3 2 8 45 2⋅4 3⋅15 1 25 Anzahl Diagnosen 19 ugbok, mnok, anok, mbok, mnok, mnok, kok, dnok, dnok ugbok, mnok, anok, mbok, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok ugbok, mnok, anok, mb2, mnok, mnok, mnok, mnok, kok, dnok, dnok [6 weitere Diagnosen] 17 ugbok, mnok, anok 11 ugbok, mnok, anok, mbok 10 ubgok 7 mnok, mnok 7 mnok, mnok 6 ugbok, mnok, anok, mb1 5 keine Diagnose 188 Übungsblatt 3 Aufgabe 5b 4 5 ⋅2 = 5 8 Anzahl Schüler 234 korrekt 209 (89%) unvollständig 8 (2%) fehlerhaft 17 (7%) nicht bearbeitet 0 (0%) Rechengraph C-31: Übungsblatt 3, Aufgabe 5b Von Nach Anzahl Diagnosen 4 5 5 ⋅ 28 4 21 5⋅ 8 4 5 5 ⋅ 28 21 10 6 4 21 5⋅ 8 84 40 2 21 10 1 110 2 6 ugbok, mnok, anok ugbok, mnok, anok, mbok, mnok, mnok, kok, dnok, dnok ugbok, mnok, anok, mbok, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok ugbok, mnok, anok, mb2, mnok, mnok, mnok, mnok, kok, dnok, dnok [4 weitere Diagnosen] mbok, mnok, mnok mb2, mnok, mnok, mnok, mnok, kok, dnok, dnok mb2, mnok, mnok, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok [2 weitere Diagnosen] keine Diagnose 189 Übungsblatt 1 Aufgabe 5c 3 2 1 ⋅2 = 4 3 Anzahl Schüler 505 korrekt 255 (50%) unvollständig 47 (9%) fehlerhaft 176 (35%) nicht bearbeitet 27 (5%) Vereinfachung keine Einfachkanten (189 Kanten, 136 Knoten, 3 Kanten höherer Ordnung) Rechengraph C-32: Übungsblatt 1, Aufgabe 5c Von Nach Anzahl Diagnosen 3 2 14 ⋅ 23 7 8 4⋅3 29 3 2 14 ⋅ 23 6 212 27 3 2 14 ⋅ 23 14 3 22 3 2 14 ⋅ 23 6 312 16 3 2 14 ⋅ 23 56 12 11 3 2 14 ⋅ 23 3 2 14 ⋅ 23 3 2 14 ⋅ 23 1 1 12 ⋅ 21 8 412 7⋅8 4⋅3 3 2 14 ⋅ 23 1 32 ugbok, mnok, anok, ugbok, mnok, anok mg2, mnok, mnok, mnok mg3/2, mnok, ag1, mnok, mnok [5 weitere Diagnosen] ugbok, mnok, anok, ugbok, mnok, anok, mbok, mnok, mnok, kok, dnok, dnok [eine weitere Diagnose] mg3/1, anok, ag1, mnok, mnok mg3/3, anok, mg1/5, mnok, mnok [5 weitere Diagnosen] ugbok, mnok, anok, ugbok, mnok, anok, mbok, mnok, mnok ugbok, mnok, anok, ugbok, mnok, anok, mb3/2, mnok, mnok, mnok, k1/1, dnok [eine weitere Diagnose] 10 keine Diagnose 8 keine Diagnose 7 ugbok, mnok, anok, ugbok, mnok, anok, mbok 6 mg3/1, anok, ag1, mnok, mnok, kok, dnok, dnok mg3/1, anok, ag1, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok mg3/1, anok, ag1, mnok, mnok, ugbok, mnok, anok, kok, dnok, dnok, ubgok [21 weitere Diagnosen] 190 Übungsblatt 1 Aufgabe 5e 1 3 2 ⋅ = 13 3 Anzahl Schüler 505 korrekt 286 (57%) unvollständig 6 (1%) fehlerhaft 164 (32%) nicht bearbeitet 49 (10%) Vereinfachung keine Einfachkanten (136 Kanten, 109 Knoten, 3 Kanten höherer Ordnung) Rechengraph C-33: Übungsblatt 1, Aufgabe 5e Von Nach 3 2 113 ⋅ 3 3 2 113 ⋅ 3 6 139 3 2 113 ⋅ 3 3 2 113 ⋅ 3 24 13 6 139 16 2 13 ⋅ 3 2 113 16⋅2 13⋅3 2 113 11 113 3 2 113 ⋅ 3 3 2 113 ⋅ 3 Anzahl Diagnosen 33 mg1/5, mnok, mnok 29 ugbok, mnok, anok 19 kok, dnok, dnok ugbok, mnok, anok, kok, dnok, dnok, ubgok 13 ugbok, mnok, anok, mbok 13 mg1/5, mnok, mnok, kok, dnok, dnok mg1/5, mnok, mnok, ugbok, mnok, anok, kok, dnok, dnok, ubgok 13 ubgok 32 39 10 ugbok, mnok, anok, mbok, mnok, mnok ugbok, mnok, anok, mb2, mnok, mnok, mnok, mnok, kok, dnok, dnok ugbok, mnok, anok, mb3/2, mnok, mnok, mnok, k1/1, dnok [eine weitere Diagnose] 1 2 113 ⋅ 1 8 keine Diagnose 191 Übungsblatt 2 Aufgabe 5e 1 5 3 ⋅2 = 4 4 Anzahl Schüler 300 korrekt 139 (46%) unvollständig 15 (5%) fehlerhaft 141 (47%) nicht bearbeitet 5 (2%) Vereinfachung keine Einfachkanten (88 Kanten, 71 Knoten, 1 Kante höherer Ordnung) Rechengraph C-34: Übungsblatt 2, Aufgabe 5e Von Nach 1 5 34 ⋅ 24 1 5 34 ⋅ 24 1 5 34 ⋅ 24 1 5 34 ⋅ 24 1 1 1 5 34 ⋅ 24 13 13 4 ⋅ 4 13⋅13 4⋅4 169 16 13⋅4 4⋅13 Anzahl Diagnosen 32 ugbok, mnok, anok, ugbok, mnok, anok 29 ugbok, mnok, anok, ugbok, mnok, anok, mbok 20 ugbok, mnok, anok, ugbok, mnok, anok, mbok, mnok, mnok 12 ugbok, mnok, anok, ugbok, mnok, anok, mb1 1 9 5 616 8 13 13 4 * 4 169 4 7 169 4 1 424 7 13⋅4 4⋅13 1 7 13 4 4 ⋅ 13 1 6 kokn k1n/2 mg2, mnok, mnok, mnok mg3/2, mnok, ag1, mnok, mnok mbk1/2, dnok, dnok, mbok, mnok, mnok mb3a, mnok mbk1/2, dnok, dnok, mb0/3, mnok, anok ubgok mnok, mnok, kok, dnok, dnok, kokn mnok, mnok, kok, dnok, dnok, kok, dnok, dnok, kokn [12 weitere Diagnosen] mbok, mnok, mnok, kok, dnok, dnok, kokn mbok, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok, kokn [11 weitere Diagnosen] 192 Übungsblatt 3 Aufgabe 5e 2 1 2 ⋅3 = 3 2 Anzahl Schüler 234 korrekt 206 (88%) unvollständig 3 (1%) fehlerhaft 25 (11%) nicht bearbeitet 0 (0%) Rechengraph C-35: Übungsblatt 3, Aufgabe 5e Von Nach 2 1 23 ⋅ 32 2 1 23 ⋅ 32 2 1 23 ⋅ 32 2 1 23 ⋅ 32 8 7 3⋅3 28 3 8 2 3⋅7 8 7 3⋅2 2 1 23 ⋅ 32 2 1 23 ⋅ 32 Anzahl Diagnosen 5 keine Diagnose 4 ugbok, mnok, anok, ugbok, mnok, anok, mbok, mnok, mnok, kok, dnok, dnok [10 weitere Diagnosen] 3 keine Diagnose 3 ugbok, mnok, anok, ugbok, mnok, anok 2 56 2 mg3/1, anok, ag1, mnok, mnok mg3/3, anok, mg1/5, mnok, mnok mg3/1, anok, aghok/1, agh1/1, ag1a, mnok [5 weitere Diagnosen] 8 5 3⋅2 2 keine Diagnose 193 C.2.6 Division Übungsblatt 1 Aufgabe 5b 5 3 : = 8 4 Anzahl Schüler 505 korrekt 393 (78%) unvollständig 21 (4%) fehlerhaft 112 (22%) nicht bearbeitet 58 (11%) Vereinfachung keine Einfachkanten (119 Kanten, 76 Knoten, 2 Kanten höherer Ordnung) Rechengraph C-36: Übungsblatt 1, Aufgabe 5b Von Nach Anzahl Diagnosen 5 3 8:4 5⋅4 8⋅3 16 5 5 1 15 5 3 8:4 20 24 14 5 3 8:4 5⋅3 8⋅4 10 5 3 8:4 5⋅3 8⋅4 6 5 5 4 8⋅3 15 32 1 15 10 dbok, mbok db0, mb1 db3, mnok, mnok, db0, kok, dnok, dnok, mb1 kok, dnok, dnok, kokn kok, dnok, dnok, k1n/2 dbok, mbok, mnok, mnok dbok, mb2, mnok, mnok, mnok, mnok, kok, dnok, dnok db3, mnok, mnok, dbok, mbok, mnok, mnok, kok, dnok, dnok 9 weitere Diagnosen fehlen db0, mbok dbok, mb1 db3, mnok, mnok, db0, kok, dnok, dnok, mbok dbok db3, mnok, mnok, dbok, kok, dnok, dnok 10 mnok, mnok 10 ubgok 194 Übungsblatt 1 Aufgabe 5f 3 6 : = 4 8 Anzahl Schüler 505 korrekt 308 (61%) unvollständig 34 (7%) fehlerhaft 92 (18%) nicht bearbeitet 71 (14%) Vereinfachung keine Einfachkanten (90 Kanten, 54 Knoten, 1 Kante höherer Ordnung) Rechengraph C-37: Übungsblatt 1, Aufgabe 5f Von Nach Anzahl Diagnosen 3 6 4:8 2 2 38 3 6 4:8 3 8 4⋅6 10 3 6 4:8 3⋅8 4⋅6 9 3 6 4:8 1 1 8 3 6 4:8 3 6 4:8 4 8 3⋅6 4 6 3⋅8 3 6 4:8 3⋅6 4⋅8 dbok, mbok, mnok, mnok, kok, dnok, dnok dbok, mbok, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok db1/1, mnok, mnok, kok, dnok, dnok [52 weitere Diagnosen] dbok db3, mnok, mnok, dbok, kok, dnok, dnok dbok, mbok db0, mb1 db3, mnok, mnok, db0, kok, dnok, dnok, mb1 dbok, mbok, mnok, mnok, kok, dnok, dnok dbok, kok, dnok, dnok, mbok, mnok, mnok, kok, dnok, dnok dbok, kok, dnok, dnok, mb0/1, anok, anok, kok, dnok, dnok [58 weitere Diagnosen] 8 keine Diagnose 7 keine Diagnose 6 db0, mbok dbok, mb1 db3, mnok, mnok, db0, kok, dnok, dnok, mbok 195 Übungsblatt 2 Aufgabe 5a 2 3 : = 3 4 Anzahl Schüler 300 korrekt 252 (84%) unvollständig 0 (0%) fehlerhaft 45 (15%) nicht bearbeitet 3 (1%) Vereinfachung keine Einfachkanten (39 Kanten, 23 Knoten, 3 Kanten höherer Ordnung) Rechengraph C-38: Übungsblatt 2, Aufgabe 5a Von Nach Anzahl Diagnosen 2 3 3:4 2 4 3⋅3 13 2 3 3:4 2⋅4 3⋅3 9 2 3 3:4 1 2 6 2 3 3:4 2 3 3:4 2 3 3:4 1 1 1:2 3⋅4 2⋅3 3 3 2⋅4 3 dbok db3, mnok, mnok, dbok, kok, dnok, dnok, kok, dnok, dnok db3, mnok, mnok, dbok, k1/2, dnok, kok, dnok, dnok, k1/2, dnok [eine weitere Diagnose] dbok, mbok db0, mb1 db3, mnok, mnok, db0, kok, dnok, dnok, kok, dnok, dnok, mb1 [eine weitere Diagnose] db0, mbok, mnok, mnok, kok, dnok, dnok dbok, mb1, mnok, mnok, kok, dnok, dnok dbok, mb1, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok [30 weitere Diagnosen] dbk1/1, dnok, dnok, dbk1/2, dnok, dnok [eine weitere Diagnose] 2 db1/2 2 keine Diagnose 196 Übungsblatt 2 Aufgabe 5d 5 10 : = 8 16 Anzahl Schüler 300 korrekt 267 (89%) unvollständig 5 (2%) fehlerhaft 24 (8%) nicht bearbeitet 4 (1%) Rechengraph C-39: Übungsblatt 2, Aufgabe 5d Von Nach Anzahl Diagnosen 5 10 8 : 16 2 2 5 10 8 : 16 5 10 8 : 16 5 16 8 ⋅ 10 8⋅16 5⋅10 5 10 8 : 16 1 1 2 5 10 8 : 16 25 64 2 10 6 2 dbok, mbok, mnok, mnok, kok, dnok, dnok kok, dnok, dnok, dbok, mbok, mnok, mnok, kok, dnok, dnok db1/1, mnok, mnok, kok, dnok, dnok [53 weitere Diagnosen] dbok db3, mnok, mnok, dbok, kok, dnok, dnok db1/2 dbok, mbok, mnok, mnok, kok, dnok, dnok dbok, kok, dnok, dnok, mbok, mnok, mnok, kok, dnok, dnok dbok, kok, dnok, dnok, mb0/1, anok, anok, kok, dnok, dnok [69 weitere Diagnosen] db2, mnok, mnok, kok, dnok, dnok dbok, mb1, mnok, mnok, kok, dnok, dnok db0, mbok, mnok, mnok, kok, dnok, dnok [21 weitere Diagnosen] 197 Übungsblatt 3 Aufgabe 5a 3 5 : = 5 6 Anzahl Schüler 234 korrekt 221 (94%) unvollständig 0 (0%) fehlerhaft 13 (6%) nicht bearbeitet 0 (0%) Rechengraph C-40: Übungsblatt 3, Aufgabe 5a Von Nach 3 5 5:6 3 6 5⋅5 18 5 3 6 5⋅5 3 35 18 5 3 5 5:6 3⋅6 5⋅5 Anzahl Diagnosen 5 dbok db3, mnok, mnok, dbok, kok, dnok, dnok, kok, dnok, dnok [eine weitere Diagnose] 5 ubgok 4 mb3a, mnok 2 dbok, mbok db0, mb1 db3, mnok, mnok, db0, kok, dnok, dnok, kok, dnok, dnok, mb1 [eine weitere Diagnose] 198 Übungsblatt 3 Aufgabe 5d 4 16 : = 9 36 Anzahl Schüler 234 korrekt 222 (95%) unvollständig 0 (0%) fehlerhaft 12 (5%) nicht bearbeitet 0 (0%) Rechengraph C-41: Übungsblatt 3, Aufgabe 5d Von Nach Anzahl Diagnosen dbok db3, mnok, mnok, dbok, kok, dnok, dnok db3, mnok, mnok, dbok, kok, dnok, dnok, kok, dnok, dnok dbok, mbok db0, mb1 dbok, mbok, mnok, mnok, kok, dnok, dnok dbok, mbok, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok dbok, mbok, mnok, mnok, kok, dnok, dnok, kok, dnok, dnok, kok, dnok, dnok 15 weitere Diagnosen fehlen 4 16 9 : 36 4 36 9 ⋅ 16 4 4 16 9 : 36 4⋅36 9⋅16 2 4 16 9 : 36 4 4 2 4 16 9 : 36 4 3 1⋅3 1⋅4 4⋅36 9⋅16 1 16 9: 9 1 13 3 4 2 dbk1/1, dnok, dnok 2 ubgok 2 mnok, mnok 1⋅3 1⋅4 2 keine Diagnose 199 Übungsblatt 1 Aufgabe 5d 2 3 2 : = 3 7 Anzahl Schüler 505 korrekt 208 (41%) unvollständig 29 (6%) fehlerhaft 193 (38%) nicht bearbeitet 75 (15%) Vereinfachung keine Einfachkanten (192 Kanten, 135 Knoten, 5 Kanten höherer Ordnung) Rechengraph C-42: Übungsblatt 1, Aufgabe 5d Von Nach 2 3 23 : 7 56 9 2 3 23 : 7 2 3 23 : 7 2 3 23 : 7 8 7 14 29 8 3 3:7 8 7 3⋅3 2 7 23 ⋅ 3 1 17 5 39 2 3 23 : 7 8⋅7 3⋅3 2 3 23 : 7 8 7 3⋅3 2⋅7 2 3⋅3 56 9 Anzahl Diagnosen 38 ugbok, mnok, anok, dbok, mbok, mnok, mnok ugbok, mnok, anok, db0, mb1, mnok, mnok ugbok, mnok, anok, db3, mnok, mnok, db0, mb1, mnok, mnok, kok, dnok, dnok [eine weitere Diagnose] 31 ugbok, mnok, anok 20 ugbok, mnok, anok, dbok [eine weitere Diagnose] 16 keine Diagnose 15 ubgok 15 ugbok, mnok, anok, ubgok 14 ugbok, mnok, anok, dbok, mbok ugbok, mnok, anok, db0, mb1 [eine weitere Diagnose] 11 dg2/7 10 mbok, mnok, mnok 200 Übungsblatt 2 Aufgabe 5c 2 6 8 : = 8 7 Anzahl Schüler 300 korrekt 179 (60%) unvollständig 29 (10%) fehlerhaft 87 (29%) nicht bearbeitet 5 (2%) Vereinfachung keine Einfachkanten (129 Kanten, 106 Knoten, 4 Kanten höherer Ordnung) Rechengraph C-43: Übungsblatt 2, Aufgabe 5c Von Nach Anzahl Diagnosen 6 8 28 : 7 22 7 8 ⋅8 23 6 8 28 : 7 77 32 19 6 8 28 : 7 22⋅7 8⋅8 18 6 8 28 : 7 22 7 8 ⋅8 22⋅7 8⋅8 12 232 6 216 26 264 154 64 154 64 6 216 3 28 ugbok, mnok, anok, dbok [eine weitere Diagnose] ugbok, mnok, anok, dbok, mbok, mnok, mnok, kok, dnok, dnok ugbok, mnok, anok, db0, mb1, mnok, mnok, kok, dnok, dnok [eine weitere Diagnose] ugbok, mnok, anok, dbok, mbok ugbok, mnok, anok, dbok, kok, dnok, dnok, mb2, mnok, mnok ugbok, mnok, anok, db0, mb1 7 keine Diagnose 6 mbok, mnok, mnok kok, dnok, dnok, mb2, mnok, mnok, mnok, mnok 6 mnok, mnok 5 kok, dnok, dnok 5 kok, dnok, dnok ugbok, mnok, anok, kok, dnok, dnok, ubgok 201 Übungsblatt 3 Aufgabe 5c 2 6 7 : = 7 5 Anzahl Schüler 234 korrekt 203 (87%) unvollständig 3 (1%) fehlerhaft 27 (12%) nicht bearbeitet 1 (<1%) Rechengraph C-44: Übungsblatt 3, Aufgabe 5c Von Nach Anzahl Diagnosen 6 7 27 : 5 100 49 10 ugbok, mnok, anok, dbok, mbok, mnok, mnok ugbok, mnok, anok, db0, mb1, mnok, mnok ugbok, mnok, anok, db3, mnok, mnok, db0, mb1, mnok, mnok, kok, dnok, dnok [eine weitere Diagnose] 6 7 27 : 5 6 5 27 ⋅ 7 4 keine Diagnose 6 7 27 : 5 20⋅5 7⋅7 4 ugbok, mnok, anok, dbok, mbok ugbok, mnok, anok, db0, mb1 [eine weitere Diagnose] 100 49 2 2100 6 5 27 ⋅ 7 2 2100 1 250 30 249 4 keine Diagnose 4 kok, dnok, dnok ugbok, mnok, anok, kok, dnok, dnok, ubgok 3 mg1/5, mnok, mnok 202 LITERATURVERZEICHNIS Anderson (1976): Anderson, John R.: Language, Memory and Though. Hillsdale: Erlbaum 1976. Anderson (1983): Anderson, John R.: The Architecture of Cognition. Auflage von 1983. Cambridge, Mass., London: Harvard University Press 1947. Avenhaus (1995): Avenhaus, Jürgen: Reduktionssysteme, Rechnen und Schließen in gleichungsdefinierten Strukturen. Berlin, Heidelberg: Springer 1995. Baffes (1994): Baffes, P.: Automatic Student Modeling and Bug Library Construction using Theory Refinement. Ph.D. thesis. Austin, Texas: Universiy of Texas 1994. Baffes, Mooney (1996): Baffes, P.; Mooney, R.: Refinement-Based Student Modeling and Automated Bug Library Construction. Journal of Artificial Intelligence in Education (1996), 7(1), S. 75-117. Barr, Feigenbaum (1986): Barr, Avron; Feigenbaum, Edward A.: The Handbook of Artificial Intelligence. Band 2. Reading, Mass. [u.a.]: Addision-Wesley 1986. Booch, Rumbaugh, Jacobson (1998): Booch, Grady; Rumbaugh, James; Jacobson, Ivar: The unified modeling user guide. The AddisonWesley object technology series. Reading, Mass.: Addison Wesley Longman, Inc 1998. Brown et. al. (1975): Brown, John Selly [u.a.].: Steps toward a theoretical foundation for complex knowledge-based CAI. BBN Report 3135 (ICAI Report 2). Cambrigde, Mass.: Bolt Beranek and Newman, Inc. 1975. Brown et. al. (1977a): Brown, John Selly; [u.a.]: Aspects of a theory for automated student modeling. BBN Report 3549 (ICAI Report 4). Cambridge, Mass.: Bolt Beranek and Newmann, Inc. 1977. Brown et. al. (1977b): Brown, John Selly; Burton, Richard R.; Larkin, K.M.: Representing and using procedural bugs for educational prupose. Proceedings of the National ACM Conference (1977). Seattle, Washington: Association for Computing Machinery, S. 247-255. 203 Brown, Burton (1978): Brown, John Selly; Burton, Richard R.: Diagnostic Models for Procedural Bugs in Basic Mathematical Skills. Cognitive Science (1978) Nr. 2, S. 155-192 Brown, Burton, de Kleer (1982): Brown, John Selly; Burton, Richard R.; de Kleer, J.: Knowledge engineering and pedagogical techniques in SOPHIE I, II, and III. Sleeman, D; Brown, J.S. (Eds.): Intelligent tutoring systems. Boston [u.a.]: Academic Press 1982. Brown, VanLehn (1980): Brown, John Selly; VanLehn, K.: Repair theory: A generative theory of bugs in procedural skills. Cognitive Science (1980) Nr. 4, S. 379-426. Burton (1982): Burton, Richard R.: Diagnosing bugs in simple procedural skills. Sleemann, D.H. and Brown, J.S. (Hrsg.): Intelligent Tutoring Systems. Chapter 8. London: Academic Press 1982. Burton, Brown (1976): Burton, Richard R.; Brown, John Selly: A tutoring and student modeling paradigm for gaming environments. Computer Science and Education. ACM SIGCSE Bulletin (1976) 8(1), S. 236-246. Burton, Brown (1979): Burton, Richard R.; Brown, John Selly: An investigation of computer coaching for informal learning activities. International Journal of Man-Machine Studies (1979) 11, S. 5-24. Carbonell (1970a): Carbonell, J.R.: AI in CAI: an artificial intelligence approach to computer-assisted instruction. IEEE Transactions on Man-Machine Systems (1970) 11(4), S. 190-202. Carbonell (1970b): Carbonell, J.R.: Mixed-Initiative Man-Computer Instructional Dialogues. BBN Report No. 1971. Cambrigde: Bolt Beranek and Newman Inc. 1970. Carr, Goldstein (1977): Carr, B.; Goldstein, I.: Overlays: A theory of modeling for computer aided instruction. AI Memo 406. Massachusetts Institute of Technology 1977. Clancey (1979): Clancey, W. J.: Transfer of rule-based expertise through a tutorial dialogue. Rep. No. STAN-CS-769, Computer Science Dept., Standfort University, Doctoral dissertation, 1979. 204 Clancey (1982): Clancey, W. J.: Tutoring Rules for Guiding a Case Method Dialogue. Sleeman, D.; Brown, J.S. (Hrsg.): Intelligent tutoring systems. Boston [u.a.]: Academic Press 1982. S. 201-225. Clancey (1983): Clancey, W. J.: GUIDON. Journal of Computer Based Instruction (1983), 1, 10, S. 8-15 Clocksin, Mellish (1987): Clocksin, William F.; Mellish, Christopher S.: Programmieren in Prolog, Berlin, Heidelberg: Springer 1987. Daubert, Gerster (1983): Daubert, Kurt; Gerster, Hans-Dieter: Differenzierende Maßnahmen zur Vorbeugung und zur Behebung von Schülerfehlern beim Rechnen mit Brüchen. Päd. Welt (1983) Heft 12. Dershowitz, Jouannaud (1990): Dershowitz, Nachum; Jouannaud, Jean-Pierre: Rewrite Systems. van Leeuwen, Jan: Handbook of Theoretical Computer Science. Vol. B. Amsterdam: Elsevier 1990. Kap. 6, S. 244-320. Dijkstra (1968): Dijkstra, E. W.: Cooperating sequential processes. Technical Report EWD-123. Technological University, Eindhoven, the Netherlands (1965). Nachdruck in Genuys, F. (Hrsg.): Programming Languages, New York, London: Acacdemic Press 1968. Ehrich, Gogolla, Lipeck (1989): Ehrich, Hans-Dieter; Gogolla, Martin; Lipeck, Udo Walter: Algebraische Spezifikation abstrakter Datentypen. Stuttgart: Teubner 1989. Ehrig, Mahr (1985): Ehrig, G.; Mahr, B.: Fundamentals of Algebraic Specification 1, Equations and Initial Semantics. In der Reihe Brauer, W.; Rozenberg, G.; Salomaa, A.: EATCS, Monographs on Theoretical Computer Science. Volume 6. Berlin, Heidelberg: Springer-Verlag 1985. Friš (1968): Friš, J.: Grammars with partial ordering of the rules. Information Control (1968), 17, S. 415-425. Gentner (1979): Gentner, Donald R.: Toward an Intelligent Computer Tutor. O’Neil, H.F. Jr. (Hrsg.): The Educational Technology Series. Procedures for Instructional Systems Development. New York: Academic Press 1979, S. 253-272. 205 Gerster (1979): Gerster, Hans-Dieter: Analyse von Schülerfehlern bei den schriftlichen Rechenverfahren. Freiburg, Br.: Herder 1979. Gerster, Grevsmühl (1983): Gerster, Hans-Dieter; Grevsmühl, Ulrich: Diagnose individueller Schülerfehler beim Rechnen mit Brüchen. Päd. Welt (1983) Heft 11. Goldstein (1979): Goldstein, I.: The genetic epistemology of rule systems. International Journal of Man-Machine Studies (1979) 11, S. 51-77. Fuchssteiner et. al. (1993): Fuchsteiner, Benno; et. al.: MuPAD: Multi Processing Algebra Data Tool. Basel: Birkhäuser Verlag 1993. Hart (1981): Hart, K.M. (Editor): Children’s Understanding of Mathematics: 11-16, New-Castle upon Tyne: Athenaeum Press 1981. Kapitel 5: Fraction, S. 66-81, Kapitel 13: The hierarchies, S. 187-207. Hasemann (1985): Hasemann, Klaus: Die Beschreibung von Schülerfehlern mit kognitionstheoretischen Modellen, Der Mathematikuntericht (1985) Heft 6, Vol. 31. Hennecke (1997a): Hennecke, Martin: Adaptive Fehleranalyse für ein intelligentes Lernsystem: Analyse, Entwurf, Implementierung. Diplomarbeit, Institut für Mathematik, Universität Hildesheim 1997. Hennecke (1997b): Hennecke, Martin: Computergestützte Analyse von Schülerfehlern bei der Bruchrechnung. Beiträge zum Mathematikunterricht 1997, Hildesheim: Franzbecker 1997. Hoppe (1987): Hoppe, Rüdiger: Fehleranalyse auf der Basis von Regelsystemen, Ein Ansatz zur Analyse von Mathematikleistungen auf Individual- und Klassenebene. Dissertation, Fakultät für Sozial- und Verhaltenswissen- schaften der Universität Heidelberg, 1987. Klop (1992): Klop, Jan Willem: Term Rewriting Systems. Abramsky, S.; Gabbay, Dov. M.; Maibau, T.S.E.: Handbook of Logic in Computer Science. Vol. 2. Oxford: Oxford University Press 1992. S. 1-116. 206 Knuth (1973): Knuth, Donald E.: The Art of Computer Programming: Sorting and Searching. Vol. 3. Addision-Welsey Publishing Co. 1973. Neuauflage: 1998. Kube (1999): Kube, Dirk: Diagnostische Aufgabengenerierung für intelligente mathematische Lernsysteme, Analyse, Entwurf und Implementierung als paralleles System. Diplomarbeit, Institut für Mathematik und Angewandte In- formatik, Universität Hildesheim, 1999. Langley, Ohlsson (1984): Langley, P.; Ohlsson, S: Automated cognitive modeling. Proceedings of the National Conference on Artificial Intelligence (1984), Austin, Texas, S. 193-197. Langley et. al. (1990): Langley, P.; Wogulis, J.; Ohlsson, S.: Rules and principles in cognitive diagnosis. Frederiksen, N.; Glaser, R.; Lesgold, A.; Shafto, M. (Hrsg.): Diagnostic Monitoring of Skill and Knowledge Acquisition. Kapitel 10, S. 217-250, Hillsdale, NJ: Lawrence Erlbaum Associates 1990. Lippert (1989): Lippert, R.C.: Expert Systems: Tutors, Tools and Tutees. Journal of Computer-Based Instruction (1989) 1, 16, S. 11-19. Loeckx, Ehrich, Wolf (1996): Loeckx, Jacques; Ehrich, Hans-Dieter; Wolf, Markus: Specification of abstract data types. Chichester; Stuttgart, Leipzig: Wiley-Teubner 1996. Lörcher (1982): Lörcher, Gustav Adolf: Diagnose von Schülerschwierigkeiten beim Bruchrechnen. Päd. Welt (1982) Heft 3. Marshall (1980): Marshall: Procedural networks and production systems in adaptiv diagnosis. Instructional Science (1980) Heft 9, S. 129-143. Murray (1991): Murray, W.: An endorsement-based approach to student modeling for planner-controlled tutors. Proceedings of the Twelfth International Joint Conference on Artificial Intelligence, S. 1100-1106. Sydney, Australia. 207 Oestereich (1998): Oestereich, Bernd: Objektorientierte Softwareentwicklung: Analyse und Design mit der Unified modeling language. 4. aktualisierte Auflage. München, Wien: Oldenbourg 1998. Ostermeier (1998): Ostermeier, Jan: Datenbankdesign für ein intelligentes Lernsystem. Diplomarbeit, Institut für Mathematik und Angewandte Informatik, Universität Hildesheim, 1998. Padberg (1986): Padberg, Friedhelm: Über typische Schülerschwierigkeiten in der Bruchrechnung - Bestandaufnahme und Konsequenzen. Der Mathematikunterricht (1986) Heft 3. Padberg (1995): Padberg, Friedhelm: Didaktik der Bruchrechnung, Gemeine Brüche, Dezimalbrüche. 2. erw. Auflage. Heidelberg, Berlin, Oxford: Spektrum 1995. Padberg (1996): Padberg, Friedhelm: Über Schülerschwierigkeiten im Umgang mit gemeinen Brüchen und Dezimalbrüchen. Müller, K.P. (Hrsg.): Vorträge auf der 30. Bundestagung für Didaktik der Mathematik vom 4. bis 8.3.1996 in Regensburg. Hildesheim: Franzbecker 1996. Payne (1986): Payne, Joseph N.: Über Schülerschwierigkeiten beim Bruchzahlbegriff, beim Erweitern, Kürzen und Ordnen von Brüchen. Mathematikunterricht (1986) Heft 3. Plasmeijer, van Eeklen (1993): Plasmeijer, Rinus; van Eeklen, Marko: Functional Programming and Parallel Graph Rewriting. International Computer Science Series, Reading, Mass.: Addison-Wesley 1993. Plump (1998): Plump, Detlef: Term Graph Rewriting. Ehrig, H.; Engels, G.; Kreowski, H.-J.; Rozenberg, G.: Handbook of Graph Grammars and Computing by Graph Transformation, Vol. 2: Applications, Languages and Tools. World Scientific. Kapitel 1 (erscheint). Radatz (1979): Radatz, Hendrik: Fehleranalysen im Mathematikunterricht. Braunschweig, Wiesbaden: Vieweg 1979. Rumbaugh [u.a.] (1993): Rumbaugh, James; Blaha, Michael; Premerlani, William; Eddy, Frederick; Lorensen, William: Objektorientiertes Modellieren und Entwerfen. München, Wien: Hanser. London: Prentice-Hall Internat. 1993. 208 Rumbaugh, Jacobson, Booch (1999): Rumbaugh, James; Jacobson, Ivar; Booch, Grady: The unified modeling language reference manual. The Addison-Wesley object technology series. Reading, Mass.: Addison Wesley Longman, Inc. 1999. Salomaa (1970): Salomaa, Arto K.: Periodically time-variant context-free grammars. Information Controll (1970) 17, S. 294-311. Salomaa (1973/78): Salomaa, Arto K.: Formal Languages, New York: Academic Press 1973. Alt. Formale Sprachen, Berlin, u.a.: Springer-Verlag 1978. Schulmeister (1997): Schulmeister, Rolf: Grundlagen hypermedialer Lernsysteme: Theorie, Didaktik, Design. 2. aktualisierte Auflage. München [u.a.]: Oldenbourg 1997. 3. Auflage in Vorbereitung. Self (1974): Self, J.A.: Student models in computer-aided instruction. International Journal of Man-Machine Studies (1974) 6, S. 261-267. Siegler (1996): Siegler, Robert S.: Emerging Minds, The Process of Change in Children’s Thinking. Oxford: Oxford University Press 1996. Siegler, Jenkins (1989): Siegler, Robert S.; Jenkins, Eric: How Childrens Discover New Strategies. Hillsdale, New Jersey: Lawrence Erlbaum 1989. Sleeman, Smith (1981): Sleeman, D.H.; Smith, M.J.: Modelling students‘ problem solving. Artificial Intelligence (1981) 16, S. 171-187. Sleeman, Brown (1982): Sleeman, D.; Brown, J.S. (Hrsg.): Intelligent Tutoring Systems. Boston [u.a.]: Academic Press 1982. Sleeman (1982): Sleeman, D.H.: Assessing aspects of competence in basic algebra. Sleeman, D.H.; Brown, John Selly (Hrsg.): Intelligent Tutoring Systems. London: Academic Press 1982. 209 Sleeman (1983): Sleeman, D.: Inferring student models for intelligent computer-aided instruction. Michalski, R.S.; Carbonell, J.G.; Mitchell, T.M. (Hrsg.): Machine Learning: An Artificial Intelligence Approach. Palo Alto, California: Morgan Kaufmann 1983. Sleeman (1987): Sleeman, D.H.: PIXIE: a shell for developing intelligent tutoring systems. Lawler, R.; Yazdani, M. (Hrsg.): AI and Education: Learning Enviorments and Intelligent Tutoring Systems. Norwood, New Jersey: Ablex Publishing 1987. Sleeman et. al. (1990) Sleeman, D.H.; Hirsh, H.; Ellery, I.; Kim, I.: Extending domain theories: two case studies in student modeling. Machine Learning (1990) 5, S. 11-37. Sleep, Plasmeijer, van Eekelen (1993): Sleep, M.R.; Plasmeijer, Rinus; van Eeklen, Marko (Hrsg.): Term Graph Rewriting, Theory and Practice. Chichester, New York: Wiley & Sons 1993. Spada, Opwis (1985): Spada, H.; Opwis, K.: Intelligente tutorielle Systeme aus psychologischer Sicht. In Mandl, H.; Fischer, P.M. (Hrsg.): Lernen im Dialog mit den Computer. München, Wien, Baltimore: Urban & Schwarzenberg 1985. S. 12-23. Stern, Beck, Woolf (1996): Stern, Mia; Beck, Joseph; Woolf, Beverly Park: Adaptation of Problem Presentation and Feedback in an Intelligent Mathematics Tutor. Frasson, Claude; Gauthier, Gilles, Lesgold, Alan (Hrsg.): Intelligent Tutoring Systems, Proceedings of the 3rd International Conference, IST’96, Montréal, Canada, June 1996, Berlin, Heidelberg [u.a.]: Springer 1996. Lecture Notes in Computer Science, Band 1086. Sterling, Shapiro (1988): Sterling, Leon; Shapiro, Ehud: Prolog - Fortgeschrittene Programmiertechniken. Bonn; Reading, Mass. [u.a.]: Addison-Wesley 1988. Stevens, Collins, Goldin (1978): Stevens, A.L.; Collins, A.; Goldin, S.: Diagnosing student’s misconceptions in causal models. BBN Rep. No. 3786. Cambridge, Mass.: Bolt Beranek and Newman, Inc. 1978. Strube (1996): Strube, Gerhard mit Becker, B.; Freksa, Ch.; Hahn, U.; Opwis, K.; Palm, G. (Hrsg): Wörterbuch der Kognitionswissenschaft. Stuttgart: Klett-Cotta 1996. 210 211 Tappe [u.a.] (1984): Tappe, Friedhelm; Schmiedl, Ferdinand; Viet, Ursula: Entwicklung und Erprobung von Materialien für den Förderunterricht in Mathematik (Sekundarstufe I). Osnabrücker Schriften zur Mathematik, Reihe D: Mathematisch-didaktische Modelle. Fachbereich Mathematik, Universität Osnabrück (1984) Heft 4. VanLehn (1982): VanLehn, Kurt: Bugs are not enough: empirical studies of bugs, impasses and repairs in procedural skills. Journal of Mathematical Behavior. Vol. 3, S. 3-72, 1982. Auch CIS Report 11, Cognitive and Instructional Sciences Series, Xerox Palo Alto Research Center, Palo Alto, California. VanLehn (1989): VanLehn, Kurt: Mind Bugs: the origins of procedural misconceptions. Cambridge: MIT Press 1989. Wenger (1987): Wenger, Etienne: Artificial Intelligence and Tutoring Systems, Computational and Cognitive Approaches to the Communication of Knowledge. Los Altos: Morgan Kaufmann Publishers, Inc 1987. Young, O’Shea (1981): Young, R.M.; O’Shea, T. (1981): Errors in children’s subtraction. Cognitive Science (1981) Heft 5, S. 151-177. 212