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