Freitag, 30. Mai 2014

Übersicht über sinnvolle Java-Lernquellen (OOP)

Manchmal frage ich mich, warum ausgerechnet eine Fernuni keine Videovorlesungen zur Verfügung stellt, während das an Präsenzunis mehr und mehr zum guten Ton gehört. Für Java gibt es jedenfalls eine Reihe von frei verfügbaren Vorlesungen, die sich nicht hinter professionell erstellten, kommerziellen Videotutorials zu verstecken brauchen. Da der Lehrstuhl an der Fernuni so sehr mit dem Versand der Skripten geizt - ich halte dieses zeitlich versetzte Versandschema für kontraproduktiv - habe ich den bisher verfügbaren Stoff bereits mehrmals aus unterschiedlichsten Quellen durchgearbeitet. Eine kurze Übersicht gibts in diesem Artikel.

Update 4.6.2014: Neue Lernquelle aufgenommen: [openbook] Java ist auch eine Insel

Im Wesentlichen habe ich - natürlich neben den Skripten der Fernuni - folgende Ressourcen genutzt:
  1. Video: Java 7 Video-Training, Video2Brain (kommerziell!)
  2. Vorlesung: Programmierkurs, TU Clausthal, Prof. Dr. Rausch (free)
  3. Vorlesung: Programmierkurs Java, Universität Oldenburg, Dr. Dietrich Boles (free)
  4. Vorlesung: Objektorientierte Programmierung und Modellierung, Dr. Schmolitzky, Universität Hamburg (free)
  5. Openbook: Java ist auch eine Insel, Christian Ullenboom, Galileo Computing
Es gibt noch eine Reihe weiterer kommerzieller und nicht-kommerzieller Quellen, die ich aber nicht bearbeitet habe und somit auch nicht beurteilen kann.

Nun aber zur Einzelkritik der oben genannten Videos/Vorlesungen:


@ Video2Brain Java 7 Video-Training:

Von Video2Brain habe ich bereits sehr viele Tutorials zu unterschiedlichsten Themengebieten  durchgemacht und war jedes Mal vollauf zufrieden. Deshalb griff ich neben der obligaten Bearbeitung der Skripten zum Java 7 Video-Training als wichtigste sekundäre Lernquelle. Michael Kulla ist augenscheinlich ein erfahrener Java-Trainer, hält wohl auch im echten Leben viele Vorträge und weiß deshalb, wo die Knackpunkte liegen. Die Videos sind sowohl von der Präsentation her, aber auch in den Bereichen Didaktik und Rhetorik des Vortragenden top. Die Sachverhalte werden ziemlich kompakt, aber sehr schlüssig und natürlich immer anhand von Beispielen erklärt.

Im Vergleich zu den Skripten kommen mir die V2B-Videos eine Spur strukturierter und praxisbezogener vor, jedenfalls verliert sich Kulla nicht in Mini-Details, sondern versucht die großen Zusammenhänge herauszuarbeiten. Auch sind die Beipiele immer sehr überschaubar gehalten. Letzeres ist auch mein Hauptkritikpunkt an den Uni-Skripten: Das Blumenladen-Beispiel, das sich durch die Lerneinheiten zieht und dann immer wieder ergänzt wird, ist mir persönlich zu unübersichtlich, da meist zu lang und auf mehrere Seiten verteilt. Ansonsten sind die Skripten sehr gut.

Zum Stoffumfang der V2B-Videos im Vergleich zu den Skripten bleibt zu sagen, dass im Prinzip alle Themengebiete mit den Videos abgedeckt werden, nur der Bereich Testen/JUnit wird nicht behandelt (das ist allerdings auch bei den meisten anderen Vorlesungen der Fall). Dem Videotutorial hätte meines Erachtens ein kleines Frage-Antwort-Spiel am Ende eines jeden Kapitels ganz gut getan, so wie es auch in den Skripten gehandhabt wird. Erst so kann man wirklich auch an den Details arbeiten.


@ Programmierkurs der TU Clausthal, Prof. Dr. Rausch

Wenn ein Prof. Rausch in der Hauptstadt des alkoholfreien Biers unterrichtet, dann muss das schon allein deswegen was ganz besonderes sein. Ich finde es jedenfalls toll von der Uni (bzw. vom Lehrstuhl Rausch), dass sie diese Videos allen zur Verfügung stellt, nicht nur den TUC-Studenten. Wenn ihr allerdings auf die Übersichtsseite zu den verfügbaren Online-Vorlesungen geht, werdet ihr merken, dass dies bei den meisten anderen Videos nicht der Fall ist. Schade, da wären einige interessante Sachen dabei gewesen, insbesondere Software-Engineering hätte mich noch gereizt.

Prof. Rausch besticht in seiner Vorlesung durch seine sehr sympathische, einfache Art - mich hat er jedenfalls sofort gefesselt. Zudem finde ich es äußerst amüsant, OOP in verhochdeutschtem bayerischem Dialekt erklärt zu bekommen. Und außerdem: Endlich mal wieder ein bißchen Uniflair, wenn auch nur virtuell!

Bei der Vorlesung geht es sehr behäbig voran, was aber kein Nachteil ist. Alles wird sehr detailliert und mit universitärem Anspruch erklärt (auch die Zusammenhänge hinter den Kulissen). Zudem gibt's natürlich immer Beispiele, das gewohnte Vorgehen also. Vom Stoffumfang und der Stofftiefe her überlappen  sich die Uniskripten und die Vorlesung sehr stark, nur das Testen fehlt auch hier. Im Laufe der weiteren Vorlesung geht der Stoff dann über unseren Anspruch hinaus, die letzten Videos sind also grundsätzlich nicht mehr notwendig (aber trotzdem interessant).

Bei Prof. Rausch scheint es leider Usus zu sein, dass er persönlich nur die ersten paar Vorlesungen hält und sich dann von seinen Mitarbeitern vertreten lässt. Es gibt die komplette Vorlesungsreihe derzeit aus dem SS2013 und eine aktuell laufende Vorlesungsreihe aus dem SS2014 online. Ich habe ursprünglich mit den Vorlesungen aus dem SS2014 begonnen, aber als Rausch aufhörte und sein Tutor weitermachte, bin ich auf die Vorlesungen aus dem SS2013 umgeschwenkt - denn auch bei den Tutoren gibt es Unterschiede. Der Vortragende aus 2013, Dr. Herold, war jedenfalls didaktisch und rethorisch wesentlich besser unterwegs als der sichtlich nervöse Kollege aus dem aktuellen Sommersemester (was aber kein Vorwurf ist...ich könnte das wohl auch nicht besser; ist eben nicht jedermanns Sache).

Nachdem diese Vorlesung bereits die dritte Lernquelle für mich darstellte, waren mir natürlich viele Dinge schon mehr als bekannt. Deshalb hätte ich die Videos gerne etwas schneller abgespielt, was aber online nicht möglich war. Ich habe die Streams (es sind zwei: eins mit dem Vortragenden, eins mit Folien/Display) dann runtergeladen und mit dem VLC-Player in 1,5facher Geschwindigkeit abgespielt. Prinzipiell ist bei beiden Streams immer auch Audio dabei, d.h. man könnte sich eigentlich nur den Folien-Stream ansehen und würde nichts verpassen. Ich sehe aber auch gern den Vortragenden, damit das Ganze ein wenig plastischer wird. Mit dem VLC-Player lassen sich zwei Videos bequem synchron abspielen (und auch synchron in der Abspielgeschwindigkeit ändern). Dazu schreibe ich vielleicht noch ein kurzes Tutorial, diese Optionen sind nämlich relativ versteckt.


@ Programmierkurs Java der Universität Oldenburg, Dr. Dietrich Boles

Dieser Kurs erinnert mehr an ein semiprofessionelles Lehrvideo im Sinne von Video2Brain, als an eine Vorlesungsreihe der Uni. Zum Aufbau zitiere ich am besten direkt die Kursseite:

Der erste Teil des Programmierkurs Java befasst sich mit den imperativen Programmierkonzepten von Java für das "Programmieren im Kleinen", wie Typen, Variablen, Anweisungen und Funktionen.

Im zweiten Teil werden weitergehende objektorientierte Konzepte von Java, wie die Klassendefinition, Interfaces und Vererbungsmechanismen, vermittelt, die es erlauben, große, strukturierte, wiederverwendbare und erweiterbare Programmsysteme zu entwickeln.

Die Vorlesungen greifen zum Teil auf das Java-Hamster-Modell zurück, ein einfaches aber mächtiges didaktisches Modell, mit dessen Hilfe Grundkonzepte der Programmierung auf spielerische Art und Weise erlernt werden können.
Dr. Boles verwendet in seiner Vorlesung ein etwas anderes Konzept, nämlich das oben genannte Hamster-Modell. Ehrlicherweise muss ich gestehen, dass ich mich damit nicht näher befasst, sondern  mich nur punktuell mit bisher noch unklaren Themen auseinandergesetzt habe. Das hatte mehrere Gründe: Erstens habe ich bereits mehr als genug Quellen bearbeitet und zweitens brüllt der Boles dermaßen mit seiner etwas schrillen Stimme ins Mikro, dass mir das auf Dauer zu anstrengend wurde. Trotzdem muss ich auch hier ein großes Danke an den Urheber aussprechen - es ist nicht selbstverständlich, das alles "gratis" zur Verfügung zu stellen!

Ein großer Vorteil der Videos ist, dass sie sehr gut strukturiert und dokumentiert sind. Man kann innerhalb der meist ein- bis eineinhalbstündigen Vorträge mittels des Menüs zu beliebigen Unterthemen switchen, ohne lange suchen zu müssen - das ist vor allem bei spezifischen Fragen sehr hilfreich! Zudem gibt es wirklich sehr, sehr viele Beispiele - wohl die meisten der bisher genannten Quellen -, die einen Großeil aller Eventualitäten abdecken. Aber auch hier gilt: Testen? JUnit.TestCase? Fehlanzeige! Nicht, dass das so schwer wäre, aber als alter Jäger und Sammler muss meine Videothek einfach komplett werden.

Sollte man die Videos runterladen wollen, muss man das übrigens nicht umständlich über einen Streamloader machen, sondern kann bequem die zip.-Files mit der gesamten Vorlesungsreihe ziehen.


@ Objektorientierte Programmierung und Modellierung der Universität Hamburg, Dr. Schmolitzky

Diese Vorlesung fand ich nicht besonders prickelnd, zumal der Vortragende bzw. die Vortragenden ziemlich emotionslos rüberkommen. Auch die Aufbereitung und Präsentation des Stoffes habe ich schon besser gesehen (s.o.). Dafür - und deswegen erwähne ich die Vorlesung hier überhaupt - gibts aber endlich auch mal ein Worte zum Testen. Außerdem kommen noch andere spannende Themen vor, wie etwa Modellierung, Entwurfsmuster oder agile Softwareentwicklung. Es lohnt sich also durchaus, in einer freien Minute auch mal einen Blick in diese Bereiche zu riskieren. Als primäre Lernquelle würde ich mir diese Vorlesungsreihe allerdings nicht antun.


@ Java ist auch eine Insel, Galileo Computing

Wofür ich dieses Buch benutze, werde ich gleich erläutern. Wichtiger ist es aber zu wissen, wofür man es nicht benutzen sollte - und das bringt das offizielle Vorwort am besten rüber:
Dieses Buch darf nicht als Programmierbuch für Anfänger verstanden werden. Wer noch nie programmiert hat und mit dem Wort »Übersetzen« in erster Linie Dolmetschen verbindet, der sollte besser ein anderes Tutorial bevorzugen oder parallel lesen. Viele Bereiche aus dem Leben eines Industrieprogrammierers behandelt »die Insel« bis zu einer allgemein verständlichen Tiefe, doch sie ersetzt nicht die Java Language Specification.
Genau so sehe ich das auch. Zum Lernen eignet sich das Buch nicht wirklich, dafür umso mehr, um bei spezifischen Fragen ein kompetentes Nachschlagewerk zur Hand zu haben. Ich zitiere weiter aus dem Vorwort:
[..]Ich sehe die Insel als ein sehr facettenreiches Java-Buch für die ambitionierten Entwickler an, die hinter die Kulissen schauen wollen. Ihr Detailgrad wird in dieser Breite von keinem anderen (mir bekannten) deutsch- oder englischsprachigen Buch erreicht.
Auch das kann ich unterstreichen. Bei Detailfragen, beispielsweise bei den doch sehr kniffeligen Übungsaufgaben der Fernuni, konnte ich vom Inselwissen schon häufiger profitieren. Vor allem muss man nicht erst mühsam im Video eine bestimmte Stelle suchen ("irgendwo hat er das doch schon mal erwähnt"), sondern kann bequem per Volltextsuche reinklotzen. Die Uni-Skripten sind mir in manchen Belangen einfach zu "förmlich", weshalb mir eine zusätzliche Lesequelle nur recht kommt.

Etwas versteckt findet man das Buch, die Aufgaben und die Programme auch zum download (siehe linkes Menü am Ende des Inhaltsverzeichnisses).

Die Fortsetzung der Java-Insel gibt es übrigens auch als obenbook online: Java ist mehr als eine Insel.

Für beide Bücher gibt es zudem noch Online-Aufgaben.

Kommentare:

  1. Danke dir, geniale Zusammenstellung!!! Dein Blog ist sowieso spitze.

    AntwortenLöschen
    Antworten
    1. Hallo,

      danke für die Blumen. Lernst du auch gerade OOP? Welche Lernquellen benutzt du?

      MfG
      Markus

      Löschen
  2. Hallo,

    danke, die Tipps sind wirklich klasse! Vor allem die Vorlesung von Prof. Rausch sagt mir sehr zu ... nur: wie hast du's geschafft die in VLC zu streamen? Ich hab zwar den rtmp Server (?) herausbekommen, bin aber irgendwie zu doof rtmpdump zu benutzen. Vielleicht bin ich's auch ganz falsch angegangen ... ? Und ja, ich hab auch gegoogelt, ganz viel, aber irgendwie ...

    AntwortenLöschen
    Antworten
    1. Hallo,

      ich streame die Videos mit dem Replay Media Catcher (kostenpflichtig, 40€). Der überwacht im Hintergund und saugt dann los, sobald irgendwo im Browser ein Stream gestartet wird. Das sollte wohl auch mit dem orbitdownloader (free) oder anderen Streamloadern funktionieren, habe ich aber nicht versucht.

      MfG
      Markus

      Löschen
  3. Ein guter Tipp für die OOP-Klausur, wenn man nur noch wenige Wochen Zeit hat ist Java von Kof bis Fuß (deckt etwa 90% der typischen Klausurfragen ab, Rest die letzten beide KEs und Enumerations). Fürs ProPra ist dann auf jeden Fall MVC wichtig (auch gut erklärt in Entwurfsmuster von Kopf bis Fuß)

    AntwortenLöschen
    Antworten
    1. Hallo.

      Danke für deinen Hinweis.

      Java von Kopf bis Fuß hatte ich anfang des Semesters mal auf dem Plan, aber die aktuellste Auflage behandelt gerade mal Java v5, das war mir dann doch ein wenig zu antiquiert. Wieviele relevante Änderungen es seit v5 zu aktuell v8 gab, kann ich schwer beurteilen, aber im Zweifelsfall halte ich mich doch lieber an aktuellere Literatur.

      Was sind ProPra und MVC?

      MfG
      Markus

      Löschen