Einführung in den Java -Kurs
Dieser Kurs soll
- bei den Grundlagen anfangen,
- keine Vorkenntnisse über die Programmiersprache voraussetzen, sondern alles erklären,
- in kleinen Lernschritten mit leicht verständlichen Erklärungen und Übungen
- von den Anfangsgründen bis hin zu fortgeschrittenen Themen führen.
Kleine Programmbeispiele
Ich lese immer wieder größere Programme aus der Praxis oder Berichte über Bewerbungstests für Programmierer und verfüge selber über Erfahrungen in der Programmierung von Programmen sowohl für meinen eigenen Bedarf als auch im Auftrag Dritter. Daher weiß ich, was in der Praxis benötigt wird.
Im Kurs können wir jedoch größere Programme noch nicht behandeln, weil die meisten Kursteilnehmer damit überfordert wären. Deswegen isoliere ich einzelne Techniken aus größeren Programmen und stelle diese zunächst an kleinen Beispielen isoliert vor, damit sie für möglichst viele Teilnehmer verständlich sind.
Daher können die Kursteilnehmer sicher sein, daß alles was sie im Kurs lernen auch in der Praxis benötigt wird. Manchmal sieht man auch schon im Kurs, daß etwas, das am Anfang des Kurses vorgestellt wurde, gegen Ende des Kursus benötigt wird.
Es ist mir aber nicht immer möglich, die Frage „Wofür braucht man das?“ gut zu beantworten, da sich dies manchmal erst an Hand größerer Programm erklären läßt, die aber an der Stelle des Kurses, an der diese Frage gestellt wird noch nicht behandelt werden können.
Wenn Sie möglichst schnell in die Lage versetzt werden wollen, Ideen durch das Schreiben größerer Programme zu verwirklich, ist der beste Weg dahin, erst einmal kleine Programme zu verstehen. Denn, wenn jemand nicht in der Lage ist ein Programm mit drei Zeilen zu verstehen, warum sollte er dann ein Programm mit Hunderten von Zeilen beherrschen können?
Ein Kurs für Weiterlerner
Der Kurs richtet sich an „Weiterlerner“, also Teilnehmer, die nach dem Ende des Kurses weiterlernen, um Java schließlich einmal praktisch anzuwenden. Es hat wenig Nutzen, nur die Grundlagen zu lernen, wenn man dann nicht darauf aufbaut.
Der Kurs will nicht zum Lernen der Sprache Java motivieren, denn
- erstens weiß der Dozent gar nicht, ob es für jeden Kursteilnehmer das Richtige ist, Java zu erlernen und
- zweitens wird angenommen, daß jemand, der sich für eine Java -Grundkurs entscheidet schon ein Motiv dafür hat und sich aus einem bestimmten Grund gerade für Java entschieden hat.
Entsprechend werden auch eher Themen nach dem Kriterium ausgewählt, ob man sie braucht, wenn man Java weiterlernen oder anwenden will, nicht danach, ob sie besonders einfach verständlich sind oder Erfolgserlebnisse vermitteln.
Entsprechend ist dieser Kurs weniger geeignet, wenn es darum geht, erste Erfolgserlebnisse im Zusammenhang mit dem Programmieren zu vermitteln. Dafür wird gerade der Kurs „Python leicht gemacht“ vorbereitet.
Lesehinweise
Der solide Aufbau
Bei einem soliden Aufbau eines Kurses, werden in keiner Lektion Begriffe oder Aussagen verwendet, die erst später eingeführt werden. Umgekehrt gesagt, lernt man alle Dinge, bevor man sie braucht. Dies hat zwei wichtige Konsequenzen:
- Wenn man etwas lernt, sieht man oft noch nicht, wofür man es braucht, weil es erst später verwendet werden wird. Dies führt manchmal zu Schwierigkeiten bei der Motivation („Und wofür braucht man das?“). Die Teilnehmer können sicher sein, daß der Kurs nur solche Dinge behandelt, die man entweder später im Kurs braucht oder die man wahrscheinlich braucht, wenn man die Programmiersprache nach dem Ende des Kurses anwendet.
- Für alle Übungsaufgaben sollten zur Lösung nur solche Sprachelemente herangezogen werden, die im Kurs auch schon behandelt wurden, aber nichts, das erst später erklärt werden wird.
Diese beiden Punkte werden weiter unten noch einmal aufgegriffen und etwas ausführlicher behandelt.
Lektionen oder Abschnitte mit einem Stern »*«
In Kurzkursen werden die mit einem Stern „*“ gekennzeichneten Lektionen oder Abschnitte übersprungen.
Lektionskennzahl und Lektionsnummer
Die mit „72“ beginnenden sechsstelligen Lektionskennzahlen, wie beispielsweise „722421“, ändern sich seltener als die einen Punkt enthaltenden Lektionsnummern, wie beispielsweise „2.14.“, und sind daher besser für Notizen geeignet. Die kürzeren Lektionsnummer mit einem Punkt sind aber für die Kommunikation zu einem gegebenen Zeitpunkt besser geeignet.
Vereinfachungen
Der Kurs enthält gewisse Vereinfachungen und beschränkt sich zunächst auf eine Auswahl von Sprachelementen. Manchmal beziehen sich Aussagen auf den Kenntnisstand des Kurses an einer bestimmten Stellen, obwohl sie nicht gelten würden, wenn man vollständige Kenntnisse der Sprache zugrundelegt.
Manchmal werden an bestimmten Stellen zur Vereinfachung Regeln mitgeteilt, die nicht ganz stimmen, weil es noch Ausnahmen gibt, die aber zur Vereinfachung an dieser Stelle noch nicht erwähnt werden soll. Zur Vereinfachung wird auch nicht immer darauf hingewiesen. Oft werden die Ausnahmen dann später im Kurs mitgeteilt, wodurch solche Regeln dann korrigiert werden.
Bestimmte Möglichkeiten der Sprache werden verschwiegen, wenn sie an einer bestimmten Stelle eher verwirren würden.
Dahinter steht der Gedanke, daß ein Leser, dem der Einstieg erleichtert wird, im Laufe der weiteren Beschäftigung mit der Sprache die Ausnahmen noch kennenlernen wird. Wenn ein Leser aber gleich am Anfang durch eine zu detaillierte Wiedergabe aller Details so abgeschreckt werden würde, daß er sich nicht weiter mit dem Programmieren beschäftigt, wird er es nie lernen. Daher wird es bewußt ein Kauf genommen, daß ein fortgeschrittener Leser mit Vorkenntnissen vielleicht die eine oder andere Formulierung findet, die aus seiner Sicht nicht korrekt oder nicht vollständig ist.
Motivation
„Leute beginnen normalerweise Programmieren zu lernen, weil sie Programme schreiben wollen.
Und dann finden sie raus, daß sie eine Menge Zeug lernen müssen, bei dem die Beispiele meist sehr weit von der Art von Programm entfernt sind, das sie schreiben wollen.
Um ihre Motivation aufrechtzuerhalten kann es hilfreich sein, ihnen zu zeigen, daß das, was sie lernen, kleine Teile eines großen Puzzles sind, das es ihnen ermöglichen wird, ihre Ziele zu erreichen.
Es ist ganz natürlich für Schüler, sich zu fragen, ob das, was sie lernen, ihnen in der wirklichen Welt hilft.
Arne Vajhøj, Sun, 12 Apr 2015 22:12:31 -0400 – übersetzt von Stefan Ram
Der Kurs ist weitgehend so aufgebaut, daß Vorgriffe auf Themen, die erst später behandelt werden, vermieden werden. So kann man ohne Vorkenntnisse in kleinen Schritten lernen, weil in jeder Lektion immer nur ein neues Thema hinzugefügt wird, ohne daß dabei irgendwelche Zwischenschritte übersprungen oder als bekannt vorausgesetzt werden. Andererseits ist es bei der Vorstellung eines Themas auf diese Weise nicht immer möglich, schon Anwendungen dieses Themas zu zeigen. Deswegen wird sich der Leser manchmal die Frage stellen „Und wofür braucht man das? “. In der Regel wird dies dann entweder später im Kurs oder bei der Anwendung der Programmiersprache in der Praxis ersichtlich werden, es ist aber bei der ersten Vorstellung eines Themas manchmal tatsächlich nicht gleich zu erkennen. Der Leser kann darauf vertrauen, daß er nur Dinge lernt, die auch wichtig sind (wenn man überhaupt Java lernen will) und daß diese Dinge bei der Anwendung der Programmiersprache in der Praxis voraussichtlich auch benötigt werden werden. Viele Themen, die behandelt werden, werden aber auch schon später im selben Kurs oder in einem auf den Kurs aufbauendem Kurs behandelt, aber manchmal muß man etwas warten, bis die Stelle kommt, an der etwas verwendet wird.
Es ist auch schwierig, beim Lehren von Grundlage ständig zu erklären, wofür man diese später brauchen wird, weil dazu ständig Vorgriffe auf noch nicht Gelerntes nötig wären, die verwirrend wären und Zeit kosten würden.
Tatsächlich findet sich eher das umgekehrte Problem, nämlich, daß etwas am Anfang des Kurses nicht richtig gelernt wird und dann später dem Kurs nicht mehr gefolgt werden kann, weil benötigte und schon behandelte Grundlagen nicht bekannt sind. Vielleicht kann diese Erfahrung auch als Motivation zum Lernen der Grundlagen dienen. Falls Grundlagen fehlen, kann der Leser aber natürlich auch jederzeit im Text des Kurses noch einmal zurückkehren und diese nachlesen. In einem Kurs kann der Dozent auch zu ihnen befragt werden.
Wie Arne Vajhøj schreibt, werden im Kurs kleine Puzzlestücke vorgestellt, die ein Programmierer schließlich zu einem fertigen Programm zusammensetzen kann. Um bestimmte Programmieraufgaben anzugehen, werden aber oft schon viele Puzzlestücke benötigt. Deswegen kann das Zusammespiel der Puzzlestücke am Anfang des Kurses, wo erst wenig Puzzlestücke bekannt sind, noch nicht immer so gut gezeigt werden.
Besonders am Anfang des Kurses, in den Teilen 0 und 1 werden stark vereinfachte Programmbeispiele behandelt, bei denen es nur um das Erlernen der Grundlagen geht, aber noch nicht darum, praktisch nutzbare Ergebnisse zu erzielen. Daher brauche Sie sich zunächst noch nicht zu fragen, welchen Nutzen die vorgestellten Techniken haben. Die vorgestellten Techniken haben einen Nutzen. Aber dieser wird erst etwas später erkennbar. Um so mehr man gelernt hat, um so mehr kann man dann auch praktisch anwenden!
Persönliche Motivation
Das Erlernen einer Programmiersprache wie Java ist nicht für jeden das Richtige! Ob ein Leser Java lernen möchte, muß er selber wissen oder durch Dialoge (etwa mit Berufs- oder Studienberatern oder Menschen in einer ähnlichen Situation wie er) herausfinden. Es ist auch möglich, daß Java -Fähigkeiten in der Schule, der gewählten Ausbildung oder im gewählten Beruf verlangt werden. Dieser Kurs richtet sich an Leser, welche aus dem einen oder anderen Grunde schon entschlossen sind, Java zu erlernen oder es wenigstens einmal probieren zu wollen. Gleichzeitig kann ein Leser, der sich an Hand des Kurses eine Weile mit Java beschäftigt hat, dann auch besser beurteilen, ob ihm das Programmieren mit Java so gefällt, daß seine Beschäftigung damit fortsetzen möchte.
Übungsaufgaben
Die Übungsaufgaben können und sollen immer mit den Sprachmitteln gelöst werden, die bis zu diesem Zeitpunkt schon vorgestellt wurden – also nicht unter Vorausgriff auf Sprachelemente, die erst später behandelt werden werden.
Am Anfang und am Ende des Kurses gibt es weniger Übungsaufgaben, dazwischen sind sie oft unregelmäßig verteilt, da einfachere Dinge weniger und schwierigere Dinge mehr geübt werden müssen. Am Anfang des Kurses können noch nicht so viele Übungsaufgaben bearbeitet werden, weil zunächst erst einmal gewissen Grundlagen erlernt werden müssen. Am letzten Termin des Kurses reicht die Zeit manchmal nicht mehr für Übungen der vorgestellten Inhalte aus.
Zu den Übungsaufgaben gibt es keine schriftlichen Lösungen.
In den Kursen wird der Dozent die Lösungen der Übungsaufgaben mündlich mitteilen und manchmal auch noch etwas über die Programmiersprache erklären, das man an der Lösung einer Übungsaufgabe erkennen kann. Daher sind die Lösungen für alle Personen, die einen Kurs persönlich besuchen, zugänglich.
Weil die Übungsaufgaben für Kursbesucher ohnehin zugänglich sind, hatte es bisher noch keine Dringlichkeit, die Lösungen auch schriftlich festzuhalten. Es gab bisher noch andere, wichtigere und dringendere Aufgaben beim Erstellen des Skriptes. Deswegen gibt es derzeit keine schriftlichen Lösungen zu den Übungsaufgaben.
Falls jemand gerne Aufgaben mit Lösungen bearbeiten möchte, so gibt es dafür verschiedene Bücher, wie beispielsweise „Java 8 Das Übungsbuch: Über 200 Aufgaben mit vollständigen Lösungen“ von Elisabeth Jung. Es gibt im Web auch diverse “Java mock exams ”, welche Sammlungen von Übungsfragen und Übungsaufgaben sind, zu denen in der Regel ebenfalls Lösungen verfügbar sind.
Die Dauer des Lernens
Viele Kursteilnehmer sind überwältigt vom Umfang moderner Programmiersprachen und können sich nicht alle Details beim ersten Hören merken. Das ist ganz normal. Die meisten guten Programmierer haben längere Zeit zum Lernen benötigt als ein Kurs sie umfaßt. Falls ein Kursteilnehmer sich nicht alles merken kann, das in einem Kurs behandelt wird, dann sollte er den Kurs als Start und nicht als Ende des Erlernens der Programmiersprache ansehen und sich auch nach Ende des Kurses weiter mit dem Lernen beschäftigen (etwa durch erneutes Besuchen desselben Kurses, Besuchen anderer Kurs, Lesen von Büchern oder Bearbeiten von Übungsaufgaben).
In der Literatur findet man Aussagen, daß sich eine Programmiersprache in 2 Tagen erlernen läßt, aber auch, daß man zum Erlernen des Programmierens 10 Jahre benötigen würde.
Quellen
„Wenn Sie die Denkformen der Informatik erst einmal erfaßt haben, werden Sie eine neue Programmiersprache in 2–3 Tagen erlernen können.“ – Christoph Kreitz, Skript „Grundlagen der Informatik I ‚Programmierung‘ “, Wintersemester 1993/94
Peter Norvig bringt in “Teach Yourself Programming in Ten Years ” zum Ausdruck, daß das Erlernen des Programmierens zirka zehntausend Stunden oder zehn Jahren benötigt, in denen man sich immer wieder Programmieraufgaben stellen sollte, die gerade ein wenig jenseits der bisherigen Fähigkeiten liegen.
Wenn man an gut organisierten Unterricht bei fachlich und didaktisch qualifizierten Lehrern teilnimmt, dann kann folgende Tabelle Anhaltspunkte für die Lerndauer geben. Allerdings setzt dies voraus, daß der Lernende zu Anfang des Kurses über eine gute allgemeine Schulbildung (einschließlich sprachlicher und mathematisch-naturwissenschaftlicher Bereiche) und mindestens durchschnittliche Intelligenz sowie gute Kenntnisse in der Nutzung von Betriebssystemen und Software verfügt. Wenn diese Voraussetzungen fehlen, könnten sich die angegebenen Zeiten noch verlängern
- 36 Stunden: typische VHS-Grund- und Aufbaukurse zusammen umfassen nur etwa 3,6 % der für einen Programmierer nötigen Ausbildungsdauer
- 1000 Stunden: nach 1.000 Stunden Ausbildung, kann man als Programmierer arbeiten. Einige Anbieter bieten eine Ausbildung in diesem Umfang als „Bootcamp“ über eine Dauer von zirka sechs Monaten an
- 10000 Stunden: nach 10.000 Stunden Ausbildung ist man Experte