machen wir irgendwas falsch? die kurze antwort · die lokale antwort: java/oo in umeå imperativ...
Post on 18-Oct-2020
1 Views
Preview:
TRANSCRIPT
Umeå UniversityDepartment of Computing Science
Objektorientiertes ProgrammierenMachen wir irgendwas falsch?
Jürgen Börstlerjubo@cs.umu.se
Universität Umeå
● Bevölkerung: 110 000
● Gegründet 1965● Eine der wenigen “kompletten” Unis● 29 000 Studierende (1 200 Dokt.)● 4 100 MitarbeiterInnen● 4 100 MitarbeiterInnen● 300 ProfessorInnen
● Informatik (≠ Informatik):− 60 MitarbeiterInnen− 300 + 15 Studierende− 8 Programme (viele interdisziplinär)− 80 AnfängerInnen in Hauptfächern (C + OO)− 200 sonstige AnfängerInnen (C/Python)
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 2
Machen wir irgendwas falsch?
Drei Antworten
1. Eine Kurze2. Eine Lokale3. Eine Lange
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 3
Die kurze Antwort
● Ja, offensichtlich machen wir etwas falsch− Flut von Berichten über Probleme− Immer noch dieselben Probleme wie am Anfang
● Aber
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 4
● Aber− Eine Menge von positiven Erfahrungen− Wenig Forschung um mögliche Ursachen− Sehr sehr wenige generalisierbare Ergebnissen
�Wir wissen nur daß es möglich ist, aber nicht wie(falls wir den positiven Studien Glauben schenken)
Die lokale Antwort:Java/OO in Umeå
Imperativ Java „traditionell“ Java „OO-first“2
Supplemental Instruction1
1998 1999 2000 2001 2002 2003 2004
RPDs
„Advanced Java“
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 5
Javakurs für alleMitarbeiterInnen
Fein-arbeit
Fall-studie
Auslagerung von Stoff in neuen Kurs
Komplette Neuent-wicklung
1998 1999 2000 2001 2002 2003 2004
„Roll out“
1 SI: Regelmäßige Selbsthilfegruppen ≠ traditionelle Übungen siehe http://www.umkc.edu/cad/si2 Vom ersten Tag an; BlueJ, CRC-Karten, gesteuerter Übungsbetrieb, separate Theorie- und Praxis-Klausuren
● Seit WS 2007/08− C-Kurs vor OOP− Kein SI
Hat es geholfen?
2
2.5
3
0.6
0.8
1
RPDs einge-führt
Act
ivity
Rate
seat
Java eingeführt
anderer Lehrer
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 6
0
0.5
1
1.5
0
0.2
0.4
0.6
1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
„OO first“ + SI+ Praxisklausur
führt
C Progr vor OO
Pass
ing/A
ctiv
ity
Stu
dents
per
seat
Discrete Math passing rate (all students, except 2007)
Discrete Math activity rate (all students, except 2007)Intro Programming passing rate
Intro Programming activity rate
Number of students per seat
GUI
Analyse einiger Daten
● Erfolg in der Klausur korreliert nicht mit − Leistungen in Mathematik (weder Oberstufe noch Uni)− Abgabe von obligatorischen Übungen− Aufbau und Inhalt des Kurses
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 7
● Positive Indikatoren (aber unzureichende Datenmenge)− Mind. 2 Programmierkurse in der Oberstufe− Einführung von CRC/RPD
● Statistisch signifikante Korrelation mit Klausurnote− Anwesenheit in Vorlesung/Übung (alle Studierende)− Teilnahme an SI (nur Studierende ohne Vorkenntnisse)
Die lokale Antwort
● Ja, scheinbar machen wir irgendwas falsch− Wir haben eine Menge versucht− Ergebnisse in OOP immer noch nicht gut genug
● Aber
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 9
● Aber− Eine Menge von Erfahrungen− Eine Menge möglicher Ursachen− Sehr wenige greifbare Ergebnisse− Viele Probleme haben nichts mit OO zu tun− Unmöglich alle Parameter zu kontrollieren
Die lange Antwort
● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung● Erfolgsfaktoren
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 10
● Erfolgsfaktoren● Zusammenfassung
Gibt es überhaupt ein Problem?
Studierende im 1.–2. Semester
● McCracken et al.�Allgemeine Defizite im Problemlösen
● Lister et al.�Schwierigkeiten im Verfolgen von Kod
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 11
�Schwierigkeiten im Verfolgen von Kod
● Dehnadi/Bornat, Ma et al.�Schwierigkeiten mit Zuweisung, insb. für Referenzen
Studierende im letzten Semester
● Eckerdal et al.�Große Mängel im Design von Software
McCracken et al. (2001)
● Was: Programmierung, Praxis● Wann: Im 2. Semester
● Wer: 216 Studierende von 4 Universitäten● Wie: Konkrete Programmieraufgabe
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 12
● Wie: Konkrete Programmieraufgabe(3 Versionen eines Taschenrechners; Kommandozeile)
�Ergebnis: Im Schnitt knapp 23 von 110 Punkten
�Analyse: Hauptproblem war die Umsetzung derAufgabenbeschreibung in eine konkret zulösende Programmieraufgabe
Lister et al. (2004)
● Was: Programmierung, Theorie● Wann: Ende des 1. Semesters (oder direkt danach)
● Wer: 556 (941) Studierende von 12 Universitäten● Wie: 12 Fragen (MC); verfolgen von Kod
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 15
● Wie: 12 Fragen (MC); verfolgen von Kod
�Ergebnis:
�Analyse: Die Probleme der Studierenden liegen aufgrundlegenderem Niveau (als McCracken et al.)
Anzahl richtige Antworten 0-4 5-7 8-9 10-12Anzahl Studierende in % 23 25 24 27Ohne größte Institution 29 26 25 20
Dehnadi/Bornat (2006),Ma et al. (2007), ...
● Was: Zuweisung (und Sequenz)● Wann: Im/nach dem 1. Programmierkurs
● Wer: 60–100 Studierende (mehrfach repliziert)● Wie: 12+ MC Fragen + 1 offene Frage
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 16
● Wie: 12+ MC Fragen + 1 offene Frage
�Ergebnis: Frühes verstehen der Semantik der Zuweisungkorreliert mit Erfolg
�Analyse: Schwächen im Design der Studie(n) erlaubenandere Interpretationen
Gutes Studienobjekt für Experimentdesign und Validitätsanalyse
Eckerdal et al. (2006)
● Was: Softwareentwurf● Wann: Ende des Studiums
● Wer: 100+ Studierende unterschiedlicher Univ.● Wie: Entwurf eines „Superweckers“
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 21
● Wie: Entwurf eines „Superweckers“
�Ergebnis: Partiell korrekte Lösungen → 9%Kein anwendbarer Lösungsansatz → 62%
�Analyse: Je mehr abgeschlossene Informatikkurse,desto bessere Ergebnisse
Gibt es überhaupt ein Problem?
● Ja● Größer und grundlegender als vermutet● In Theorie und Praxis● Grundlegende Konzepte, Programmierung, Entwurf und
Problemlösung
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 22
Problemlösung
Nicht auf AnfängerInnen beschränkt
Nicht auf Objektorientierung beschränkt
Die lange Antwort
● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung● Erfolgsfaktoren
Ja
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 23
● Erfolgsfaktoren● Zusammenfassung
Objektorientierung ist anders
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 24
Trotzdem sehen die meisten Kurse/Bücher wie vorher aus
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 25
OO muss da doch irgendwo reinpassen …?
Ist die Objektorientierung schwieriger?
● OO ist einfacher− OO Modelle sind näher an der Realität
● OO ist schwieriger− Mehr Stoff− Steilere „Lernkurve“
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 26
− Steilere „Lernkurve“
● Kein Unterschied− Behaupten BefürworterInnen von OO− Für CS2 macht es keinen Unterschied ob CS1 OO war oder
nicht (zeigen viele Studien)
Realität ⇒⇒⇒⇒ Modell?
Die Borrower
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 27
Die
faceValueselected
roll ()isSelected ()select ()deselect ()
Borrower
nameborrowedBookscurrentFinesmaxFinesmaxBooks
borrowBook ()returnBook ()allowedToBorrow ()
Realität ⇒⇒⇒⇒ Modell?
Backwerk Backofen
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 28
● Wer ist verantwortlich für den Backvorgang?
Backwerk…
…bake()?
…
Backofen…
…bake()?
…
Ist die Objektorientierung schwieriger?
● Auf jeden Fall anders− „Alte“ Forschungsergebnisse lassen sich nicht einfach
übertragen ([PPiG‘07])
● Schwieriger zu lernen/verstehen− Unklar
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 29
− Unklar
● Schwieriger zu unterrichten− Davon sind viele überzeugt (auch ich)
● Sollte man deshalb warten− Eher nein, da die Konzepte Zeit zum „reifen“ benötigen
Schulinformatik und das Informatikstudium
Lern
kurv
e”
Nutzen?
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 31
”Lern
kurv
e
Schule Hochschule / Weiterbildung
keine Informatik Geforderte Vorkenntnisse
Schaden?
Mögliche Vorkenntnisse
Mögliche Zielgruppen
A. AnfängerInnen mit Vorkenntnissen in der Informatik/ Programmierung sind unterfordert�„Das haben wir doch schon in der Schule durchgenommen“�„Null Problemo“�Böses Erwachen nach der Klausur
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 32
�Böses Erwachen nach der Klausur
B. AnfängerInnen ohne Vorkenntnisse in der Informatik/ Programmierung sind überfordert�„Viel zu schwierig, viel zu schnell“�„Das schaffe ich nie“�Abschreckender Effekt
� Aktuelle Situation wird keiner Zielgruppe gerecht
Die lange Antwort
● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung● Erfolgsfaktoren
Ja
Nja
Schwierig
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 34
● Erfolgsfaktoren● Zusammenfassung
Die lange Antwort
● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung
− Kognitive Belastung
Ja
Nja
Schwierig
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 35
− Kognitive Belastung− Programmierpläne− Sprachen und Werkzeuge− Terminologie− Beispiele
● Erfolgsfaktoren● Zusammenfassung
Langzeit-gedächtnis
Selbstorganisierende Ablage
Unser Gedächtnis
Sinnes-eindrücke
Sensorisches Register
Vorverarbeitung
Arbeits-gedächtnis
Bearbeitung
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 36
Sehr begrenzte Kapazität
Chunking
● Chunk = Informationen, die als Einheit betrachtet wird● „Kodierung“ schafft größere Einheiten �Effektiveres Arbeitsgedächtnis
Hell oni cetom eety ou +46907866735
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 37
Hello nice to meet you +46 90 786 67 35
�Lernen ⇒⇒⇒⇒ Erkennen und verarbeiten immer komplexererEinheiten
�Schemata (im Langzeitgedächtnis)
Schemata
1 2 3
=1 =2 =3 =4 =5 =6 =7 =8 =9
?7 8 6 6 1 2 7
1 2 3
4 5 6
7 8 9
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 38
�Neue Information ist einfacher zu lernen, wenn sie leicht kodiert werden kann / „Sinn macht“ (d.h. an bestehendem Wissen festgemacht werden kann ⇒⇒⇒⇒ Konstruktivismus)
Theorie der kognitiven Belastung
Lern
erf
olg
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 39
● Drei additive Faktoren− Intrinsic: Problembedingt; gerne niedrig, aber schwierig zu
beeinflussen− Extraneous: Bedingt durch überflüssige/irrelevante
Information; minimieren− Germaine: Bedingt durch Lernprozesse; gerne hoch
Kognitive Belastung
Kognitive Belastung und (OO)P
● Enge Vernetzung grundlegender Konzepte�Intrinsic KB ist hoch
● Unreife didaktische Konzepte�Extraneous KB ist hoch
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 40
�Extraneous KB ist hoch
● Keine Schemata im Langzeitgedächtnis auf die die Studierenden aufbauen können
�Germaine KB ist niedrig
Das kann doch nicht gut gehen!?
Programmierpläne
● Programmieren ist zielgerichtetes instantiieren und kombinieren von Programmierplänen
● ExpertInnen und AnfängerInnen machen das aber unterschiedlich
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 41
ExpertInnen
● Kennen viele abstrakte Pläne● Kennen generelle Lösungsstrategien● Einfaches Problem ⇒⇒⇒⇒ „top-down forward expansion“
Mittelwert einer Reihe von Zahlen berechnen
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 44
von Zahlen berechnen
Plan für Zählvariable
Plan fürSummations-
variable
Plan für Division
Plan fürEingabeschleife
Plan für Ausgabe
Mittelwert berechnen
Zahlen eingeben Mittelwert ausgeben
Anzahlberechnen
Summeberechnen
Divisionausführen
varsumme, anzahl, aktuell: int;mittelwert: real;
beginsumme := 0;anzahl := 0;repeat
readln( aktuell);if aktuell <> ABBRUCH then begin
summe := summe + aktuell;anzahl := anzahl + 1
enduntil aktuell = ABBRUCH;mittelwert := summe / anzahl;writeln( mittelwert)
end
!
AnfängerInnen
● Kennen wenige konkrete Pläne● Kennen keine generellen Lösungsstrategien● Problem ⇒⇒⇒⇒ „bottom-up backward solution“
Mittelwert einer Reihe von Zahlen berechnen
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 45
von Zahlen berechnen
Plan für Zählvariable
Plan fürSummations-
variable
Plan für Division
Plan fürEingabeschleife
Plan für Ausgabe
Anzahlberechnen
Summeberechnen
Divisionausführen
beginsumme := 0;anzahl := 0;
repeat ... until ???
readln( ???);
summe := summe + ???;anzahl := anzahl + 1
mittelwert := summe / anzahl;writeln( mittelwert)
end
?
???
Ein möglicher Konflikt
Schemawissen
(konstruktorientiert) konkretabstrakt (konzeptorientiert)
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 46
Lösungsstrategie
(produktorientiert) waswie (prozessorientiert)
ExpertIn AnfängerIn
Sprachen
● C++/Java die populärsten Sprachen (>75% [ICER‘06])● Probleme (im historischen Vergleich)
− Viele neue Konzepte (nicht nur OO!)− Mehr konkrete Syntax− Verwirrende Syntax (z.B. „=“ für Zuweisung)
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 48
− Verwirrende Syntax (z.B. „=“ für Zuweisung)− Kompliziertere Ein-/Ausgabe− Umfangreiche Bibliotheken− ...
● Alternativen vorhanden (Pascal, Python, Scheme, ...)● Transfer (prozedural � OO) mehrfach nachgewiesen
Werkzeuge
● Spezielle Programmierumgebungen (JGrasp, BlueJ, ...)
● Mikrowelten/Werkzeugkästen (Scratch, Greenfoot, Alice, ...)
● „Kognitive“ Werkzeuge− Metaphern (z.B. Objekte sind „Lebewesen“ mit definierten
Verantwortlichkeiten)
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 49
Verantwortlichkeiten)− CS unplugged− Abstrakte Modelle (mit denen z.B. die Ausführung von
Programmen beschrieben werden kann)− Syntaxdiagramme/(E)BNF
● Visualisierungen− Algorithmen− Abstrakte Maschinen
Terminologie
● Kleine begriffliche Unterschiede ⇒⇒⇒⇒ Große Wirkung
„A class is a set of objects that share a common structure and a common behaviour.” [Booch, 91; S. 93]
● Ist eine Fußballmannschaft eine Klasse?● Brauche ich für jede neue Objektmenge eine neue
Klasse?
�SchülerInnen verwechseln unterschiedliche Begriffshierarchien [Teif/Hassan, 06]
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 50
Hierarchien sind einfach?
Fahrzeug
Rahmen
Lenker
Räder
Nabe
Reifen
Speichen
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 51
FahrradFlugzeug Schiff Auto
Tandem3-Rad2-Rad
Preis
Alter
Farbe
BesitzerIn
bremsenklingeln
Google Suchbegriff
Anzahl Treffer nach Einschränkung aufobject orientedprogramming
Anzahl Treffer nach nochmaliger
Einschränkung aufJava
„a class is a set of objects“ 32400 22900
„a class describes a
Schlechte Angewohnheiten verbreiten sich schnell
„a class describes a set of objects“ 638 413
„a class is a template“ 877 610
Copyright © jubo@cs.umu.seDagstuhl 04/09 52
UML Java C++ Weitere
Attribut attribute (field) variabledata member,
(instance/reference) variable
Methode operation method member function
Eigenschaft feature member member property
Ein Dschungel von Begriffen
Eigenschaft feature member member property
Methodenim-plementierung
method method definition / body
(member) function definition
method implementation
Subklasse child subclass derived class /child class
Superklasse parent superclass base class
Vererbung generalization inheritance inheritance specialization
Copyright © jubo@cs.umu.seDagstuhl 04/09 53
Die konkrete Syntax liefert noch mehr Vielfalt, z.B. „extends“ in Java
Beispiele
● Beispiele haben Vorbildfunktion− Korrekt− Verständlich− Im Einklang mit den Lernzielen
● Oberflächliche und grundlegende Eigenschaften sind
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 54
● Oberflächliche und grundlegende Eigenschaften sind wichtig
● Ob wir wollen oder nicht, die Lernenden werden generelle Regeln davon ableiten
�Alle Beispiele müssen „exemplarisch“ sein
Ein OO Beispielprogramm
public class Example2_9
{
public static void main(String[ ] args)
{
System.out.println("(int)(7.9) = " + (int)(7.9));
System.out.println("(int)(3.3) = " + (int)(3.3));
System.out.println("(double)(25) = " + (double)(25));
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 55
Malik: Java Programming, 3. Auflage
System.out.println("(double)(25) = " + (double)(25));
System.out.println("(double)(5 + 3) = " + (double)(5 + 3));
System.out.println("(double)(15) / 2 = " + ((double)(15) / 2));
System.out.println("(double)(15 / 2) = " + ((double)(15 / 2)));
System.out.println("(int)(7.8 + (double) (15) / 2) = "
+ ((int)(7.8 + (double)(15) / 2)));
System.out.println("(int)(7.8 + (double) (15 / 2)) = "
+ ((int)(7.8 + (double)(15 / 2))));
}
}
Typische Probleme mit Beispielen
● main wird in die Applikationsklasse integriert (und sieht dann wie eine Objektmethode aus)
● Klassen haben nur set/get-Methoden (der eigentliche Kod muss dann wohl in separaten Klassen sein?)
● Methoden haben nur primitive Parameter (Personen ● Methoden haben nur primitive Parameter (Personen werden dann wohl über deren Namen identifiziert?)
● Ergebnisse werden via println ausgegeben (keine Objekt-Objekt Kommunikation)
● Vererbung wird total überbewertet und mit Beispielen erklärt, die keine Beziehung zum Programmieren erkennen lassen (OO erfordert Vererbung)
● …Dagstuhl 04/09 Copyright © jubo@cs.umu.se 56
Die lange Antwort
● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung
− Kognitive Belastung
Ja
Nja
Schwierig
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 57
− Kognitive Belastung− Programmierpläne− Sprachen und Werkzeuge− Terminologie− Beispiele
● Erfolgsfaktoren● Zusammenfassung
Noch viel zu tun
Erfolgsfaktoren
● Viele Studien aber wenig eindeutige Resultate�Gute Kenntnisse in Mathematik (nicht unsere Daten)�Vorkenntnisse im Programmieren (wirkt hauptsächlich via
mehr Selbstvertrauen etc.)�Allgemein hoher Notendurchschnitt
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 58
�Allgemein hoher Notendurchschnitt�Positive Selbsteinschätzung (darf aber nicht zu hoch sein!)�Positive psychosoziale Faktoren– Intensives Computer-spielen
● Gegenseitige Beeinflussung von Faktoren kaum untersucht
Objektorientiertes ProgrammierenMachen wir irgendwas falsch?
● Ja, aber wir verstehen immer noch nicht genau was● Viele Forschungsgebiete führen einen Dornröschenschlaf
− Psychologie des Programmierens− Program Comprehension− Kognitive Belastung / Worked Examples
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 61
− Kognitive Belastung / Worked Examples− Programmierpläne und konzeptuelle Modelle− ...
● Gute Fortschritte in den letzten paar Jahren− Wachsendes Interesse für Grundlagenforschung− Wachsende Anzahl „verwertbarer“ Studien
Packen wir‘s an
Dagstuhl 04/09 Copyright © jubo@cs.umu.se 62
DANKE
top related