=Paper= {{Paper |id=None |storemode=property |title=Programmiergrundausbildung: Erfahrungen von drei Hochschulen |pdfUrl=https://ceur-ws.org/Vol-956/S2_Paper2.pdf |volume=Vol-956 |dblpUrl=https://dblp.org/rec/conf/seuh/Kleuker13 }} ==Programmiergrundausbildung: Erfahrungen von drei Hochschulen== https://ceur-ws.org/Vol-956/S2_Paper2.pdf
        Programmiergrundausbildung:
  Erfahrungen von drei Hochschulen
                             Stephan Kleuker, Hochschule Osnabrück
                                    s.kleuker@hs-osnabrueck.de

Zusammenfassung                                       staltungen weitere Programmiersprachen einge-
                                                      führt werden, die für praktische Übungen unerläss-
Die Programmierausbildung bleibt ein Grundstein
                                                      lich sind. Beispiele sind JavaScript für Web-
jedweder Informatik-Ausbildung und bildet das
                                                      Technologien und Sprachen zur Erstellung von
Fundament der meisten weiterführenden Informa-
                                                      Triggern und Stored Procedures, wie PL/SQL und
tik-Themen. Über die Art und Weise, wie Pro-
                                                      Transact SQL für Datenbanken.
grammierung am besten gelehrt werden kann, wird
wahrscheinlich seit Beginn dieser Lehre gestritten.   Im Mittelpunkt der nachfolgenden Analyse steht
Gerade Paradigmen-Wechsel haben diese Diskus-         dabei der Erfolg der Masse der Studierenden, also
sion befruchtet. In diesem Artikel werden drei Er-    nicht die Anzahl der Studierenden, die zu sehr
fahrungen in der Programmierausbildung in unter-      guten Ergebnissen kommen. Dieser Ansatz ist ge-
schiedlichen Programmiersprachen an verschiede-       rechtfertigt, da sich alle Hochschulen zwangsweise
nen Fachhochschulen zusammengefasst und mit           der Forderung der Politik stellen müssen, dass
einigen Hintergründen verknüpft. Für die Pro-         möglichst viele Studienanfänger in relativ kurzer
grammiersprache Java werden zusätzlich noch           Zeit zum Studienerfolg geführt werden müssen.
Varianten der didaktischen Herangehensweise           Eine Forderung, die teilweise zu politisch diktier-
diskutiert.                                           ten Selbstauflagen von Studiengängen oder ganzen
                                                      Hochschulen führt, dass 90% der Studierenden
                                                      zum Studienerfolg gebracht werden. Diese Forde-
Einleitung
                                                      rung wird hier als Grundlage genommen, wobei sie
Da fast alle Bachelor-Abschlussarbeiten von Fach-     natürlich hinterfragt werden muss, da sich gerade
hochschulen in Unternehmen stattfinden und sich       in der Informatik immer wieder die Frage stellt,
dabei fast immer ein Programmieranteil in dieser      wieviel Prozent der Studienanfänger wirklich rea-
Arbeit befindet, ist fachliche Programmierausbil-     listisch für das Themengebiet Informatik geeignet
dung     ein elementares Ziel von Informatik-         sind. Natürlich darf die Motivation und Förderung
Studiengängen. Dabei soll es für angehende Absol-     guter Studierender nicht vernachlässigt werden,
venten keine Einschränkungen in der Wahl des          die im konkreten Fall durch Zusatz- oder Alterna-
Themas durch die am Anfang im Studium gewähl-         tivaufgaben und die Aufforderung, Studierenden
te Programmiersprache geben. Es wird davon aus-       mit aktuell weniger Kenntnissen zu unterstützen,
gegangen, dass innerhalb des Studiums die Fähig-      für Lehrveranstaltungen in der Programmierung
keit erlangt wird, sich schnell in die Prinzipien     umgesetzt werden kann.
einer vorher nicht benutzten Programmiersprache
                                                      Motiviert ist dieser Artikel durch verschiedene
einzuarbeiten. Die eigentliche Nutzung der Sprache
                                                      Beiträge zu früheren SEUH-Konferenzen, in denen
ist die Basis für die durchzuführenden Arbeiten
                                                      die Möglichkeiten zum Einstieg in die Objektorien-
und wird nebenbei erlernt.
                                                      tierung [SZ07] und die Nutzung von Werkzeugen
In der Grundlagenausbildung soll dabei grundsätz-     [Bol09] diskutiert wurden. Generell finden einige
lich eine Einführung in die Programmierung und        Untersuchung zum Lernverhalten von Studieren-
nicht in eine bestimmte Programmiersprache statt-     den statt, die häufiger in Magazinen wie „Compu-
finden. Dies bedeutet, dass man aus didaktischen      ter Science Education“, wie z. B. [MFRW11] mit der
Gründen lieber auf Sprach-Features verzichtet, um     Untersuchung der Denkmodelle, was bei Zuwei-
elementare Konzepte wiederholt intensiver einü-       sungen passiert, und [KS12] über Erfahrungen bei
ben zu können. Studierende sollten spätestens ab      ersten Programmieraufgaben, veröffentlicht und
dem dritten Semester dann in der Lage sein, sich      auch in GI-Workshops, z. B. [Boe07], behandelt
selbständig in neue nicht intensiv geschulte Pro-     werden. Dieser Erfahrungsbericht will diese For-
grammiersprachen einzuarbeiten. Dies wird             schungsinteressen unterstützen.
dadurch gefördert, dass oft in weiteren Lehrveran-




   A. Spillner, H. Lichter (Hrsg.): SEUH 13                                                        47
Im folgenden Text werden drei Einführungsveran-           d := Dictionary new.
staltungen in die Programmierung, die mit unter-          d at: 'Smalltalk' put: 'irgendwie spannend'.
schiedlichen Programmiersprachen durchgeführt          Bemerkenswert ist, dass auch diese Schreibweise
wurden, auf ihren Erfolg im Zusammenhang mit           wesentliche Vorteile hat, da man so genau weiß,
der eingesetzten Programmiersprache analysiert.        wozu die Parameter eingesetzt werden.
Da der Erfolg ohne den Aufbau eines komplexeren
Messsystems nicht vollständig objektiv messbar ist,    Smalltalk wurde und wird in der Programmierein-
basieren Ergebnisse auf persönlichen Erfahrungen       führung im Studiengang Wirtschaftsinformatik an
und Gesprächen mit beteiligten Studierenden und        der privaten Fachhochschule Nordakademie in
Lehrenden in ähnlichen Situationen. Es wird des-       Elmshorn genutzt. Die Fachhochschule bietet duale
halb fast konsequent in diesem Artikel darauf ver-     Studiengänge an, wobei Unternehmen Studierende
zichtet, aus Durchfallquoten in Prüfungen direkt       aussuchen und deren Studiengebühren bezahlen.
auf den Erfolg eines didaktischen Ansatzes zu          Die Studierenden arbeiten zwischen den Vorle-
schließen. Im Kapitel zu Java werden weiterhin         sungsblöcken in den Unternehmen. Bemerkenswert
alternative Vorgehen zur Vermittlung und ihre          ist, dass auch die Unternehmen die Auswahl von
Unterstützung durch verschiedene Werkzeuge             Smalltalk als Lernsprache mittragen, was damit
betrachtet.                                            zusammenhängt, dass in höheren Semestern kon-
                                                       sequent Java eingesetzt wird.
Die Komplexität des Aufbaus eines wirklich aussa-
gekräftigen Messsystems, das auch Vergleiche aus-      Die Voraussetzungen für die Programmiereinfüh-
hält, wird auch in der Dissertation von Matthew C.     rung unterscheiden sich damit deutlich von denen
Jadud [Jad06] deutlich, in der versucht wird, aus      an öffentlichen Hochschulen. Die Studierenden
dem Verhalten, wann Studierende was kompilie-          haben sich bewusst für den dualen Studiengang
ren, Schlüsse über ihren Lernfortschritt zu ziehen.    entschieden, sie wissen, dass ihre Leistungen in der
Die in der genannten Arbeit aufgeworfene Frage,        Hochschule auch von ihrem Unternehmen verfolgt
aus welchen Indikatoren, z. B. die Messung von         werden und oftmals wird die spätere Weiterarbeit
Zeiten, die in einer Entwicklungsumgebung benö-        im jeweiligen Unternehmen angestrebt.
tigt wurden, die Anzahl von Compiler-Aufrufen          Fachlich bedeutet dies nach den Beobachtungen
oder die Anzahl gescheiterter zur Verfügung ste-       des Autors, dass das zumindest anfänglich leis-
hender Tests, man konkrete Schlüsse ziehen darf,       tungsschwächere Drittel von Studierenden, das an
stellt ein offenes spannendes Forschungsgebiet für     öffentlichen Hochschulen anfängt, an der Nord-
weitere Untersuchungen dar.                            akademie kaum vertreten ist. Im oberen Bereich
                                                       fehlen dafür vereinzelt sehr kreative Köpfe, die ein
Smalltalk                                              stark verschultes Ausbildungssystem bewusst um-
                                                       gehen wollen, um experimentelle Freiheiten im
Smalltalk [Bra08] ist die erste kommerziell einge-
                                                       Studium zu schaffen.
setzte Sprache, die konsequent und vollständig auf
Objektorientierung gesetzt hat. Alles, also auch       Die eigentliche Vorlesung wurde mit dem Objects
einfache Zahlen, sind Objekte, die mit Methoden        First-Ansatz gehalten, der bereits am Anfang auf
bearbeitet werden können. Die Geschichte von           die Strukturbegriffe Objekt und Klasse setzt. Gene-
Smalltalk zeigt deutlich, wie ein hochinnovativer      rell wurden bei dieser Veranstaltung sehr positive
Ansatz historisch einfach völlig zu früh stattgefun-   Erfahrungen gemacht, die sich in der auf zwei Se-
den hat. Die Sprache pflegte immer das Image des       mester aufgespaltenen Veranstaltung in großen
besonderen und war maßgeblicher Vorreiter in der       Lernfortschritten der Studierenden zeigten.
Entwicklung der Fenster-Technologien und der           Nachdem anfängliche Schwierigkeiten mit der Syn-
Maussteuerung. Leider benötigten diese Ansätze in      tax und der zunächst kompliziert, dann aber intui-
den 1970er und 80er Jahren extrem teure Hard-          tiv nutzbaren Entwicklungsumgebung Visu-
ware, so dass Smalltalk zwar in einigen Unterneh-      alWorks ausgeräumt waren, fand eine Konzentrati-
men, wie z. B. dem Versicherungsbereich in             on auf die eigentliche Programmentwicklung statt.
Deutschland, in der Entwicklung eingesetzt wurde,      Smalltalk nutzt den Begriff der Literale, um unver-
aber nie einen echten Durchbruch schaffte. Teil
                                                       änderliche Objekte (immutable Objects) zu definie-
dieser Problematik ist die zunächst gewöhnungs-
                                                       ren, so kann ein String-Objekt in den meisten
bedürftige Syntax, in der z. B. Parameter in Mixfix-
                                                       Smalltalk-Varianten nicht verändert werden, etwa-
Notation in den Methodennamen integriert wer-
                                                       ige Methoden liefern ein neues String-Objekt als
den. Die folgenden Befehle erzeugen ein Objekt
                                                       Ergebnis. Diese Unterscheidung ist aus Sicht von
vom Typ Dictionary, das Paare von Werten verwal-
                                                       Anfängern nicht sehr intuitiv und führt zu Proble-
ten kann, für die dann ein erstes Paar eingetragen
                                                       men. Kritisch aus Anfängersicht ist auch, dass für
wird.
                                                       die Ausgabe eine Klassenmethode genutzt werden
                                                       muss.




   48                                                          A. Spillner, H. Lichter (Hrsg.): SEUH 13
Insgesamt war die Vorlesung erfolgreich, da durch      bestimmen, ein großes Problem darstellt. Ein Ver-
eine schnell angebotene Nachprüfungsmöglichkeit        heddern in der Zeigerwelt bei einfach und doppelt
alle Studierenden letztendlich die Veranstaltung       verketteten Listen ist für Anfänger oft unausweich-
bestanden. Weiterhin war der Einstieg in die Ob-       lich. Gegenüber Java hat C allerdings den Vorteil,
jektorientierung erfolgreich, so dass der Übergang     dass man alle Variablen auch per Referenz (int*
zu Java keine besondere Herausforderung darstell-      wert) übergeben kann. Da so leider auch Arrays
te.                                                    übergeben werden können, geht der intuitive Vor-
Zusammenfassend kann man den Ansatz, Small-            teil schnell verloren.
talk als Anfängersprache zu nutzen, als klaren Er-     Weiterhin kann in C auch auf eine Kopiersemantik
folg ansehen, der allerdings maßgeblich durch die      gesetzt werden, wenn z. B. Arrays in ein struct ein-
sehr guten Randbedingungen unterstützt wird. Die       gebettet sind. Dieser Ansatz wird zwar zunächst als
Möglichkeit, mit Smalltalk gerade an anderen           intuitiver von Studierenden angesehen, führt aber
Fachhochschulen anzufangen, schätzt der Autor als      schnell zu Problemen, wenn eine Verknüpfung mit
sehr gering an, da neben der mangelnden Akzep-         der Referenzsemantik notwendig wird. Generell
tanz unter den Kollegen gerade auch Studierende        sollte deshalb auf die Kopiersemantik in der
frühzeitig praxisrelevante Lehrstoffe vermittelt       Grundausbildung in C verzichtet werden.
bekommen wollen. Dies ist besonders zu beachten,       Gerade in C ist die Verlockung sehr groß, für An-
da viele Studierende ihr Studium nebenbei finan-       fänger überflüssige, aus Sicht eines begeisterten C-
zieren müssen und der frühe Einstieg in einfache       Nutzers aber sehr interessante Sprachkonzepte wie
Programmierjobs in Unternehmen für Studierende         Funktionszeiger und Makros durchzunehmen, was
und Unternehmen sehr vielversprechend sein             verpflichtend durchgeführt, für viele Studierende
kann.                                                  im ersten Semester zu großen Verständnisproble-
Die Programmiersprache Ruby [Fla08] hat viele der      men führt.
zentralen Ideen übernommen und eignet sich sehr        Eine verbreitete besondere Lernumgebung für C
gut zur schnellen Prototyp-Entwicklung für Web-        existiert nicht. Mit der SDL-Library [@SDL] besteht
Systeme mit Ruby on Rails [RTH11]. Es wäre des-        zwar die Möglichkeit, sehr schnell Spiele zu entwi-
halb eine Überlegung wert, ob eine Programmie-         ckeln, aber die Lernkurve ist beim Einstieg recht
reinführung mit Ruby sinnvoll für Erstsemester         hoch.
sein könnte.
                                                       Die hier dokumentierte Lehrveranstaltung wurde
                                                       von vielen verschiedenen Lehrenden hintereinan-
C                                                      der gehalten, wobei die plumpe Aussage „Beim
Die Programmiersprache C ist in aktuellen Unter-       ersten Mal hält ein Dozent eine Lehrveranstaltung
suchungen weiterhin eine der zentralen Sprachen        hauptsächlich für sich selbst“ einen Wahrheitswert
bei der Software-Entwicklung in Unternehmen. Da        enthält, da didaktische Erfahrungen aufgebaut
die Sprache sehr hardware-nah ist und gerade der       werden müssen. Gerade die Beobachtung, dass der
Markt der embedded Systeme kontinuierlich vom          Übergang vom Lesen eines Programms zur Erstel-
Auto bis zum Kühlschrank wächst, wird die Spra-        lung eines Programms selbst mit einfachen if-An-
che weiterhin mittelfristig ihre Bedeutung behalten.   weisungen, ein enormer Schritt sein kann oder dass
C wurde 2006 in der Programmierausbildung für          die didaktische Hürde zwischen einer einfachen
Erstsemester in einer Veranstaltung mit fünf Leis-     Schleife und geschachtelten Schleifen sehr groß ist,
tungspunkten an der Fachhochschule Wiesbaden           muss oft in Selbsterfahrungen erworben werden.
(jetzt Hochschule RheinMain) genutzt. Die Rah-         Als Fazit eignet sich C wohl dann als Anfänger-
menbedingungen waren eine zu dem Zeitpunkt             sprache, wenn viele sprachliche Besonderheiten,
leicht sinkende Anzahl von Erstsemestern, wobei es     wie die Kopiersemantik, Zeiger-Arithmetik und
in dieser Veranstaltung eine besonders hohe An-        Makros, nicht behandelt werden. Ob solch ein kon-
zahl von Wiederholern gab. C wird als gute Spra-       sequenter Ansatz schon umgesetzt wurde, ist leider
che zum Lernen der Programmierung von Befür-           unbekannt. Weiterhin zeigen Erfahrungen in höhe-
wortern angesehen, da sie praxisnah ist und mit        ren Semestern deutlich, dass zumindest bei aktuell
sehr wenigen Schlüsselwörtern auskommt, was zur        nicht sehr leistungsstarken Studierenden die Ideen
Annahme führt, dass die Sprache leicht zu erlernen     der Objektorientierung durch eine spätere Einfüh-
sei.                                                   rung nicht verinnerlicht werden.
In der Durchführung zeigte sich deutlich, dass die     Die ursprünglich mit C, C++ und Java dreisemes-
notwendige Zeigerprogrammierung allein schon           trige Programmierausbildung mit je fünf Leis-
beim Umgang mit Strings, also char-Arrays mit          tungspunkten wurde in der Reakkreditierung des
besonderem Terminierungssymbol, und anderen            Bachelors nach sehr kontroversen Diskussionen
Arrays ohne Möglichkeit, deren Länge implizit zu       durch eine zweisemestrige Programmierausbil-




    A. Spillner, H. Lichter (Hrsg.): SEUH 13                                                        49
dung mit jeweils 10 Leistungspunkten mit Schwer-         werden dann zum Problem, wenn sie an Funktio-
punkt in Java, ergänzt um eine kompakte Einfüh-          nen automatisch per Referenz übergeben werden.
rung in C, ersetzt [HSRM10].                             Unabhängig vom didaktischen Ansatz bietet Java
                                                         als hybride Sprache eine weitere Falle für Anfänger
Java                                                     mit dem Übergang vom elementaren Datentypen
Java verbreitet sich seit seiner Einführung Mitte der    zu seiner kapselnden Klasse, z. B. von int zur Klas-
1990er Jahre kontinuierlich in Unternehmen und in        se java.lang.Integer, die z. B. bei der Nutzung von
der Hochschulausbildung. In diversen Statistiken         Listen benötigt wird. Zwar findet im Wesentlichen
ist Java die am meisten benutzte Programmierspra-        die Umwandlung durch Autoboxing automatisch
che, wenn es um Programme im Business-Bereich,           statt, wird aber durch null-Werte und die Festle-
wie ERP geht.                                            gung, dass die Integer-Werte von -128 bis 127 iden-
                                                         tisch, genauer Singletons, sind, die anderen nicht,
Java ist aus Sicht der Objektorientierung eine hy-
                                                         bemerkenswert kompliziert. Das folgende Pro-
bride Sprache, deren Großteil aus der konsequen-
                                                         gramm zeigt diese Probleme.
ten Nutzung von Klassen besteht, die allerdings auf
einfachen Basistypen aus C, wie int und char basie-
                                                           public static void main(String[] s){
ren. Diese Problematik spiegelt sich in verschiede-
                                                             ArrayList l = new ArrayList<>();
nen didaktischen Ansätzen wider. Der klassische
                                                             l.add(10);
Ansatz besteht darin, zunächst den imperativen
                                                             l.add(1000);
Teil der Programmiersprache zu lehren, die auf if
                                                             Integer vgl1 = 10;
und while fokussieren, und danach zur Objektorien-
                                                             Integer vgl2 = 1000;
tierung überzugehen. Dieser Ansatz wurde lange
                                                             for(Integer val:l){
Zeit auch in imperativen Sprachen, wie Basic,
                                                               if (val == vgl1){
Pascal und C verfolgt, wo der zweite Teil sich auf
                                                                 System.out.println("val ist 10");
die Entwicklung komplexerer Datenstrukturen
                                                               }
meist zusammen mit ihrer Verlinkung in Listen
                                                               if (val == vgl2){
fokussiert. Didaktisch steht man dann am Anfang
                                                                 System.out.println("val ist 1000");
vor dem Problem, dass man bei public static void
                                                               }
main(String[] s) mit „public“, „static“ und „String[]“
                                                             }
drei Sprachanteile vorstellen muss, deren genauer
                                                             for(int val:l){
Sinn erst viel später in der Lehrveranstaltung
                                                               if (val == vgl1){
vermittelt werden kann. Gerade dieses „magische
                                                                 System.out.println("val ist 10");
Verhalten“ führt aber bei Programmieranfängern
                                                               }
oft zur verständlichen Idee, dass diese Magie auch
                                                               if (val == vgl2){
für andere Sprachanteile gilt. Ein Beispiel ist der
                                                                 System.out.println("val ist 1000");
Konstruktor
                                                               }
        public Punkt(int x, int y){
                                                             }
        }
                                                             l.add(null);
bei dem vermutet wird, dass eine Zuweisung zur
                                                             Integer valn = l.get(2);
Objektvariablen gleichen Namens (this.x=x) nicht
                                                             System.out.println("valn = "+valn);
programmiert werden muss.
                                                             int vali = l.get(2);
Der klassische didaktische Ansatz ist anfänglich             System.out.println("vali = "+vali);
durchaus erfolgreich, führt aber beim Übergang zu          }
Klassen oft zu Problemen, da diese dann analog
                                                         Die Ausgabe liefert
zum struct in C als reine Daten-Container ohne
                                                         val ist 10
eigene Funktionalität angesehen werden. Weiterhin
                                                         val ist 10
setzt sich bei durchschnittlich begabten Studieren-
                                                         val ist 1000
den bei frei gestaltbaren Programmieraufgaben in
                                                         valn = null
höheren Semestern eher der Ansatz durch, alles
                                                         Exception in thread "main" java.lang.NullPointerException
möglichst mit Klassenmethoden lösen zu wollen.
                                                         ein Ergebnis, dass mit reiner Logik ohne zusätzli-
Einen ersten Bruch mit der imperativen Herange-
                                                         ches Wissen kaum verständlich ist. Es ist möglich,
hensweise gibt es spätestens, wenn Strings oder
                                                         dieses Problem im Wesentlichen zu vermeiden,
Arrays genutzt werden sollen, da es sich hier um
                                                         indem konsequent nur die dazugehörigen Klassen
Objekte handelt, auf denen Methoden genutzt
                                                         wie Integer und Double für Variablen genutzt wer-
werden können. Arrays, deren Umsetzung in Java
                                                         den. Ein Ansatz, der vom Autor erfolgreich genutzt
aus didaktischer Sicht sicherlich diskutabel ist,
                                                         wurde. Leider kann man nicht vollständig in der
                                                         Welt der Objekte und Klassen arbeiten, da die Java-




   50                                                             A. Spillner, H. Lichter (Hrsg.): SEUH 13
Klassenbibliothek viel mit int-Werten arbeitet. Kri-    einer nicht erfüllbaren Formel aussieht. Ähnliches
tisch ist weiterhin, dass man sehr häufig früh in       gilt für die Frage, warum man nicht x+1 = x; schrei-
Programmen viele null-Überprüfungen einbauen            ben darf, obwohl wenig später x==y+1 und y+1==x
muss und es faktisch kein begleitendes Lehrbuch         semantisch äquivalent sind.
gibt, das diesen Ansatz auch verfolgt.                  Dieser konsequente Weg des Starts ausschließlich
Java behandelt Zahlen- und String-Objekte wie für       mit Objekten wurde an der Hochschule Osnabrück
Smalltalk bereits andiskutiert als immutable Ob-        in zwei einführenden Lehrveranstaltungen des
jects, was für Anfänger nicht unmittelbar verständ-     Bachelor-Studiengangs „Informatik - Medienin-
lich ist.                                               formatik“ genutzt. Der Ansatz wurde im Rahmen
                                                        einer Reakkreditierung in sehr kontroversen Dis-
Objects First                                           kussionen 2010 ausgewählt, in dem nach einer Ein-
Trotz dieser Mängel wird Java oft und recht erfolg-     führung in Java, in einer Zweitsemesterveranstal-
reich in der Programmiergrundausbildung einge-          tung C und C++ gelehrt werden. Ursprünglich
setzt, was auch auf die zweite didaktische Heran-       wurde nach einer Einführung in C im zweiten Se-
gehensweise „Objects first“ [BK09] zurück zu füh-       mester C++ (mit all seinen sprachlichen Besonder-
ren ist, bei der von Anfang an auf die Entwicklung      heiten) auch in Veranstaltungen zu jeweils zehn
von Objekten und Klassen gesetzt wird.                  Leistungspunkten gelehrt. Die Java-Einführung
Die Grundidee besteht darin, sich möglichst früh        war ein kleiner Block im Rahmen einer Usability-
mit den zentralen Strukturen der Objektorientie-        Veranstaltung.
rung auseinander zu setzen. Der Objektbegriff            Die Rahmenbedingungen der ersten Umsetzung
selbst ist intuitiv und Studierende finden ihn oft in   des neuen Ansatzes waren relativ schlecht, da es
ihrer realen Welt wieder, sei es selbst als Student-    durch einen doppelten Abiturjahrgang und Wie-
Objekt in der Software der Hochschulverwaltung          derholer, die diese neue Veranstaltung auch hören
oder als Kundin, die ein Konto-Objekt nutzt. Gene-      mussten, zu einer sehr hohen Teilnehmerzahl mit
rell bietet sich hier die Hochschule zur Modellie-      anfänglich schlechter räumlicher Ausstattung kam.
rung an, da Studienanfänger neu in diesem System        Statistiken zeigen, dass dieser erste Ansatz trotz
sind, in das sie sich für drei oder mehr Jahre einar-   schlechter Rahmenbedingungen nicht schlechter
beiten sollen. So kann z. B. der Modul-Begriff und      abgeschlossen hat, als der vorherige Weg. Weiter-
sein Zusammenhang zur konkreten Vorlesung               hin zeigte die Analyse eine Herausforderung, dass
genauer analysiert werden.                              alle an einer Lehrveranstaltung Beteiligten das
Setzt man den Objekt-Begriff an den Anfang, spie-       Konzept der Vorlesung verstehen und aktiv för-
len Begriffe wie Objekt, Objektvariable (auch           dern müssen. Dies ist gerade wichtig, da es dauert,
Exemplarvariable, Instanzvariable oder Attribut         bis die Welt aus Objekten, Klassen und Methoden
genannt), konkrete Werte der Variablen, Objekte,        in den Köpfen verankert wird, was den zweiten
die andere Objekte als Eigenschaft haben und            Teil einer Lehrveranstaltung mit den Ablaufsteue-
Sammlungen von Objekten zunächst die zentrale           rungen dann aber deutlich vereinfacht, da sich hier
Rolle. In Java stößt man dann schnell auf den Typ-      die objektorientierten Strukturen festigen. Da im
Begriff, da jede Variable einen Typen haben muss,       konkreten Fall nicht genügend Zeit zur Schulung
was entweder ein elementarer Typ aus der C-Welt         der Beteiligten vorlag und diese auch ihre eigenen
oder wieder eine Klasse sein kann. Im nächsten          Vorstellungen vom Programmieren vermitteln
Schritt werden Methoden und Parameter betrach-          wollten, konnte der Weg in den zugehörigen Prak-
tet, wobei hier der leider inkonsistente Ansatz von     tika nicht immer konsequent beschritten werden.
Kopien bei elementaren Typen und Referenzen bei         Die Wiederholung der Veranstaltung hatte mit
Objekten zum ersten Bruch führt. Die eigentlichen       deutlich geringeren Studierendenzahlen bessere
Ablaufstrukturen werden dann später in den Me-          Voraussetzungen, wobei sich dann klar die Vorteile
thoden eingeführt. Man erhält so einen recht lan-       des Ansatzes mit einer geringeren Durchfallquote,
gen Anteil an Vorlesungen, die sich ausschließlich      die von 32,2% auf 20,9% sank, wobei die Quote bei
mit Objekten, Methoden und sequentiellen Pro-           den Erstsemestern von 16,9% auf 12% zurückging,
grammabläufen beschäftigen, wozu man bemer-             zeigten.
kenswert viele Beispiele konstruieren kann. Dies ist
auch ein gutes Beispiel, wie man Vorlesungen ver-       Im Folgeverlauf konnten einige Studierende bereits
langsamen kann, da eine aus C bekannte Anwei-           im zweiten Semester erfolgreich unter Anleitung
sung                                                    eigenständige Programmier- und Analyseaufgaben
                                                        in Forschungsprojekten als studentische Hilfskräfte
 x = x+1;                                               übernehmen.
für einen Informatiker intuitiv erscheint, für je-      Zusammenfassend kann der Ansatz als sehr er-
mand, der noch nicht programmiert hat, aber nach        folgsversprechend angesehen werden, wird aber




   A. Spillner, H. Lichter (Hrsg.): SEUH 13                                                          51
nicht konsequent weiter betrachtet, da die verant-     verfügbaren Klassen in einem Klassendiagramm
wortlichen Dozenten sich nicht auf diesen Weg          angezeigt, von denen dann über einen Rechtsklick
einigen konnten.                                       Objekte erzeugt und Klassenmethoden aufgerufen
Die folgenden Unterabschnitte analysieren einige       werden können. Die Objekte liegen unten in einer
weitere Faktoren, die für den Erfolg einer Pro-        Objektleiste, so dass über einen Rechtsklick deren
grammierveranstaltung relevant sein können, was        Methoden ausführbar sind. Durch einen Doppel-
z. B. die Wahl der Entwicklungsumgebung betrifft.      klick auf ein Objekt werden alle Objektvariablen
                                                       mit Namen und Werten angezeigt. Änderungen
Eclipse                                                über Methodenaufrufe werden auch in die ange-
Eclipse [@Ecl] ist eine mächtige Plattform, die mit    zeigten Objektvariablen übernommen. Hat eine
vielen Arten von Erweiterungen individuell an          Objektvariable eine Klasse als Typ, kann auch wei-
Projekte angepasst werden kann und deshalb in          ter in diese Objekte hineingeschaut werden. BlueJ
Unternehmen in den meisten Java-Projekten gesetzt      bietet einen einfachen Debugger, der wie üblich
ist. Neben Java ist die Entwicklungsumgebung           über Break Points die schrittweise Ausführung und
auch für weitere Programmiersprachen wie C und         Überprüfung von Programmen ermöglicht.
C++ effizient nutzbar. Für absolute Programmieran-     Als weitere Besonderheit bietet BlueJ eine Konsole,
fänger ist aber oft die große Vielzahl an angebote-    das Code Pad, mit dem Java als Skriptsprache ge-
nen Arbeitsschritten sehr verwirrend. Die Flexibili-   nutzt werden kann. Anweisungen werden hier
tät, die Eclipse bei Entwicklern sonst sehr beliebt    direkt eingetippt und ausgeführt. Weiterhin sind
ist, macht die Umgebung für Anfänger schwer            Ausdrücke eingebbar, deren Ergebnisse sofort aus-
einschätzbar. Es gibt z. B. mindestens drei Wege,      gegeben werden. Handelt es sich hierbei um Ob-
eine Klasse anzulegen, es gibt viele Sichten, die      jektreferenzen, können diese in die Objektleiste
konfiguriert werden können und die Syntaxprü-          gezogen und weiter analysiert werden.
fung weist bereits beim Tippen auf potenzielle Feh-    Der Editor von BlueJ ist recht einfach gehalten,
ler hin. Weiterhin werden für Java viele vereinfa-     unterstützt aber die sinnvolle automatische Code-
chende Schritte, wie die Generierung von get- und      Formatierung und die Generierung von Java-Doc.
set-Methoden sowie hashCode und equals angeboten.      Alle Änderungen werden unmittelbar abgespei-
Gerade bei diesen Methoden ist es sinnvoll, dass       chert. Der Compiler gibt nur jeweils die erste Feh-
Anfänger sie für sich durch die eigene Erstellung      lermeldung aus, um nicht mit teilweise unver-
entdecken, um gerade das sehr gute, aber nicht         ständlichen Folgefehlern zu verwirren.
einfache Konzept der Basisklasse Object zu verste-
hen.                                                   Zusammen mit BlueJ werden bereits einige Beispie-
                                                       le geliefert, die den didaktischen Ansatz unterstüt-
Man kann zwar die Nutzung von Eclipse auf weni-        zen, dass Anfänger zunächst spielerisch lernen,
ge Klicks reduzieren, die für erste Programme          Objekte zu erzeugen und deren Methoden auszu-
wirklich benötigt werden, benutzt allerdings ein       führen. Ein bekanntes Beispiel „shapes“ erlaubt es,
Nachbar bei der Programmentwicklung ihm schon          verschiedene graphische Elemente auf einer Can-
bekannte Features, wächst schnell ein innerer          vas-Oberfläche zu platzieren und diese zu ver-
Druck, dies auch beherrschen zu wollen.                schieben und umzufärben. Dieses prinzipiell sehr
Ein Einstieg in Eclipse ist zumindest optional si-     schöne Beispiel hat allerdings später den Nachteil,
cherlich im Laufe der ersten Programmiererfah-         dass an zentraler Stelle eine Klassenmethode ge-
rungen sinnvoll und kann zum Selbststudium in          nutzt wird, ein Konzept, dass man erst spät in einer
der vorlesungsfreien Zeit vorgeschlagen werden.        Einführung in die objektorientierte Programmie-
Eclipse unterstützt nicht vollständig den Objects-     rung vorstellen sollte, da sonst die zunächst zu
First-Ansatz, da zumindest eine main-Methode in        erlernende Grenze zwischen einer nicht ausführba-
einer Klasse existieren muss.                          ren Klasse und Objekten, mit denen Programmcode
                                                       ausführbar ist, wieder verschwimmt.
BlueJ                                                  Generell ist die Idee, möglichst einfach graphische
BlueJ [@Blu] ist gegenüber Eclipse eine wesentlich     Ausgaben oder sogar Interaktionen mit der Ober-
einfachere Entwicklungsumgebung mit wesentlich         fläche zu erlauben, sehr sinnvoll, da man als Ler-
weniger Möglichkeiten. Ein einfaches Googeln           nender schnell zu anschaulichen Programmen
nach BlueJ mit der Ergänzung „filetype:pdf“ zeigt,     kommt, was oft auch den Spiel- und den für das
dass BlueJ an vielen Schulen aber auch Hochschu-       Lernen dringend benötigten Probier-Trieb an-
len in der Programmierausbildung genutzt wird.         spricht. Für das gezeigte Beispiel und auch einige
                                                       Anfangsprogramme in [BK09] gilt leider, dass ge-
BlueJ ermöglicht es, einfach Objekte gegebener
                                                       gen die konsequente Objektorientierung verstoßen
Klassen zu erzeugen und mit diesen Objekten über
                                                       und schnell z. B. zu System.out.println() gegriffen
deren Methoden zu interagieren. Dazu werden die
                                                       wird.




   52                                                          A. Spillner, H. Lichter (Hrsg.): SEUH 13
Um auch bei Ein- und Ausgaben konsequent auf               Lernenden führen, was die Motivation hochhalten
Objekte zu setzen, ist es sinnvoll, diese Funktionali-     kann, ob der Übergang dadurch in reale Program-
tät in einer Klasse mit Objektmethoden zu kapseln.         miersprachen einfacher oder durch ein dann fun-
Dies löst aber das Problem nicht vollständig, da es        diertes zu einfaches mentales Entwicklungsmodell
typischerweise trotz mehrfacher Konstruktornut-            erschwert wird, ist bisher in Studien nicht ernsthaft
zung jeweils nur ein Objekt dieser Klasse gibt.            untersucht worden.

Greenfoot                                                  Interaktionsbrett
Die aus der graphischen Ausgabe gezogene Visua-            Die Motivation von Lernenden mit graphischen
lisierung ist auch eine Motivation für eine Alterna-       Möglichkeiten hochzuhalten, ist in vielen Ansätzen
tive zu BlueJ namens Greenfoot [@Gre], ebenfalls           vertreten. Aus diesem Grund wurde für die hier
einer Entwicklungsumgebung für Anfänger, die               betrachteten Java-Veranstaltungen in Osnabrück
allerdings auf BlueJ basiert. Typischerweise werden        motiviert von der kritischen Analyse von Greenfoot
mit Greenfoot sogenannte Objektwelten definiert,           eine eigene Klasse Interaktionsbrett zur Visualisie-
deren Objekte auf einem zweidimensionalen Feld             rung erstellt [@Int].
als Objekte platziert werden können. Wie in BlueJ          Die zentrale Idee ist es, konsequent objektorientiert
sind dann direkt alle Methoden des Objekts und             eine Klasse nutzbar zu machen, mit der die einfa-
das Objekt selbst zur Analyse zugreifbar und Me-           chen graphischen Elemente Punkt, Linie, Kreis und
thoden können ausgeführt werden.                           Rechteck gezeichnet und mit der Maus bewegt
Das typische Einführungsbeispiel sind Wombat-              werden können. Weiterhin wird die Tastatursteue-
Objekte, die über das Feld mit Hilfe der Methoden          rung unterstützt. Zum Einstieg werden auch hier
gesteuert werden können und z. B. Blätter suchen           einfache Befehlsketten genutzt, die ein Bild auf der
und fressen. Generell vermittelt Greenfoot so sehr         Oberfläche zeichnen. Danach werden eigene Klas-
schön den Objektbegriff, man kann sogar einfache           sen für graphische Objekte, wie Dreiecke, angelegt,
Vererbungen verfolgen, allerdings wird im Bei-             die dann selbst Methoden enthalten, um sich auf
spiel-Code wieder sehr schnell auf Klassenvariab-          ein Interaktionsbrett zu zeichnen.
len und Klassenmethoden zugegriffen. Greenfoot             Das folgende Programm zeigt die Möglichkeit,
nutzt im Wesentlichen dabei eine Objektwelt, um            einen Kreis mit Hilfe der Pfeil-Tasten nach links
zentral die Nutzung von if und while zu trainieren.        und rechts zu schieben. Etwas „negative Magie“
Man muss dabei klar zwischen der reinen Nutzung            wird auch im Interaktionsbrett benötigt, da ein
der Objektwelt, bei der die Objekte nur über Me-           Objekt, das über Tastatureingaben informiert wer-
thoden gesteuert werden können, und der Erstel-            den möchte, eine Methode der Form public void
lung neuer Welten, Szenarien genannt, die von              tasteGedrueckt(String s) realisieren muss. Das Inter-
erfahreneren Entwicklern angelegt werden sollten,          aktionsbrett nutzt Reflektion, um dann diese Me-
trennen. Von Programmieranfängern wird nur die             thode aufzurufen.
Erweiterung existierender Szenarien erwartet.              public class Steuerung {
Greenfoot eignet sich auch, um einfache interaktive          private Interaktionsbrett ib = new Interaktionsbrett();
Spiele zu erstellen, wobei hier von der konsequen-           private int pos = 0;
ten Objektorientierung abgewichen wird.
        if (Greenfoot.mouseClicked(null))                      public Steuerung() {
Die vorherige Fallunterscheidung dient z. B. dazu,               ib.willTasteninfo(this);
festzustellen, ob die Maus zum Klicken genutzt                 }
wurde. Um dann das geklickte Objekt zu finden,
muss ein Cast-Operator und ein Klassen-Objekt                  public void tasteGedrueckt(String s) {
genutzt werden, wie das folgende Code-Fragment                   if (s.equals("Rechts")) {
zeigt.                                                             pos = pos + 5;
Balloon balloon = (Balloon) getOneObjectAtOffset(x , y           } else if (s.equals("Links")) {
                                       , Balloon.class);           pos = pos - 5;
                                                                 }
Verwandt mit Greenfoot sind einige andere Ansät-                 ib.abwischen();
ze, wie das Hamster-Modell [Bol08], Kara [@Kara],                ib.neuerKreis(pos, 5, 20);
Karol [@Karo] oder Scratch [@Scr], mit denen eige-             }
ne Umgebungen, typischerweise in Java, geschaf-
fen werden, um Schüler an die ersten Schritte des              public static void main(String[] s){
Programmierens, also die systematische Hinter-                   new Steuerung();
einanderausführung von Befehlen, heranzuführen.                }
Dieser Ansatz mag zu schnellen „Erfolgen“ bei den          }




   A. Spillner, H. Lichter (Hrsg.): SEUH 13                                                                  53
Mit Hilfe des Interaktionsbretts können auch leicht      Maus reagieren und mit false antworten, da er
etwas kompliziertere Spiele programmiert werden.         nicht verschoben, aber informiert werden will.
Abb. 1 zeigt ein Beispiel einer Abschlussaufgabe, in     Generell wurde das Interaktionsbrett von Studie-
der mehrere Monster, die eine Mauer erklimmen,           renden in Praktika sehr positiv aufgenommen, da
mit Steinen von einem auf der Burgmauer laufen-          man sehr einfach zeichnen kann. Das Einüben der
den Wächter abgewehrt werden müssen.                     Maussteuerung ist dabei deutlich komplizierter
                                                         und gehört in den zweiten Teil der Lehrveranstal-
                                                         tung. Aktuell wird diskutiert, ob die absichtlich
                                                         gewählte minimale Darstellung von ausschließlich
                                                         schwarzen Linien und der Verzicht auf einen Hin-
                                                         tergrund, durch sinnvolle Erweiterungen ergänzt
                                                         werden sollen. Die Weiterentwicklung findet dabei
                                                         durch Studierende statt, die weitere Beispiele er-
                                                         stellen.

                                                         Processing
                                                         Processing [@Pro] wurde als Sprache und Entwick-
                                                         lungsumgebung entwickelt, um kreativen Leuten
                                                         einen sehr einfachen Zugang zu den Themen Visu-
                                                         alisierung, interaktive Animation und Simulation
                                                         zu ermöglichen. Die zugehörigen Arbeiten wurden
                                                         am Massachusetts Institute of Technology von Ben
                                                         Fry und Casey Reas gestartet. Mittlerweile gibt es
                                                         im Internet eine große Unterstützung des Ansatzes
                                                         mit vielen Tutorials und quelloffenen Beispielen.
                                                         Processing wird in vielen Design-Studiengängen, u.
                                                         a. auch im Media and Interaction Design-
        Abb. 1: Interaktives Spiel mit Objekten          Studiengang an der Hochschule Osnabrück für
                                                         kleinere und größere Projekte eingesetzt.
Jedes der graphischen Elemente kann mit der Maus
bewegt werden, wozu auch etwas Magie notwen-
dig ist. Wieder muss festgelegt werden, welches
Objekt informiert werden soll, wenn eine Mausak-
tion stattfindet. Weiterhin ist es sinnvoll, dass meh-
rere Objekte über einen Namen als String unter-
schieden werden können, wenn das gleiche Objekt
informiert werden soll. Für einen verschiebbaren
Kreis mit x- und y-Koordinate sowie einem Radius,
sieht dann eine Methode zum Anmelden beim In-
teraktionsbrett wie folgt aus.
 ib.neuerKreis(this,"Ball",ib.zufall(0,300),42,10);
Hier wird das Objekt, das diesen Befehl ausführt,
auch über die Mausaktion, die in angeklickt, ver-
schoben und losgelassen unterschieden werden,
informiert. Dazu muss zumindest eine der drei zu
den Aktionen gehörenden Maus-Methoden reali-
siert werden, die als Parameter den Namen des
Objekts und seine neuen Koordinaten übermittelt
bekommt.
 public Boolean mitMausAngeklickt(String name
                            , Integer x, Integer y){
   return !versenkt;
 }
Der Boolesche Ergebniswert legt fest, ob die Aktion
überhaupt erwünscht ist. Will man z. B. einen
Knopf realisieren, muss er auf das Klicken mit der
                                                                Abb. 2: Malprogramm in Processing




   54                                                            A. Spillner, H. Lichter (Hrsg.): SEUH 13
Sehr interessant ist aus didaktischer Sicht, dass      Variable mousePressed, mit der der Zustand der Maus
viele Studierende, die sich bewusst für einen künst-   abgeprüft werden kann. Weiterhin befindet sich die
lerischen Studiengang entschieden haben, durch         aktuelle Mausposition in den Variablen mouseX und
Processing einen schnellen und oft begeisternden       mouseY sowie die unmittelbar vorherige Position in
Einstieg in die Programmierung finden. Es wird         den Variablen pmouseX und pmouseY.
wieder auf die unmittelbare Visualisierung und         Processing ist keine prozedurale Sprache wie C, da
recht einfache Interaktionsmöglichkeiten gesetzt.      die Klassen der Java-Klassenbibliothek genutzt
Anders als bei „Spielsprachen“ findet die Pro-         werden und auf deren Objekte mit Methoden zu-
grammierung im Wesentlichen in Java statt, wobei       gegriffen wird. Es entsteht so eine Mischung aus
die Entwicklungsumgebung es ermöglicht, den            Funktionen und Methodenaufrufen. Die Entwick-
Objektbegriff in den Hintergrund zu stellen. Dies      lungsumgebung enthält keinen Debugger. Seman-
soll mit dem vollständigen Programm in Abb. 2,         tisch programmiert man in Processing eine Erwei-
mit dem ein Nutzer mit gedrückter Maustaste auf        terung einer Klasse processing.core.PApplet, in die
einer Fläche zeichnen kann, veranschaulicht wer-       der Code aus dem Editor eingebaut wird. Man
den.                                                   kann so auch direkt in Processing neue Klassen
                                                       selbst entwickeln, die dann zu lokalen Klassen der
                                                       großen umgebenden Klasse werden und direkt auf
                                                       die Processing-Funktionen zugreifen können. Al-
                                                       ternativ kann man in Processing auch echte neue
                                                       Klassen schreiben, muss dann aber selbst eine Refe-
                                                       renz zur Nutzung der Processing-Funktionen auf-
                                                       bauen.
                                                       Da Processing im Wesentlichen in Java geschrieben
                                                       ist, kann man die zugehörigen Klassenbibliotheken
                                                       auch in andere Programme einbauen. In [Kle12]
                                                       wird technisch beschrieben, wie man Processing
                                                       aus BlueJ heraus nutzen kann, wobei durch die
                                                       besondere Art der Ausführung der Debugger nicht
                                                       zur Verfügung steht. Funktional muss der Entwick-
                                                       ler für angeklickte Elemente selbst berechnen, wel-
       Abb. 3: Malprogramm in Benutzung                ches Element angeklickt wurde, eine Funktionalität,
                                                       die beim Interaktionsbrett schon gegeben ist. Wei-
Abb. 3 zeigt das entstehende Beispielfenster, das
                                                       terhin unterstützt Processing keine Eingabe in Kon-
auch leicht als ausführbares Programm, Java-
                                                       solenfenstern.
Applet oder als auf Android lauffähiges Programm
exportiert werden kann.                                Die vorherigen Abschnitte haben klar gezeigt, wel-
                                                       che didaktischen Defizite Processing enthält, wes-
Zentral nutzt Processing zwei Funktionen (soge-
                                                       halb man es mit guten Gründen nicht in einer Pro-
nannt im Processing-Sprachgebrauch), init() und
                                                       grammiereinführung einsetzen sollte. Dem muss
draw(), wobei init() einmal am Programmanfang
                                                       man die weite Verbreitung von Processing in krea-
und draw() danach in einer Endlosschleife aufgeru-
                                                       tiven Bereichen gegenüberstellen, in denen es auch
fen werden. Zentral in Processing ist die große
                                                       gelingt, nicht programmieraffinen Personen die
Menge von Funktionen, die zur Erzeugung und
                                                       Begeisterung an der Entwicklung beizubringen. Ob
Verarbeitung graphischer Elemente bereits zur
                                                       dieser Ansatz auch den systematischen späteren
einfachen Nutzung vorliegen, wodurch die eigent-
                                                       Ein- oder Umstieg in die objektorientierte Pro-
liche Processing-Sprache definiert wird. Dazu ge-
                                                       grammierung erlaubt, müssten längerfristige Un-
hören auch viele Varianten, Farbtöne anzugeben
                                                       tersuchungen zeigen.
und detailliert Fonts auszuwählen. Im obigen Bei-
spiel sieht man, wie die Hintergrundfarbe als eine     Zwischenfazit zu Java
Möglichkeit mit einem int-Wert festgelegt wird.
                                                       In den letzten Abschnitten wurde der klassische
Mit stroke() wird die Farbe für die nächsten gemal-
                                                       imperative Lehrweg dem konsequenten Ansatz
ten Objekte festgelegt. Dabei ist die Grundidee
                                                       Objects First gegenüber gestellt und aus Sicht des
ähnlich wie beim Malen selbst, dass man durch
                                                       Autors die Vorteile in der durchgeführten Lehre
Funktionen festlegt, wie gemalt wird und dies
                                                       vorgestellt. Diese Sichtweise spiegelt sich in der
dann für alle folgenden Malaktionen gilt.
                                                       neu entstehenden Literatur zu Java [HMG11]
Das Beispiel zeigt auch, dass in Processing einfach    [Ull11] [Far12] nur selten wieder [Wu10], es wird
einige „negative Magie“ genutzt wird, um das Pro-      maximal ein Ansatz „Objects early“ versucht, der
grammieren zu erleichtern. Es gibt eine Boolesche      „schnell“ etwas zu Alternativen und Schleifen zei-




   A. Spillner, H. Lichter (Hrsg.): SEUH 13                                                         55
gen will, um dann in Objekte und Klassen einzu-         beobachten, dass Lehrer, die natürlich ebenfalls auf
steigen. Da hier auch am Anfang Programme mit           der Suche nach dem richtigen Ansatz zur Pro-
Strukturen geschrieben werden, die konsequent der       grammierausbildung sind, zu sehr merkwürdigen
objektorientierten Vorgehensweise widersprechen,        Programmierrichtlinien und Programmierstilen
kann aus didaktischer Sicht hier kein Unterschied       führen. Natürlich ist auch das andere Extrem ver-
zum ursprünglichen Vorgehen gesehen werden.             treten, bei denen wesentliche Teile von Program-
Aus Sicht der doch recht kleinen Gruppe der „Ob-        mierveranstaltungen an der Hochschule für Studie-
jects first“-Vertreter stellt sich die Frage, ob der    rende dank ihrer Schul- oder evtl. betrieblichen
Ansatz ein Irrtum ist und man gegen Windmühlen          Ausbildung trivial werden. Die Frage, ob ein In-
kämpft oder ob man weiterhin bei der Behauptung         formatik-Unterricht mit Inhalten der Studiensemes-
„die Erde ist rund“ bleiben soll. Die weiteren Ab-      ter in der Schule überhaupt sinnvoll ist, sei dabei
schnitte zu Java zeigen eventuell einen anderen         am Rande gestellt.
Weg, dass man den „Spaß an der Entwicklung“             Eine Analyse des Erfolgs eines Ansatzes ist noch
herstellen soll und die Zeit mit den Folgeerfahrun-     schwieriger, da er eigentlich nur durch die intensi-
gen den Weg zur guten Programmierung ebnet.             ve Analyse der Fähigkeiten von Studierenden er-
Zusammengefasst bietet Java sehr viele Möglich-         möglicht wird. Da aber die damit verbundene in-
keiten zu einem spannenden Einstieg in die Pro-         tensivere Betreuung bereits wesentlichen Einfluss
grammierung, wobei man die anfänglich genann-           auf den Lernerfolg haben kann, wird eine Beurtei-
ten sprachlichen Probleme beachten und didaktisch       lung oder gar ein Vergleich von Ergebnissen sehr
umschiffen muss.                                        schwierig.
                                                        Es stellt sich so die Frage, ob statt einer direkten
Fazit                                                   Beobachtung Indikatoren gefunden werden kön-
                                                        nen, die auf den Programmiererfolg schließen las-
Etwas verallgemeinert kann man die dargestellten
                                                        sen. Dies könnte durch die Verbindung von Ent-
Erfahrungen in der Form zusammenfassen, dass
                                                        wicklungswerkzeugen mit statischen Analysewerk-
die Auswahl der ersten Programmiersprache im
                                                        zeugen geschehen, die z. B. messen, wie oft ein
Studium wahrscheinlich kein wesentlicher Faktor
                                                        Compiler aufgerufen wird und wie oft Fehler z. B.
für den Studien- und den Berufserfolg von Studie-
                                                        in gleichen Zeilen dabei gefunden werden. Diese
renden ist. Begeisterte und begeisternde Dozenten
                                                        Analysewerkzeuge dürfen dabei die eigentliche
mit guter fachlicher Unterstützung und einfach zu
                                                        Nutzung nicht beeinflussen. Vor diesem Ansatz ist
nutzenden Werkzeugen können als Erfolgsfaktoren
                                                        aber dann zu klären, ob die Indikatoren wirklich
bestimmt werden. Dies bedeutet auch, dass Dozen-
                                                        geeignet sind. Der Erfahrungsbericht bietet einige
ten zumindest in den ersten Semestern ein gemein-
                                                        Fragen und Hypothesen, die genauer zu untersu-
sames Konzept in der Anwendung von Program-
                                                        chen sind.
miersprachen finden sollten, was häufiger nicht der
Fall ist.                                                   •   Da die am meisten angewandten Sprachen
                                                                objektorientiert sind, stellt sich die Frage,
Möchte man nach dem ersten Semester eine Pro-
                                                                ist ein Start mit C noch sinnvoll?
grammiergrundlage legen, die recht einfach erwei-
tert werden kann und Studierenden nebenbei recht            •   Wenn man objektorientiert beginnt, sollte
viele Nebentätigkeiten in Hochschulen oder Unter-               man dann rigoros auf Objects first setzen?
nehmen ermöglicht, sollte die Auswahl auf eine              •   Ist Java als Einführungssprache geeignet,
objektorientierte Sprache fallen. Dabei gibt es Indi-           obwohl sie nicht konsequent objektorien-
katoren auf Basis der Literatur und der gemachten               tiert ist?
Erfahrungen, dass ein konsequenter Einstieg mit
                                                            •   Welchen Motivationsschub kann aus der
dem Erlernen von Objekten und Klassen den Vor-
                                                                Möglichkeit schnell einfache Animationen
teil hat, dass diese Abstraktionsebene sehr früh
                                                                zu erstellen gezogen werden? Gibt es ver-
eingeübt wird.
                                                                gleichbar erfolgreiche Ansätze, wie der
Eine wirkliche fundierte Untersuchung zeigt sich                Einsatz von kleinen Robotern?
als schwierig, da hier mehrere Herausforderungen            •   Welche Bedeutung hat die Auswahl von
der empirischen Sozialforschung zusammenkom-
                                                                Entwicklungsumgebungen?
men, um mögliche Hypothesen überprüfen zu
können. Oftmals haben Studierende bereits Kennt-            •   Wie sieht eine kontinuierliche Integration
nisse der Programmierung aus der Schule oder                    der Programmierausbildung in die weite-
haben sich diese teilweise selbst beigebracht. Dabei            ren Lehrveranstaltungen der ersten Semes-
zeigt sich immer wieder, dass die Programmier-                  ter aus? Ist es z. B. sinnvoll parallel eine
ausbildung in den Schulen ein extremst unter-                   weitere Sprache wie JavaScript in einer Ein-
schiedliches Niveau hat. Häufiger sind Fälle zu                 führung zur Web-Technologie zu lehren?




   56                                                           A. Spillner, H. Lichter (Hrsg.): SEUH 13
    •   Welche Bedeutung hat das Engagement der       [Bra08] J. Brauer, Grundkurs Smalltalk - Objektori-
        Lehrenden? Ketzerisch formuliert, sind die        entierung von Anfang an: Eine Einführung in
        vorherigen Fragen nachrangig, wenn das            die Programmierung, 3. Auflage, Vie-
        echte Bemühen die Programmierung näher            weg+Teubner, Wiesbaden, 2009
        zu bringen, deutlich wird?                    [Far12] J. Farell, Java Programming, 6. Auflage,
Zusammengefasst wird die Suche nach dem richti-           Course Technology, Cengage Learning, USA,
gen Weg in der Programmierausbildung sicherlich           2012
wie in der Vergangenheit auch, zu mehrfach neu        [Fla08] D. Flanagan, The Ruby Programming Lan-
gefundenen und dann auch wieder konsequent                guage, O’Reilly, USA, 2008
verworfenen Wegen führen.
                                                      [HMG11] C. Heinisch, F. Müller-Hofmann, J. Goll,
Der Autor dankt Dr. Cheryl Kleuker und Prof. Dr.         Java als erste Programmiersprache, 6. Auflage,
Frank Thiesing für die Diskussion und Kommentie-         Vieweg+Teubner, Wiesbaden, 2011
rung einer Vorversion dieses Artikels.
                                                      [HSRM10] Hochschule RheinMain, Modulhand-
                                                         buch Angewandte Informatik, 2010
Literatur
                                                      [Jad06] M. C. Jadud, An Exploration of Novice
Web-Seiten vom Stand 1.11.2012 betrachtet.
                                                          Compilation Behaviour in BlueJ, PhD Thesis
[@Blu] BlueJ, http://www.bluej.org/                       University           of       Kent,        2006
[@Ecl] Eclipse, http://www.eclipse.org/                   (http://kar.kent.ac.uk/14615/1/An_Exploration_
                                                          of_Novice_Compilation_Behaviour_in_BlueJ.p
[@Gre] Greenfoot, http://www.greenfoot.org/door
                                                          df )
[@Int] Interaktionsbrett, http://home.edvsz.hs-
                                                      [Kle12]     S.  Kleuker,   Technischer     Bericht,
    osnab-
                                                          http://home.edvsz.hs-
    rueck.de/skleuker/querschnittlich/Interaktionsb
                                                          osnab-
    rettMID/index.html
                                                          rueck.de/skleuker/querschnittlich/BlueJUserMa
[@Kara] Programmieren lernen mit Kara,                    nualMID.pdf
   http://www.swisseduc.ch/informatik/karatojav       [KS12] P. Kinnunen, B. Simon, My program is ok –
   a/index.html
                                                         am I? Computing freshmen's experiences of
[@Karo] Java Karol,                                      doing programming assignments, Computer
   http://www.schule.bayern.de/karol/jdownload.          Science Education, 22:1, Seiten 1-28, 2012
   htm
                                                      [MFRW11] L. Ma, J. Ferguson, M. Roper, M. Wood,
[@Pro] Processing, http://processing.org/                Investigating and improving the models of
[@Scr] Scratch, http://scratch.mit.edu/                  programming concepts held by novice pro-
                                                         grammers, Computer Science Education, 21:1,
[@SDL] Simple DirectMedia Layer,
                                                         Seiten 57-80, 2011
   http://www.libsdl.org/
                                                      [RTH11] S. Ruby, D. Thomas, D. Heinemeier Hans-
[BK09] D. J. Barnes , M. Kölling, Java lernen mit
                                                         son, Agile Web Development with Rails, 4. Auf-
   BlueJ: Eine Einführung in die objektorientierte
                                                         lage, Pragmatic Programmers, USA, 2011
   Programmierung, 4. Auflage, Pearson Studium,
   2009                                               [SZ07] A.Schmolitzky, H. Züllighoven, Einführung
                                                         in die Softwareentwicklung - Softwaretechnik
[Boe07] J. Boerstler, Objektorientiertes Program-
                                                         trotz Objektorientierung? In: A. Zeller and M.
   mieren - Machen wir irgendwas falsch?, Didak-
                                                         Deininger (Hrsg.), Software Engineering im
   tik der Informatik in Theorie und Praxis 2007,
                                                         Unterricht der Hochschulen, Seiten 87-100,
   http://subs.emis.de/LNI/Proceedings/Proceedin
                                                         2007
   gs112.html, Seiten 9-20, 2007
                                                      [Ull11] C. Ullenboom, Java ist auch eine Insel, 9.
[Bol08] D. Boles, Programmieren spielend gelernt
                                                          Auflage, Galileo Computing, Bonn, 2011
    mit dem Java-Hamster-Modell, 4. Auflage,
    Vieweg+Teubner, Wiesbaden, 2008                   [Wu10] C. T. Wu, An introduction to object-
                                                         oriented programming with Java, 5. Auflage,
[Bol09] D. Boles, Threadnocchio – Einsatz von Vi-
                                                         Mc Graw Hill, USA, 2010
    sualisierungstechniken zum spielerischen Er-
    lernen der parallelen Programmierung mit Ja-
    va-Threads, in U. Jaeger, K. Schneider (Hrsg.),
    Software-Engineering im Unterricht der Hoch-
    schulen 2009, Seiten 131-144, dpunkt.verlag,
    Heidelberg, 2009




   A. Spillner, H. Lichter (Hrsg.): SEUH 13                                                        57