Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ...

12
Umeå University Department of Computing Science Objektorientiertes Programmieren Machen wir irgendwas falsch? Jürgen Börstler [email protected] 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 © [email protected] 2 Machen wir irgendwas falsch? Drei Antworten 1. Eine Kurze 2. Eine Lokale 3. Eine Lange Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 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)

Transcript of Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ...

Page 1: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

Umeå UniversityDepartment of Computing Science

Objektorientiertes ProgrammierenMachen wir irgendwas falsch?

Jürgen Bö[email protected]

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 © [email protected] 2

Machen wir irgendwas falsch?

Drei Antworten

1. Eine Kurze2. Eine Lokale3. Eine Lange

Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 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)

Page 2: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

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 © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 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

Page 3: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

Die lange Antwort

● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung● Erfolgsfaktoren

Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 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

Page 4: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

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 © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 23

● Erfolgsfaktoren● Zusammenfassung

Page 5: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

Objektorientierung ist anders

Dagstuhl 04/09 Copyright © [email protected] 24

Trotzdem sehen die meisten Kurse/Bücher wie vorher aus

Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 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 © [email protected] 27

Die

faceValueselected

roll ()isSelected ()select ()deselect ()

Borrower

nameborrowedBookscurrentFinesmaxFinesmaxBooks

borrowBook ()returnBook ()allowedToBorrow ()

Page 6: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

Realität ⇒⇒⇒⇒ Modell?

Backwerk Backofen

Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 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

Page 7: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

Die lange Antwort

● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung● Erfolgsfaktoren

Ja

Nja

Schwierig

Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 37

Hello nice to meet you +46 90 786 67 35

�Lernen ⇒⇒⇒⇒ Erkennen und verarbeiten immer komplexererEinheiten

�Schemata (im Langzeitgedächtnis)

Page 8: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

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 © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 41

Page 9: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

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 © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 48

− Verwirrende Syntax (z.B. „=“ für Zuweisung)− Kompliziertere Ein-/Ausgabe− Umfangreiche Bibliotheken− ...

● Alternativen vorhanden (Pascal, Python, Scheme, ...)● Transfer (prozedural � OO) mehrfach nachgewiesen

Page 10: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

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 © [email protected] 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 © [email protected] 50

Hierarchien sind einfach?

Fahrzeug

Rahmen

Lenker

Räder

Nabe

Reifen

Speichen

Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 04/09 52

Page 11: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

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 © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 56

Page 12: Machen wir irgendwas falsch? Die kurze Antwort · Die lokale Antwort: Java/OO in Umeå Imperativ Java „traditionell“ Java „OO-first“ 2 Supplemental Instruction 1 1998 1999

Die lange Antwort

● Gibt es überhaupt ein Problem?● Ist die Objektorientierung schwieriger?● Unsere Rahmenbedingungen● Ursachenforschung

− Kognitive Belastung

Ja

Nja

Schwierig

Dagstuhl 04/09 Copyright © [email protected] 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 © [email protected] 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 © [email protected] 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 © [email protected] 62

DANKE