Zum Inhalt springen

kurtchen

Communitymitglied
  • Gesamte Inhalte

    879
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von kurtchen

  1. Das Modul "Mathematik für Informatiker" ist das zweite von insgesamt 4 Mathematik-Modulen im Studiengang "Web- und Medieninformatik". Die Studierenden im Studiengang "Wirtschaftsinformatik" belegen ein Mathematik-Modul weniger. Aber dieses Modul ist auch für sie verpflichtend. Im Jargon der Studierenden heißt dieses Modul einfach Mathe2. Nachdem in Mathe1 mit Logik, Mengenlehre, Relationen, Graphentheorie, Abbildungen und algebraischen Strukturen eine mathematische Grundlage vermittelt wurde, geht es in diesem Kurs um die klassischen Themen Analysis und Lineare Algebra, die wohl Teil von jedes Informatik-Studiums sein dürften. Dazu verwendet der Kurs zwei Lehrbücher von Professor Burkhard Lenze (FH Dortmund). Das Modul zerfällt in zwei Online-Kurse. Das heißt, man muss hier zwei Online-Tests bestehen und darf zwei Online-Klausuren schreiben. In der Präsenzprüfung wird das Wissen beider Kurse mit ziemlich gleicher Gewichtung abgeprüft. Keine Angst vor Mathe2 Wenn ich mich unter meinen Kommillitonen umhöre, gewinne ich den Eindruck, dass speziell dieses Modul den meisten Studierenden Sorgen bereitet. Im Vorfeld ist Mathe2 ein Modul, vor dem viele Angst haben. Diejenigen, die es gerade belegen, klagen oft darüber, dass sie hier viel mehr Zeit investieren als in andere Module. Und diejenigen, die es hinter sich haben, sind in der Regel erleichtert, es geschafft zu haben. Aus Sicht vieler Studierender und mancher Dozenten sollte man Mathe2 zügig angehen, weil das Projekt Studium an genau diesem Modul scheitern könnte. Die gute Nachricht: Mathe2 ist machbar. Die beiden Lehrbücher von Herr Lenze sind recht kompakt geschrieben, enthalten aber im Vergleich zu vielen anderen Lehrbüchern nicht allein Beweise sondern viele gerechnete Beispiele. Mathe2 ist ein Kurs auf FH-Niveau. Im Gegensatz zur Mathematik an der Uni geht es nicht allein um Beweise sondern um angewendungsbezogenes Rechnen. Mathe2 legt damit eine Grundlage für Mathe3 "Angewandte Mathematik". Wie der Name vermuten lässt, ist speziell Mathe3 für einen Mathe-Kurs schon wieder recht praxisbezogen und ein klarer Bezug zur Informatik ist erkennbar. Also beißt euch durch Mathe2. Danach wird es schon wieder besser. Nutzt das Tutorium am Präsenztag Die W3L unterstützt die Studierenden in diesem Modul mit einem Tutorium, dass an den Präsenztagen angeboten wird. Ich habe mich im Vorfeld gefragt, was es denn nutzen kann, wenn in zwei mal zwei Stunden der Stoff von Analysis und linearer Algebra im Schweinsgalopp durchlaufen wird. Nachdem ich an solch einem Tutorium teilgenommen habe, weiß ich, es bringt etwas. Nicht weil man in dieser knappen Zeit den Stoff vermitteln könnte. Das kann man nicht. Den wird man sich schon selbst gründlich erarbeiten müssen. Schon eher, weil die Studierenden dazu aufgefordert werden, ihre Probleme mitzubringen, die sich bei der Bearbeitung des Moduls ergeben haben. Die Tutoren gehen flexibel darauf ein. Leider wurde diese Möglichkeit in dem Tutorium, das ich besucht habe, kaum genutzt. Ich selber konnte sie nicht nutzen, weil ich noch gar nicht angefangen hatte, das Modul zu bearbeiten. Ich vermute, dass es anderen Studierenden ebenso ging. Ideal wäre natürlich, wenn man vor dem Präsenztag ein gutes Stück aus beiden Themenbereichen bearbeitet hätte, um sich dann gezielt bei seinen Problemen weiterhelfen zu lassen. Warum hat mir das Tutorium trotzdem eine Menge gebracht? Weil wir gute Tipps bekommen haben, wie wir unseren Lernprozess und - in Mathe2 noch wichtiger - unseren Übungsprozess organisieren können. Für Menschen, die mathematisch sehr begabt sind, mag es reichen, Konzepte verstanden zu haben. Die meisten von uns müssen üben, üben, üben. Und merken erst dann, wie viel (oder wie wenig) sie verstanden haben. Außerdem wurde uns auch ein wenig "Klausurstrategie" vermittelt. Wie denkt ein Prüfer, der checken möchte, ob wir etwas verstanden haben. Wie kann man sich zumindest einen Grundstock an Punkten sichern, auch wenn man nicht den gesamten Stoff im Schlaf beherrscht. Für viele Studierende, die in diesem Modul keine Glanzleistung vollbringen sondern einfach bestehen möchten, können solche Tipps sehr nützlich sein. Last but not least erhält man Hinweise, welche Teile der Schulmathematik, die nicht explizit im Kurs behandelt werden, man sich besser noch einmal anschauen sollte. Ich hätte zum Beispiel Stein und Bein geschworen, dass ich natürlich in der Lage bin, quadratische Gleichungen mit der pq-Formel zu lösen. Und das mir selbstverständlich alle wichtigen Potenz-, Wurzel- und Logarithmengesetze bekannt sind. Bis ich es praktisch ausprobiert habe und feststellen musste: So richtig sicher sitzt das nicht mehr. Besser noch mal ÜBEN. Mathe2: Die Inhalte Um diese Selbsterkenntnis reicher begann ich nun nach dem Tutorium mit der Bearbeitung des Moduls, für das ich deutlich mehr Zeit eingeplant hatte, als für andere Module. Es wird empfohlen, erst Analysis und dann lineare Algebra zu bearbeiten. Ich habe mit linearer Algebra angefangen, weil mir da mein Schulwissen aus Abiturzeiten noch geläufiger erschien und ich einen guten Start erleben wollte. Darum geht's in linearer Algebra: - Vektoren: Rechenregeln, lineare Unabhängigkeit, Skalarprodukt, Vektorprodukt Spatprodukt, die Cauchy-Schwarzsche Ungleichung und die Dreiecksungleichung. - Matrizen: Rechenregeln, Matrizenmultiplikation und einfacher Gauß-Algorithmus. - Determinanten: 2,2-Determinanten, 3,3-Determinaten und die Regel von Sarrus, n,n-Determinanten und der Laplacesche Entwicklungssatz. Geometrische Anwendungen spielen eine Rolle. - Allgemeine lineare Gleichungssysteme: Die lösen wir vor allem mit dem Gauß-Algorithmus. Wir unterscheiden homogene und inhomogene lineare Gleichungssysteme und lernen was Fundamentalsysteme sind. - Reguläre lineare Gleichungssysteme: Hier entwickeln wir den einfachen Gauß-Algorithmus weiter zum vollständigen Gauß-Algorithmus. Den sollte man für die Klausur im Schlaf können. Er ist für alle möglichen Anwendungen sehr nützlich. Weiterhin geht es um die Cramersche Regel und die erweiterte Cramersche Regel. Sie verbindet das Kapitel über Determinanten mit diesem Kapitel. Schließlich geht es um LR-Zerlegungen und QR-Zerlegungen. Und natürlich muss man wissen, wie man Matrizen invertiert. Und wie man all das nutzen kann, um lineare Gleichungssysteme effizient zu lösen. - Geraden und Ebenen: Hier kommen nun geometrische Anwendungsmöglichkeiten für das Wissen, das man sich bis hier aufgebaut hat. - Komplexe Zahlen: Darstellungsformen, Rechenregeln, Polynomfaktorisierung - Eigenwerte und Eigenvektoren - Spezielle quadratische Matrizen: Diagonalähnliche Matrizen, symmetrische und hermitesche Matrizen, orthogonale und unitäre Matrizen. - Transformationen: Hier geht es um verschiedene Abbildungen, die man mit Matrizen, realisieren kann. Man beginnt mit der kartesischen und baryzentrischen Transformation, arbeitet weiter mit Parallel- und Zentralprojektionen und endet irgendwann bei Fourier- und Haar-Wavelet-Transformationen. Und in Analysis geht es um: - Wiederholung der vollständigen Induktion - Funktionen: Neu sind hier die parametrisierten ebenen Kurven, die ganzrationalen und die gebrochenrationalen Bezierkurven. Die kannte ich aus Schulzeiten noch nicht. (An dieser Stelle ein Hinweise: Die Bezierkurven sind nicht klausurrelevant. Aber in Mathe3 spielen sie eine große Rolle. Darum diesen Teil NICHT überspringen.) - Folgen und Reihen: Hier geht es darum Grenzwerte für Folgen zu berechnen, was viele aus Schulzeiten kennen dürften. Und Konvergenzkriterien für Reihen anzuwenden, was schon schwieriger ist. - Transzendente Funktionen: Diese werden auf verschiedene Eigenschaften hin untersucht. Verschafft einem einen guten Überblick und frischt vieles vergessene aus Schulzeiten noch mal auf. - Rechenregeln für stetige Funktionen - Differenzierbare Funktionen: Hier geht es um Rechenregeln für differenzierbare Funktionen und deren Anwendung zur Extremwertbestimmung. Das kennen wohl die meisten aus der Schule. (Ferner geht es um kardinale kubische B-Splines, ganzrationale B-Spline-Kurven und gebrochenrationale B-Spline-Kurven. Zum Glück nicht klausurrelevant.) - Integrierbare Funktionen: Hauptsatz der Differential und Integralrechnung, Rechenregeln für integrierbare Funktionen, Längen-, Flächen- und Volumenberechnung. Eine Herausforderung für mich waren die Techniken der partiellen Integration und der Integration durch Substitution. Beides hatte ich in der Schule gelernt, aber leider wieder vergessen. Da war viel Übung nötig, um das wieder flüssig zu können. Diejenigen unter euch, deren Abitur noch nicht so lange her ist und die damals stark in Mathe waren, dürfen sich nun ein bisschen freuen. Ihr dürftet einige Themen wiedererkennen und habt einen Startvorteil. An manchen Stellen im Kurs gibt es kleine Anwendungsbeispiele aus der Informatik (in Java). Das ist interessant, aber nicht prüfungsrelevant. PDF-Tools: Die Geheimwaffe Die Beweise in den Lehrbüchern habe ich nicht immer nachvollziehen zu können. Die Stärke dieser Module sind aber nicht die Lehrbücher. Herr Lenze liefert PDF-Tools mit, die man sich runterladen kann. Ein PDF-Tool ist eine Seite mit einer Übungsaufgabe eines bestimmten Typs, z.B. invertieren einer Matrix, knacken eines Integrals und solche Dinge. Im PDF stehen aber keine konkreten Werte sondern eine allgemeine Formel mit verschiedenen Parametern. Ein Knopfdruck generiert dann die Werte und zeigt sie in einer Alert-Box: a=7.4, b=sin(33), c=ln(9) usw. Diese Parameter setzt man für die Variablen ein und hat nun seine konkrete Übungsaufgabe. Ist man fertig, kann man durch Druck auf einen weiteren Knopf die Lösung sehen. Manchmal werden hier auch noch Zwischenergebnisse angezeigt, so dass man nachvollziehen kann, wo es gehakt hat. Mit diesen Tools kann man üben, bis man merkt, dass man richtig sicher ist. Herr Lenze empfiehlt, wirklich auf Tempo zu üben, denn in der Klausur muss man schnell sein. Übrigens: In der Klausur darf man keinen Taschenrechner benutzen. Das hat mich überrascht, weil ich es aus Schulzeiten anders kannte. Die Werte in den Aufgaben sind so gewählt, dass man auch keinen braucht. Aber wer schon ewig nicht mehr im Kopf oder mit Stift und Papier gerechnet hat, sollte das üben. Also: PDF-Tool öffen, Aufgaben generieren, Bleistift spitzen und los. Ich habe mich oft geärgert, weil ich einen Aufgabentyp grundsätzlich konnte, aber blöde Vorzeichenfehler gemacht habe. Gerade bei den Aufgaben in der linearen Algebra ziehen sich Fehler schön durch. Da muss man eine gewisse Sorgfalt lernen. Die Hinweise im Forum nutzen Damit komme ich zu einen wichtigen Grund, warum jeder Studierende eine realistische Chance hat, dieses Modul erfolgreich abzuschließen. Für die Präsenzklausur ist NICHT der gesamte Stoff des Moduls relevant. Ein Beispiel: In der Präsenzklausur kann verlangt werden, die LR-Zerlegung einer Matrix zu finden, aber nicht die QR-Zerlegung. Was genau klausurrelevant ist und was nicht, veröffentlicht Herr Lenze im Forum zum Kurs. Da in den Foren oft wenig los ist, hatte ich dort anfangs gar nicht reingeschaut, bis mich Herr Lenze, ausdrücklich darauf hinwies. Also schaut ins Forum und nutzt die dort gegebenen Hinweise. Aber Vorsicht! In der Online-Klausur können mehr Themen drankommen. Und beim Online-Test, dessen Bestehen ja Voraussetzung dafür ist, überhaupt zur Klausur zugelassen zu werden, kann ALLES abgeprüft werden. Wer sich also möglichst viele Bonuspunkte erarbeiten will, um etwas gelassener in die Präsenzklausur zu gehen, der muss sich schon mit dem gesamten Stoff auseinander setzen. Wer einfach nur bestehen möchte, kann zuschauen, dass er für die Klausur die im Forum genannten Themen intensiv vorbereitet. Er hat dann auch ohne Bonuspunktepolster eine gute Chance, das Modul abzuschließen. Die Betreuung durch Herrn Lenze war sehr gut. Das Feedback zu Einsendeaufgaben war unheimlich schnell. Auch auf Fragen reagierte er meist innerhalb von 24 Stunden und seine Hinweise haben mir immer weitergeholfen. Die Klausur In der Präsenzklausur entfielen 55 Punkte auf lineare Algebra und 45 auf Analysis. Wenn man den vollständigen Gauß-Algorithmus sicher beherrscht, kann man sich in linearer Algebra eine gewisse Punktegrundlage erarbeiten, weil man den für verschiedene Aufgabentypen braucht. Aus Gesprächen mit anderen Kommilitonen weiß ich, dass das auch in vergangenen Klausuren oft so war. In der Analysis waren bei mir die Themen breit gestreut. Partielle Integration und Integration durch Substitution sollte man üben. Tipps für die Vorbereitung Da Mathe2 für viele Studierende ein Angstfach ist, zum Schluss noch ein paar Tipps: - Lasst euch nicht verunsichern, wenn ihr in den Lehrbüchern nicht jeden Beweis im Detail nachvollziehen könnt. Konzentriert euch auf das Üben mit den PDF-Tools. - Es gibt im Kurs vergleichsweise wenige Einsendeaufgaben. Manche Studierende machen nur diese Aufgaben und wundern sich dann, wenn sie im ersten Anlauf durch die Prüfung rasseln. So ist es nicht gedacht. Die Einsendeaufgaben prüfen in Abständen, ob man im Kurs vorankommt. Sie ersetzen auf keinen Fall das Üben mit den Tools, die den gesamten Stoff abdecken. - Übt die PDF-Aufgaben ohne Taschenrechner, auch wenn es verführerisch ist, ihn zu benutzen. Nur dann bekommt ihr ein Gefühl dafür, wieviel ihr in der Klausur in welcher Zeit schaffen könnt. Es ist gut möglich, dass ihr eine taktische Entscheidung treffen müsst, ob ihr in der verbliebenen Zeit noch diese ohne jene Aufgabe versuchen wollt. Da braucht ihr ein Bauchgefühl dafür, was lange dauert und was schneller zu schaffen ist. - Ich habe verschiedene Tools genutzt, die nicht zum Kurs gehörten. Zunächst mal einen Funktionenplotter. Die gibt es als Desktopanwendungen, aber ich habe mit einer Online-Version gearbeitet. Da kann man eine Funktionsvorschrift eingeben, sich die Kurve plotten lassen, auch Ableitungen und Integrale. Das kann natürlich nicht das eigene Arbeiten ersetzen. Aber man kann so gut vergleichen, ob die eigenen Ableitungen und Integrale stimmen. Oder Teillösungen. Oder eine Idee entwicklen, was man falsch gemacht hat. - Außerdem gibt es Online-Tools, um Funktionen zu differenzieren und integrieren. Manche von denen können einem einen kompletten Rechenweg anzeigen. Das hilft ebenfalls, eigene Fehler nachzuvollziehen. Mir hat das sehr geholfen, bei der partiellen Integration und der Integration durch Substitution, eine gewisse Routine zu entwickeln. Bei der partiellen Integration muss man sich entscheiden: Was ist mein u? was ist mein v? Wenn man sich hier falsch entscheidet, muss man wieder von vorne anfangen, was Zeit kostet. Ebenso bei der Substitution: Was substituiere ich? Und überhaupt: Substituiere ich oder nutze ich partielle Integration? Bei manchen Aufgaben sieht man nicht sofort, was sich anbietet. Dafür bekommt man ein Gefühl, wenn man viele Beispiele gesehen hat. Und dabei helfen solche Online-Tools. Aber nicht das Tool die ganze Arbeit machen lassen, sondern aktiv mitarbeiten, möglichst viel selber machen und dann Schritt für Schritt durchgehen, wo es gehakt hat. - Ebenso gibt es tolle Online-Tools für die Themen der linearen Algebra. Das hat mir besonders beim Lösen von Gleichungssystemen und umfangreicheren Rechnungen mit Matrizen und Determinanten geholfen. Hier hat man oft sehr viele einfache Rechenoperationen, die aufeinander aufbauen. Ein dummer Vorzeichenfehler am Anfang und man produziert in der Folge nur noch Mist. Dank der Tools konnte ich meine eigenen Fehlerquellen identifizieren (bei mir vor allem Vorzeichenwechsel) und dann genau darauf verstärkt achten. - Laut Studienbüro liegt die Durchfallquote in diesem Modul beim ersten Anlauf bei 20-25%. Man sollte sich nicht entmutigen lassen, wenn man dazu gehört. Ich habe mehrere Kommillitonen kennengelernt, die Mathe-Module wiederholen mussten und in zweiten Anlauf geschafft haben, was beim ersten mal nicht klappte. Fazit Die lineare Algebra hat mir richtig Spaß gemacht. Analysis musste sein, aber da bin ich froh, dass es jetzt vorbei ist. Ich habe noch nicht das Ergebnis der Klausur, aber ich bin mir ziemlich sicher, dass ich sie nicht noch einmal schreiben muss. Mathe2 ist machbar. Nachtrag: Das Ergebnis Heute habe ich das Ergebnis zu Mathe2 erhalten. 88 von 100 Punkten in der Präsenzklausur. Das wäre eine 1,7, aber da die Online-Tests und die Online-Klausuren ziemlich gut gelaufen waren, konnte ich mit Bonuspunkten über die magische Schwelle von 95 Punkten kommen. So ist es am Ende eine glatte 1 geworden. Ich freue mich sehr, weil ich in Mathe2 wirklich eine Menge Arbeit gesteckt habe. Bloß nicht aufgeben in Mathe! Das war auch an den Präsenztagen immer wieder Thema: Es gibt zwar nur wenige Leute, denen Mathe auf Anhieb leicht fällt. Aber mit Übung wird vieles erreichbar, was am Anfang unmöglich erscheint. Also packt's an!
  2. Soweit ich das verstanden habe, bleibt die Bezeichnung W3L Akademie NICHT erhalten. Der Hauptgeschäftsbereich der W3L ist ja das Softwarehaus und das wird es auch weiter unter diesem Namen geben. Ein bisschen schade finde ich die Übernahme schon. Die W3L Akademie ist ein netter, kleiner, übersichtlicher Laden mit kurzen Wegen, persönlichen Kontakten. So etwas mag ich gerne. Leider kann ich die Ausführungen von Herrn Zwintzscher zur Konkurrenz mit größeren Anbietern nur zu gut nachvollziehen. Das Angebot der W3L ist offensichtlich wenig bekannt. Anscheinend reicht es nicht, ein gutes Studienangebot zu machen. Man muss es aktiv bewerben. Und das Wetteifern um Aufmerksamkeit kostet Geld. Da die Mitarbeiter und Dozenten bleiben, hoffe ich, dass für mich als Studierenden alles beim Alten bleibt. Und das das, was ich an der W3L schätze, auch unter Springer Campus weiterlebt.
  3. Am Präsenztag der W3L Akademie am 24.09.2016 informierte Dr. Olaf Zwintzscher aus dem Vorstand der W3L AG über die bevorstehende Übernahme der W3L Akademie durch Springer Campus. Als Studierender im Studiengang Web- und Medieninformatik habe ich am Präsenztag teilgenommen. Ich habe mich bemüht, seine Ausführungen zu protokollieren, um sie an dieser Stelle zu teilen. Laut Herrn Zwintzscher unterliegt der Fernstudienmarkt in Deutschland einer starken Konkurrenz. Es gibt Player, die breiter als die W3L aufgestellt sind. Die W3L Akademie bietet bislang nur 2 Studiengänge an - Web- und Medieninformatik sowie Wirtschaftsinformatik. Andere Anbieter können ein deutlich breiteres Angebot machen, haben insgesamt mehr Studierende und ein größeres Finanzvolumen. Damit haben Sie auch die Möglichkeit, Werbung im öffentlichen Raum zu platzieren, z.B. auf U-Bahnen, Plakatwänden, in Zeitschriften. So etwas wäre für die W3L Akademie zu teuer. Da sie eine kleinere Zielgruppe anspricht, wäre es auch ineffektiv. Im Marketing der eigenen Studiengänge kann die W3L mit größeren Anbietern nicht mithalten. Aus diesem Grunde war die W3L schon längere Zeit auf die Suche nach Kooperationspartnern. Dabei hoffte man zunächst auf Firmen, die Angebote der W3L für die Weiterbildung ihrer Mitarbeiter nutzen wollten. Nachdem dies nicht aufging, suchte man auch nach Partnern, die das bestehende Konzept weiterführen wollten. Es gab schon längere Zeit eine Zusammenarbeit zwischen der W3L Akademie und dem Springer Verlag. Zum Beispiel verlegt Springer die Lehrbücher zur Softwaretechnik von Herrn Balzert, der die W3L Akademie aufgebaut hat. Diese Lehrbücher werden auch in den Softwaretechnik-Modulen der W3L verwendet. Springer bietet mit Springer Campus eigene Fernstudiengänge in Biologie, Chemie und Elektrotechnik an. Sie fanden das Studienangebot der W3L gut, wollten aber keine Kooperation sondern kaufen. Die W3L hat sich entschieden, ihr Angebot an Springer Campus abzugeben, weil andere mögliche Partner das bestehende Konzept ändern wollten. Mit Springer soll das nicht passieren. Die Ansprechpartner für die Studierenden im Studienbüro bleiben die gleichen. Sie wechseln zu Springer Campus. Auch die Dozenten sollen die gleichen bleiben, was auch Herrn Zwintzscher selbst einschließt. Erhalten bleiben soll ferner der Standort Dortmund. Springer Campus wird die bestehende Kooperation mit der FH Dortmund fortsetzen, die auch in Zukunft die Bachelor-Abschlüsse verleiht. Laut Herrn Zwintzscher war dies sowohl für die W3L als auch für Springer wichtig. Mit der Übernahme durch Springer verbinden sich verschiedene Hoffnungen: - Möglichkeiten für besseres Marketing, weil Springer größer ist als die mittelständische W3L. - Weil Springer in der Wirtschaft gut vernetzt ist, könnte es ihnen gelingen, Kooperationen mit Firmenkunden aufzubauen. - Mehr Studierende in den beiden Studiengängen. - Wenn dies aufginge, könnte es auch mehr Prüfungsstandorte geben. - Das Studienangebot könnte schließlich erweitert werden, z.B. um einen Masterstudiengang (sobald es genügend Bachelor-Absolventen gibt). Herr Zwintzscher glaubt ferner, dass Springer Campus größere unternehmerische Hürden nehmen kann als das mittelständige Unternehmen W3L. Die Sicherheit für die Studierenden sollte damit steigen. Ändern könnte sich in absehbarer Zeit die Lernplattform. Es ist möglich, dass Springer Campus auf Dauer nicht verschiedene Plattformen parallel betreiben sondern alle Inhalte in einer Plattform zusammenfassen möchte. Allerdings ist solch eine Migration aufwendig, weshalb die meisten Bestandsstudierenden das wahrscheinlich nicht mehr erleben werden. Soweit die Ausführungen von Herrn Zwintzscher zur bevorstehenden Übernahme der W3L Akademie durch Springer Campus.
  4. Informatikerin. Das gibt es leider auch recht selten, auch bei uns im Studiengang. Beim nächsten Präsenztag z.B. 4x mehr männliche als weibliche Prüfungsteilnehmer.
  5. Trocken war der Stoff schon. Ich hatte z.B. zuerst etwas Mühe, zu verstehen, wie das Spanning Tree Protocol funktioniert, mit dem redundante Pfade aus einem vermaschten Netz entfernt werden. Auf der Suche nach anderen Materialien zum Ablauf fand ich dann dieses kleine Gedicht von Radia Perlman, die das Spanning Tree Protocol erfunden hat: Algorhyme I think that I shall never see a graph more lovely than a tree. A tree whose crucial property is loop-free connectivity. A tree that must be sure to span so packets can reach every LAN. First, the root must be selected. By ID, it is elected. Least-cost paths from root are traced. In the tree, these paths are placed. A mesh is made by folks like me, then bridges find a spanning tree.
  6. Das Modul "Computernetze" wird der Fachgruppe "IT-Systeme" zugerechnet. Für Studierende im Studiengang "Web- und Medieninformatik" ist es Pflicht. Die angehenden Wirtschaftsinformatiker können es als Wahlpflichtmodul belegen. Formal betrachtet gibt es keine Teilnahmevoraussetzungen. Empfohlen wird ein grundlegendes Verständnis von IT-Systemen und Informationsarchitekturen. Meiner Meinung nach lässt sich ein solches Verständnis gut mit dem Modul "Rechnerstrukturen und Betriebssysteme" aufbauen. Dies sollte nach empfohlenem Studienplan im 1. Semester belegt werden. Computernetze ist dann schon für das 2. Semester vorgesehen. Ich finde die beiden Module ähneln einander. In beiden Fällen sieht das Lehrbuch recht dünn aus. Beim Durcharbeiten merkt man dann, dass es sehr komprimiert geschrieben ist. Jeder Satz hat es in sich. Man kommt also beim Bearbeiten langsamer voran als bei anderen Modulen, die auf den ersten Blick umfangreicher wirken. Der Stoff ist - wie bei Rechnerstrukturen - zunächst einmal recht trocken und formal. Man verbringt viel Zeit damit, z.B. den bitweisen Aufbau von Headern zu verstehen, ohne an diesem Punkt zu ahnen, wozu das gut sein wird. Man muss sich auch bei diesem Modul durch einige Kapitel beißen, die die nötigen Voraussetzungen für späteres Verständis schaffen. Das macht es manchmal schwierig, die Studienmotivation aufrecht zu erhalten. Der Stoff dieses Kurses ist im Vergleich zu anderen Modulen recht technisch und formal. Das verwendete Lehrbuch "Technische Grundlagen von Computernetzen" ist von Patrick-Benjamin Bök und Andreas Noack. Es hat ca. 270 Seiten, die aber recht eng bedruckt sind und auch die Schriftgröße ist etwas kleiner als bei der W3L üblich. Lasst euch also von der Seitenzahl nicht täuschen. Das ist kein Modul, das man nebenbei belegt. Das Buch enthält viele Abbildungen, häufig schematische Darstellungen des Aufbaus von Headern oder an Graphen erinnernde Darstellungen der Topologie von Netzen. Der inhaltliche Aufbau ist wie folgt: - (technische) Grundlagen - Kommunikation auf physikalischer Ebene - Kommunikation auf logischer Ebene - Kommunikation auf Anwendungsebene - Performance Engineering Die Grundidee ist also, sich von der Übertragung einzelner Bits (z.B. über einen Kupferdraht) Stufe für Stufe zu immer komplexeren Protokollen hochzuarbeiten, die aufeinander aufbauen oder präsizer ineinander geschachtelt sind wie Zwiebelschalen. So landet man am Ende bei Themen wie Voice-over-IP. Es gibt Lehrbücher, die den umgekehrten Weg gehen, also von den Protokollen höherer Stufen hinabsteigen zur Bitübertragungsschicht. Der Ansatz, den die Autoren gewählt haben, scheint der gängige zu sein. Er hat für mich auch gut funktioniert, weil man an jedem Punkt versteht, auf welchem Fundament man ruht. Der Nachteil dieses Ansatzes ist, dass man viel Stoff lernen muss, bevor man schließlich mit etwas zu tun bekommt, das man aus eigener Alltagserfahrung kennt, z.B. der Übetragung einer Webseite per HTTP oder einer E-Mail per IMAP. Ziemlich zu Beginn des Kurses werden zwei Referenzmodelle eingeführt, das ISO/OSI-Modell und das TCP/IP-Referenzmodell. An ihnen verdeutlicht man sich die schichtweise Struktur der aufeinander aufbauenden Protokolle. Diese Modelle tauchen im Verlauf des Kurses immer wieder auf, um zu zeigen, wo im Schichtenmodell der gerade behandelte Stoff angesiedelt ist. Dies ist nützlich, um bei der Auseinandersetzung mit den vielen technischen Einzelheiten nicht den Überblick zu verlieren: Worauf baut das aktuelle Thema auf? Und worauf läuft es hinaus? Gerade bei diesem Modul ist es leicht, den Kompass zu verlieren. Die wiederkehrenden Verweise auf das Schichtenmodell sollen dem vorbeugen. Für mich hat das gut funktioniert. Gleichwohl musste ich mich immer wieder damit abfinden, vieles zunächst einmal nur halb zu verstehen. Das Lehrbuch war so geschrieben, dass ich das WAS und das WIE meist gut nachvollziehen konnte. Aber das WOZU, das mir auch geholfen hätte, den Stoff für mich einzuordnen und mir besser zu merken, musste manchmal vorläufig im Dunkeln bleiben. Mein Eindruck ist: Das ist kein Versäumnis der Autoren sondern der Struktur des Stoffes geschuldet. Netze entwickelten sich über die Zeit, es wurden neue Protokolle auf vorhandene Protokolle aufgesetzt. Man muss also ein Stück weit diesen historischen Entwicklungsprozess nachvollziehen. Die Online-Tests waren zum Teil etwas spitzfindig formuliert, was mich aber zwang, den Stoff der einzelnen Wissensbausteine noch einmal genauer durchzuarbeiten. Die Aufgaben waren anders, als ich erwartet hatte. Kommilitonen, die eine frühere Version dieses Moduls belegt hatten, hatten mir berichtet, dass vor allem Wissen abgefragt würde. In der aktuellen Auflage des Kurses geht es eher darum, die gelernten Konzepte anzuwenden. Man sollte z.B. zeigen, wie mit dem Spanning Tree Protocol redundante Pfade aus einem vermaschten Netz entfernt werden, so dass eine Baumstruktur entsteht. Oder erklären, wie ein Routing-Algorithmus ausgehend von einer bestimmten Ausgangssituation Schritt für Schritt eine Routing-Tabelle aufbaut. Oder durchspielen, welche Pakete bei bestimmten Formen des Queuings in welcher Reihenfolge bedient werden. Bei den Aufgaben zur Verwaltung von IP-Adressen muss man auch immer wieder ein bisschen rechnen. Da ist es gut, wenn man im Umgang mit Dualzahlen und Hexadezimalzahlen noch recht fix ist. Bei diesem Kurs sind zur Klausur keinerlei Hilfsmittel zugelassen. Um die Fülle an Stoff in den Kopf zu bekommen, habe ich an die 150 eng beschriebene A4 Seiten eigene Notizen angefertigt. Vieles davon waren Diagramme zum Aufbau der vielen verschiedenen Header, wobei ich pro Bit ein Kästchen auf Karopapier verwendet habe. Diese Zeichnungen habe ich dann stark kommentiert. Außerdem habe ich viele Fragen niedergeschrieben, die sich mir beim Bearbeiten des Kurses stellten und die Antworten, die ich darauf gefunden habe, sauber ausformuliert. Meine Notizen sahen also auf manchen Seiten aus wie Sammlungen von Quizfragen. Schließlich habe ich viele Diagramme aus dem Kurs abgezeichnet, bei denen es vor allem um Kommunikationsflüsse und die dabei ausgetauschten Daten ging. Ich habe dabei bewusst von Hand gearbeitet, weil ich gehofft habe, den Stoff so gleichsam "in die Finger" zu bekommen. Mein Tutor war der Ansicht, bei diesem Kurs ginge es nicht um das Abfragen von Wissen. Es ginge um das Verständnis von Zusammenhängen; und die Fähigkeit, dieses Verständnis problemlösend anzuwenden. In der Klausur erwies das als einerseits richtig. Aber andererseits auch wieder nicht. Ja, es gab nur wenige Wissensfragen. Meistens musste man Wissen anwenden, zeigen, wie sich eine Situation entwickelt, wer, wann, was und in welcher Form an wen sendet, damit ein Paket den Weg von A nach B finden kann. Aber um solche Probleme lösen zu können, braucht man auch Wissen: Längen von Headern, ihren Aufbau, den genauen Ablauf wechselseitig gesendeter Botschaften. Es war schon vorteilhaft, eine Menge Fakten im Kopf zu haben. Hier hätte ich in der Präsenzklausur noch etwas mehr rausholen können. Müsste ich die Klausur noch einmal schreiben, dann würde ich mehr Fakten mit Karteikarten lernen. Man verstehe mich nicht falsch: Fakten zu lernen reicht auf keinen Fall, um diese Klausur zu bestehen. Aber es ist oft nötig, um mit der eigentlichen Arbeit beginnen zu können. Ich musste an vielen Stellen raten und war hinterher überrascht, dass ich oft richtig gelegen hatte. Erwähnen möchte ich noch die sehr intensive Betreuung durch meinen Tutor. Bei diesem Modul hatte ich viele Verständnisfragen und weiterführende Fragen. Die Antwort kam oft noch am gleichen Tag und hat mich eigentlich immer weiter gebracht. Für mich war das bislang die schwierigste Präsenzprüfung meines Studiums. Dank der Bonuspunkte aus Online-Test und Online-Klausur habe ich mit einem schönen Ergebnis abschließen können, auch wenn mein Punktwert aus der Klausur im Vergleich zu vielen anderen Modulen etwas schlechter ausgefallen ist. Ich habe mich aber hier besonders über das Ergebnis gefreut, weil ich das Gefühl hatte, mir hier wirklich etwas erarbeitet zu haben. Für Studierende, die nach diesem Modul noch mehr über Netze wissen wollen, gibt es ein aufbauendes Modul "Planung und Auslegung von Computernetzen", das man als Wahlpflichtmodul belegen kann. "Computernetze" wird als Grundlage für das Modul "IT-Sicherheit" empfohlen. Das ist das nächste von insgesamt 4 Modulen aus dem Studienbereich "IT-Systeme", das ich belegen möchte. Ein bisschen dauert das aber noch, denn als weitere Grundlage wird Mathe3 empfohlen, wo unter anderem kryptographische Basistechniken behandelt werden. Nun habe ich aber Mathe2 noch nicht bestanden. Die IT-Sicherheit muss also noch ein wenig warten. "Computernetze" war ein ordentliches Stück Arbeit. Ich bin froh, dass ich das geschafft habe.
  7. Offensichtlich nutze ich diese Seite gern. In einem Forum wie diesem gehört dazu natürlich viel mehr als gute Usability. Es muss ja fortlaufend betreut werden und nicht in erster Linie technisch. Das hat eine redaktionelle Komponente. Aber so, wie anonyme Kommunikation im Netz leider oft abläuft, muss natürlich auch jemand die Diskussionen als Moderator betreuen und für die Einhaltung gewisser Spielregeln sorgen. Damit Menschen, die divergierende Meinungen sachbezogen und mit respektvollem Grundton austauschen wollen, das auch können. Da geht es darum, einen sozialen Prozess langfristig zu begleiten. Das finde ich hier gut gelöst.
  8. Ich habe mich tatsächlich danach erkundigt. Man kann an der WINGS einzelne Module als Gasthörer belegen. Und das würde mich in diesem Fall auch sehr reizen. Aber ich meine, ich bin noch nicht soweit. Hab ja nicht mal das 2. Semester abgeschlossen. Also schön, einen Schritt nach dem anderen. Und meine nächsten beiden Schritte heißen "Analysis" und "Lineare Algebra".
  9. Das Modul "Web-Design und Web-Ergonomie" ist für das 3. Semester vorgesehen. Die W3L hält es für wünschenswert, zuvor "Web-Programmierung" belegt zu haben. Formal nötig ist das aber nicht. Ich meine, man könnte dieses Modul auch gute als erstes im Fachbereich Web-Informatik belegen. Viele Kommilitonen halten es für vergleichsweise leicht zu bewältigen. Allerdings haben auch sehr viele Studierende beruflich mit Web-Technologien zu tun. Das relativiert diese Einschätzung natürlich. Basis ist ein Lehrbuch von Heide Balzert und Uwe Klug. Herr Klug hat auch die Lehrbücher zum Modul "SQL und realationale Datenbanken verfasst". Die fand ich didaktisch sehr gut aufgebaut und auch gut verständlich geschrieben, so dass ich mit der Erwartung in den Kurs ging, hier wieder gut durch den Stoff geführt zu werden. Auch dieses Kursmodul entwickelt parallel zum Stoff ein Fallbeispiel: Die Gestaltung eines Web-Auftritts für einen Ökostromanbieter. Diesen Auftrag übernimmt die fiktive Firma Websoft, die mehrere Mitarbeiter hat, die sich in unterschiedlichen Berufsrollen an der Planung der Webseite beteiligen. Diesen Ansatz kannte ich schon aus anderen Modulen der W3L. Man bekommt so nicht nur das Fachwissen vermittelt. Man entwickelt auch eine erste Vorstellung davon, wie es in einer Anwendungssituation genutzt wird. So wird deutlich, dass die Entwicklung einer Webseite in der Regel ein kollaborativer Prozess ist, in dem verschiedene Akteure in unterschiedlichen Rollen intensiv kommunizieren müssen, um ihr gemeinsames Ziel zu erreichen. Ich hatte mir vorgestellt, in diesem Modul in erster Linie etwas über Gestaltungsregeln zu erfahren. Was für Farben zusammenpassen, ein bisschen Typographie, wie man eine Seite aufteilt, so dass die Proportionen gefällig wirken. So etwas ist durchaus auch Thema dieses Moduls, aber eigentlich geht es um etwas anderes. Eine der hier vermittelten Thesen ist, dass man an der reinen Anmutung einer Seite nicht beurteilen kann, ob das Design etwas taugt. Man muss Webdesign im Hinblick auf die Ziele bewerten, die ein Kunde mit seinem Web-Auftritt verfolgt. An wen will er sich richten und wozu? Dementsprechend geht es in den ersten Kapiteln vor allem darum, sich Gedanken über die Nutzer einer Website oder eine Web-Anwendung zu machen. Was für Aufgaben haben die zu bewältigen und was für Vorkenntnisse und Erfahrungen bringen sie mit. Eine der ersten Aufgaben beinhaltet daher die Entwicklung einer "Persona", also eines fiktiven Charakters der einen typischen Nutzer oder eine Nutzergruppe der geplanten Web-Anwendung repräsentieren soll. Dieser Charakter soll so konkret beschrieben werden, dass ein Team, das eine Web-Anwendung plant, am Ende eine gemeinsame Vorstellung von diesem Menschen hat. Man entwickelt auch Kontextszenarien: Beschreibungen von Situationen, in denen die Persona eine Web-Anwendung nutzt, um ein bestimmtes Problem zu lösen. Und schließlich entwickelt man Nutzungsszenarien, kleinschrittigere Beschreibungen von Nutzungssituationen, bei denen einzelne Handlungsschritte des Nutzers beschrieben werden und wie das geplante System darauf reagiert. Auch wenn der Kurs "Web-Design und Web-Ergonomie" heißt, lassen sich meiner Meinung nach viele Konzepte z.B. auf Desktop-Anwendungen übertragen. Das Modul ist auch ein Kurs über Software-Ergonomie. Eine große Rolle spielen verschiedene Methoden, Entwürfe zu evaluieren oder Inhalte in einer Weise zu strukturieren und kategorisieren, wie sie für die Nutzer einer Web-Anwendung intuitiv und einleuchtend ist. Dabei kommt oft etwas anderes heraus als Fachleute, die Web-Anwendungen erstellen, für plausibel halten. In diesem Kurs geht es also um mehr als den schönen Schein. Er hat mehr mit sozialen Prozessen zu tun, als ich im Vorfeld für möglich gehalten hätte. Auch mit den sozialen Prozessen in den Teams, die Web-Anwendungen entwickeln. Eine interessante Nebenwirkung des Moduls: Bei privater Internetnutzung merkte ich immer häufiger, dass mich bestimmte Aspekte des Designs einer Seite störten. Da war zuvor nur eine leichte Irritation. Oder vielleicht auch nur eine gewisse Unlust, eine Seite weiter zu nutzen. Oder auch ein spontaner Impuls, eine begonnene Aktion abzubrechen oder einen Tab zu schließen. Ich fing an, solche Reaktionen an mir wahrzunehmen. Oft habe ich mir dann gedacht: "Das hat mich schon länger gestört." Viel seltener aber immerhin immer häufiger dachte ich: "So wäre es wahrscheinlich besser gewesen." Natürlich kann man nicht erwarten, nach einem Modul von 5 ECTS ein Experte in UI-Design zu sein. Aber es trägt auf jeden Fall dazu bei, ein Problembewusstsein zu entwickeln und mit etwas anderen Augen auf Web- und Benutzeroberflächen zu schauen. Natürlich geht es auch um Layout, Navigation, um Farben und Typographie, um multimediale Elemente, um Formulargestaltung und ganz zum Schluss auch ein bisschen um barrierefreies Web-Design. Aber es gab auch Themen, die für mich überraschend waren, zum Beispiel über die Aufbereitung von Texten für das Lesen im Web. Und hier ist eben nicht die Schriftgestaltung oder das Layout gemeint. Es geht tatsächlich darum, dass es vorteilhaft ist, Texte für's Web anders zu formulieren und zu gliedern als für den Druck. Dies ist ein Modul über das WAS und nicht über das WIE einer Web-Anwendung. Dementsprechend habe ich für die Einsendeaufgaben vor allem Texte geschrieben und Entwürfe mit Papier und Bleistift gezeichnet. Die technische Umsetzung der Entwürfe z.B. mit HTML, CSS, client- und serverseitigen Sprachen ist nicht Thema dieses Kurses. Davon handeln andere Module. Insgesamt kam ich mit dem Modul gut zurecht und war auch mit meiner Note zufrieden. Die Rückmeldungen durch meinen Tutor kamen sehr zügig, was es mir erleichterte, schnell im Kurs voran zu kommen. "Web-Design und Web-Ergonomie" ist ein Modul für Web-Informatiker, nicht für Kommunikations-Designer. Es bleibt das einzige Modul im Studiengang, dass UI-Design so in den Mittelpunkt stellt. Gemessen an diesem Platz im Gesamtkonzept dieses Studiengangs finde ich es sehr gelungen. Leider befürchte ich, dass UI-Desing nicht meine Stärke werden wird. Ich finde es interessanter, was für eine Verarbeitungslogik im Hintergrund arbeitet. Insofern habe ich mich am Ende auch gefreut, mich wieder anderen Themen zuwenden zu können. Auf jeden Fall hat dieser Kurs meine Wertschätzung für das gesteigert, was ein guter Software-Ergonom leistet. Und es macht Spaß, wenn man im Alltag etwas wiedererkennt. Wenn man sich erinnert: "Hey, das kam doch im Modul Web-Design vor." Dieser Effekt des Moduls scheint nachhaltig zu sein.
  10. Ja, so kann man es natürlich auch sehen. Die WINGS Wismar hat z.B. im Studiengang Wirtschaftsinformatik ein Modul "Künstliche Intelligenz". Sogar ein besonders interessantes. Das basiert nämlich auf dem Lehrbuch von Uwe Lämmel und Jürgen Cleve, die darin sowohl klassische KI als auch neuronale Netze behandeln.
  11. Das Modul "Grundlagen der Informatik 4: Algorithmen und Datenstrukturen" ist Pflicht für Studierende im Studiengang Web- und Medieninformatik. Die Wirtschaftsinformatiker dürfen es als Wahlpflicht-Modul belegen. Die W3L schlägt vor, es im vierten Semester nach GdI3 zu belegen. Nötig sind aber nur die Kenntnisse aus GdI2. Konkret sollte man gute Grundkenntnisse in objektorientierter Programmierung und in generischer Programmierung haben. Letzteres, weil die meisten Algorithmen im Kurs für generische Typen entwickelt werden. Wer sich auf diesen Kurs ein wenig vorbereiten will, sollte vor allem noch einmal das Kapitel zu generischer Programmierung aus GdI2 wiederholen. Auf GdI4 hatte ich mich sehr gefreut, weil Kenntnisse im Bereich Algorithmen und Datenstrukturen zu meinem Bild von einem Informatiker gehören. Mathematik oder BWL sind Teil sehr vieler Studiengänge und viele Naturwissenschaftler und Ingenieure lernen programmieren. Aber Algorithmen sind für mich ein wesentlicher Teil dessen, was die Informatik als eigenständige Disziplin auszeichnet. Ein bisschen hatte ich mich schon einmal mit dem Thema beschäftigt. Zu Schulzeiten hatte ich mal ein Buch über Algorithmen und Datenstrukturen, die damals noch in einer strukturierten Programmiersprache behandelt wurden. Hier ging es zum Beispiel um Sortieralgorithmen, Binärbäume und verkettete Listen. Als Schüler habe ich leider vieles nicht verstanden, obwohl ich das Thema sehr spannend fand. Nun wollte ich herausfinden, ob mir diese Konzepte inzwischen zugänglicher waren. Schon im ersten Teil des Kurses gab es erste Überlegungen zur Korrektheit und Komplexität von Algorithmen. Überlegungen zur Komplexität bei wachsender Problemgröße ziehen sich durch den ganzen Kurs. Dies ist wichtig, um später für ein gegebenes Problem eine vorteilhafte Datenstruktur oder einen geeigneten Algorithmus auswählen zu können. Das zweite Kapitel handelte von Rekursion. Hier ging es darum, ein Verständnis dafür zu entwickeln, was beim rekursiven Methodenaufruf im Speicher passiert. Klassisches Fallbeispiel ist das Problem der Türme von Hanoi. Interessant war eine allgemeine Strategie, rekursive Algorithmen in iterative Algorithmen umzuwandeln. Oft ist der Algorithmus dann nicht mehr so übersichtlich und nachvollziehbar. Dafür verbessert sich die Laufzeit und der Speicherbedarf. Bis hier fand ich den Kurs noch recht trocken. Der Stoff war durchaus interessant aber nicht das, was ich erwartet hatte. Das änderte sich im nächsten Kapitel, wo es um Suchalgorithmen ging. Im wesentlichen wurden hier die drei grundlegenden Strategien sequentielle Suche, binäre Suche und Hashing-basierte Suche behandelt. Der Kurs entwickelt die Codebeispiele in Java, weil das an der W3L die Lehrsprache ist. Aber ich habe rasch den Eindruck gewonnen, dass es in diesem Kurs eben nicht um Java sondern um ein Verständnis der Algorithmen und Datenstrukturen ging. Auch wenn immer wieder darauf verwiesen wird, was die Java-Klassenbibliothek schon fix und fertig anbietet. Denn natürlich wird man selten selbst die Algorithmen und Datenstrukturen aus dem Kurs implementieren. In der Regel wird man Bibliotheken benutzen, die sie zur Verfügung stellen. Sinn des Kurses ist eher, das man versteht, was man da benutzt und was das für Implikationen hat. Das macht sich auch ein wenig bei den Einsendeaufgaben bemerkbar. Ich hätte erwartet, hier vor allem Algorithmen implementieren zu müssen. Tatsächlich wurden viele Implementierungen im Lehrbuch schrittweise entwickelt. Oft ging es eher darum, diesen Code in kleinen Problemstellungen zu benutzen, ihn zu erweitern, zu ergänzen oder zu modifizieren. Im nächsten Kapitel ging es um Sortierverfahren. Es zerfiel in zwei Teile. Im ersten Teil ging es um die sogenannten direkten Verfahren: - Sortieren durch direkte Auswahl - Sortieren durch direktes Einfügen - Sortieren durch direktes Austauschen Diese Verfahren sind leicht zu verstehen aber sie sind langsam. Im zweiten Teil werden diese einfachen Verfahren schrittweise verbessert. Aus dem langsamen BubbleSort wird so z.B. der sprichwörtlich schnelle QuickSort-Algorithmus. HeapSort, QuickSort, ShellSort und MergeSort sind schon etwas schwieriger zu verstehen als die direkten Verfahren. Auch hier ist die Implementierung in Code das geringste Problem. Wichtiger ist, zu begreifen, wie auf der Datenstruktur (in der Regel ein Array) gearbeitet wird, wieviele Vergleiche und Tauschoperationen für große n anfallen, warum ein Verfahren terminiert und so weiter. Eine wichtige Frage ist auch immer wieder die sogenannte Stabilität eines Verfahrens. Hierbei geht es darum, ob sich die Reihenfolge von Elementen mit gleichem Schlüssel im Laufe des Sortierens ändern kann, oder ob sie "stabil" bleibt. Bei diesem Kapitel bedauerte ich nur, dass der BucketSort-Algorithmus nicht ausführlich vorgestellt wurde. Im nächsten Kapitel ging es um Datenstrukturen. Hier wurden eigene Implementierungen von Feldlisten (ArrayList) und verketteten Listen, von Stapeln (Stack) und Schlangen (Queue), von Mengen (Set) und Abbildungen (Map) entwickelt. Hier wurden immer wieder Bezüge zu den Klassen hergestellt, die Java von Haus aus mitbringt. Es war für mich wirklich schön, zu begreifen, was ich bislang nur benutzt hatte, endlich zu verstehen, was "unter der Haube" passiert. Im Rest des Kapitels ging es um Bäume, um das Einfügen und Löschen in Bäumen und um ausgeglichene Bäume. Also darum, wie man Bäume reorganisieren kann, um zu verhindern, dass sie im schlimmsten Fall zur Liste entarten. Die verschiedenen Baumrotationen fand ich leider im Lehrbuch zu knapp erklärt, um sie nachvollziehen zu können. Zum Glück werden Algorithmen und Datenstrukturen in praktisch allen Informatik-Studiengängen gelehrt. Es war so kein Problem im Internet Skripte und Folien anderer Unis und FHs zu finden und da war dann schließlich auch eine Darstellung dabei, mit der auch ich gut zurechtkam. Bis hier war ich mit dem Modul sehr zufrieden. Mit diesem Themen war dann wohl auch der Grundstock dessen abgehandelt, was zu einer einführenden Lehrveranstaltung "Algorithmen und Datenstrukturen" gehört. Von hier aus hätte es in verschiedene Richtungen weitergehen können. Die Autoren dieses Modul haben sich dafür entschieden, Algorithmen auf Texten zu behandeln. Konkret ging es um den KMP und den Boyer-Moore-Algorithmus. Dieses Kapitel ist mir sehr schwer gefallen. Ich war zunächst mit der Darstellung des Stoffes unzufrieden. Meine Suche nach alternativem Material, das verständlicher aufbereitet ist, blieb leider erfolglos. Möglicherweise haben die Autoren also ihr bestes getan und ich hatte hier einfach nicht den richtigen Dreh raus. Ich verstand die Algorithmen schon, aber nach ein bis zwei Tagen war alles wieder weg, während ich mich an den Rest des Stoffes gut erinnerte. Zum Glück kamen die Algorithmen auf Texten in der Präsenzklausur nicht dran. Das letzte Kapitel handelte von kombinatorischen Algorithmen. Zunächst ging es um Backtracking. Damit kann man einige klassische Probleme lösen, zum Beispiel das Färben von Landkarten. Oder klassische Denksportaufgaben, die sich um das geschickte Positionieren von Springern oder Damen auf einem Schachbrett drehen. Schließlich wurde ein Constraint-Solver entwickelt. Dessen Funktionsweise konnte ich leider nicht in allen Details nachvollziehen, denn nun wurde es doch sehr komplex. Hier bewegt man sich schon in Richtung KI. Ich fand es irre spannend, dass dieses Thema im Kurs enthalten war, auch wenn es zum Glück nicht klausurrelevant war. Gerne hätte ich an dieser Stelle noch weiter gemacht, aber es passt eben nicht beliebig viel Stoff in ein Modul. Mein Tutor hatte in diesem Modul einen einfach zu begreifenden Arbeitsrhythmus. Korrekturen kamen am Samstag, ganz gleich, wieviel man die Woche über eingereicht hatte. Ich konnte mein Arbeitsverhalten gut daran anpassen. Hilfestellung bei Problemen gab es schneller. Interessant für mich: Während in GdI1 noch sehr viel Wert auf einen sehr sauber strukturierten und expliziten Code gelegt wurde, ermutigte mich mein Tutor in GdI4, meinen Code kompakter zu schreiben, mehr Operationen in einer Zeile zusammen zu fassen. Meine Programme wurden so kürzer, waren aber auch nicht mehr ganz so leicht leserlich. Man erinnere sich: Dieser Kurs ist fürs 4. Semester vorgesehen. Da traut man den Studierenden schon einen dichteren Programmierstil zu. Die Präsenzklausur lief für mich ziemlich gut. Anscheinend lag mir das Thema, denn ich konnte hier eines meiner besten Ergebnisse erzielen. In der Vorbereitung hatte ich mich auf die Grundkonzepte Suchalgorithmen, Sortierverfahren und Datenstrukturen konzentriert. Überraschend für mich: Java-Code musste ich nur wenig schreiben. Es wurde geprüft, ob man die Verfahren und Strukturen begriffen hatte, unabhängig von der Implementierung in einer bestimmten Programmiersprache. Ein Vorteil bei diesem Modul: Hier gibt es in der Regel ein eindeutiges "richtig" und "falsch", während es in anderen Modulen - nennen wir z.B. "Webdesign" - ein bisschen mehr Interpretationsspielräume gibt. Was ich gerne noch gelernt hätte: - Algorithmen zu Pfadsuche in Graphen - etwas über genetische Algorithmen - etwas über neuronale Netze Am liebsten wäre mir, die W3L würde ein eigenes Modul "Künstliche Intelligenz" anbieten. Aber vielleicht passt das nicht zum Profil eines Studiengangs "Web- und Medieninformatik". Im Kurs ist noch eine ganz knappe Einführung in die funktionale Sprache "Clojure" enthalten, letztlich ein Lisp-Dialekt auf der Java Virtual Machine. Auf dieses Kapitel war ich sehr neugierig, weil ich immer wieder höre, dass es sinnvoll ist, andere Programmierparadigmen kennen zu lernen. Nicht, um in exotischen Sprachen zu programmieren, sondern weil sich das Verständnis für Programmierung insgesamt entwickelt. Ich höre solche Aussagen einerseits mit einer gewissen Faszination und andererseits mit einer gewissen Skepsis. (Sie erinnern mich an die These, man müsse Latein lernen, weil man dann ... besser versteht/kann/lernt.) Jedenfalls wäre ich durchaus neugierig gewesen, eine lispoide Sprache zu lernen. Das Kapitel im Kurs GdI4 ist für diesen Zweck allerdings viel zu knapp. Ich verstehe also leider immer noch nicht, was genau den Reiz funktionaler Sprachen ausmacht. Gerne würde ich diesen Faden eines Tages wieder aufgreifen und zum Beispiel das legendäre "Structure and Interpretation of Computer Programs" von Abelson und Sussman durcharbeiten. Aber ich fürchte, während meines Fernstudiums werde ich die Zeit dazu nicht finden.
  12. Ein Modul bearbeite ich normalerweise in 4 bis 8 Wochen. Das kommt auch ein wenig darauf an, ob ich es alleine oder parallel zu einem anderen bearbeite. Zu Beginn meines Studiums war ich noch nicht so schnell. Es war ein paar Jahre her, dass ich so intensiv gelernt hatte. Da musste ich erst wieder üben, wie ich mir meine Zeit einteile, wie ich mich sinnvoll auf Klausuren vorbereite und so solche Sachen. Das klappt nun besser. Ich glaube, dass mein Lerntempo im Vergleich zu den meisten meiner Kommilitonen recht hoch ist. Bislang habe ich 30 ECTS pro Semester belegt. Da wäre ich in 3 Jahren durch. Allerdings denke ich nicht, dass ich dieses Tempo auf Dauer durchhalten kann. Ich merke schon, dass die Module, die für die höheren Semester vorgesehen sind, inhaltlich anspruchsvoller sind. Es werden Module kommen, die mehr Zeit beanspruchen und die will ich mir dann auch nehmen. Im Vergleich zu den meisten meiner Kommilitonen habe ich einen Vorteil: Ich habe schon einmal ein Fernstudium absolviert. Und zwar ein der britischen Open University. Das war ein sozialwissenschaftliches Studium, aber diese spezielle Lebenssituation als Fernstudent ist mir vertraut. Außerdem arbeite ich nicht mehr Vollzeit sondern nur ca. 30 Stunden pro Woche.
  13. Nach dem für mich nicht so befriedigenden Modul "Webprogrammierung" wollte ich zügig zum Modul "Webanwendungen 1" übergehen. Da ich schon einmal einen Blick ins Lehrbuch geworfen hatte, erwartete ich, hier die gründliche Einführung in HTML und CSS zu erhalten, die ich im Vorgängermodul vermisst hatte. Außerdem behandelt "Web-Anwendungen 1" HTML5 und nicht XHTML wie noch in "Webprogrammierung". Mein oberflächlicher Eindruck war, dass ich dieses Modul viel lieber als erstes belegt hätte. Und so kam es auch. Weil ich von meiner Tutorin wusste, dass die Rückmeldungen zu den Aufgaben in den nächsten Wochen nicht in gewohnter Geschwindigkeit kommen würden, hatte ich für die Bearbeitung dieses Moduls etwas mehr Zeit eingeplant. Genauer gesagt bearbeitete ich es parallel zu GdI4 "Algorithmen und Datenstrukturen". Auf diese Weise kam ich im Studium insgesamt zügig voran, obwohl das Tempo im Modul niedriger war. Normalerweise bearbeite ich die Themen lieber schön nacheinander, aber in diesem Fall erwies es sich als gute Strategie. Ich war auch froh, dass mir meine Tutorin realistisch mitgeteilt hatte, dass es etwas länger dauern könnte. So konnte ich mich auf die Situation einstellen und entsprechend planen. (Von vielen Modulen bei der W3L bin ich auch etwas verwöhnt. Aktuell bearbeite ich zum Beispiel "Softwaretechnik 1". Da bekomme ich meine Einsendeaufgaben oft einen Tag nach Einsendung korrigiert zurück. Das ist schon irre schnell, vor allem wenn man sich klarmacht, dass die Tutoren ihre Tätigkeit nur zusätzlich ausüben.) Das Lehrbuch zu "Web-Anwendungen 1" hat an die 480 Seiten und behandelt in erster Linie HTML5, CSS und ein bisschen Javascript. Deutlich weniger Themen als im Vorgängermodul "Webprogrammierung". So bleibt mehr Zeit, in die Tiefe zu gehen. Ebenfalls angenehm: Am Fallbeispiel eines (zugegebenermaßen sehr einfachen) Web-Anzeigenmarktes werden die verschiedenen Konzepte aus dem Kurs in einer Anwendungssituation gezeigt.Im Fallbeispiel geht es nicht allein um das zu erstellende Produkt Webanzeigenmarkt sondern auch um die fiktive Firma, die ihn im Auftrag eines Kunden entwickelt. Und um die verschiedenen Berufsrollen in diesem Entwicklungsprozess und wie sie miteinander kooperieren. Das trägt sehr zum Verständnis bei. Solche Fallbeispiele kenne ich auch aus anderen Kursen der W3L, aber gerade in diesem Modul fand ich es sehr gelungen umgesetzt. In diesem Modul geht es um statische Webseiten. Erst in "Web-Anwendungen 2" geht es wieder darum, HTML-Code dynamisch zu erzeugen. Das Buch beginnt mit dem für die W3L üblichen Schnelleinstieg. Hier geht es um den Aufbau eines HTML5-Dokumentes, um das Anlegen von Links, das Einfügen von Bildern, die Verwendung von Formularen und Tabellen und um erste Schritte mit CSS. Alle diese Themen werden später im Buch in eigenen Kapiteln vertieft. Es gibt ein kurzes Kapitel zum HTTP-Protokoll, aber das wird detaillierter im Modul "Computernetze" behandelt und soll hier nur Hintergrundinformationen für die eigentlichen Kursinhalte liefern. Nun kommen 60 Seiten Einführung in HTML5. Hier merkte ich sowohl beim Durcharbeiten des Lehrbuches als auch beim Bearbeiten der Einsendeaufgaben: Es bleibt viel mehr hängen. Die Aufgaben waren auch weniger technisch und boten Möglichkeiten, ein bisschen kreativ zu sein. Themen hier sind z.B.: - Strukturelemente - Zeichensätze - Block- und Inline-Elemente - Hyperlinks - Einführung in Webserver Besonders interessant fand ich die Ausführungen zur Modellierung von Webseiten mit UML und die Hinweise zur systematischen Programmierung. Weiter ging es mit einem Kapitel zum Einbinden von Multimedia-Elementen in Webseiten, also Bilder, Audio und Video. Hier geht es auch um Grafik-, Audio- und Videoformate und um Link-sensitive Bilder. Im nächsten Kapitel ging es um CSS: - Trennung von Struktur und Präsentation - Stilregeln - Textgestaltung und Schrift - Farbe und Hintergrund - Textformatierung - und das Boxmodell Speziell beim Boxmodell empfehle ich, aufmerksam zu arbeiten, denn das ist etwas, dass sich in einer Klausur in knapper Form abprüfen lässt, ohne dass man viel Code schreiben muss. Zwischen den Kapiteln kommt der Lehrtext immer wieder auf das Fallbeispiel Webanzeigenmarkt zurück, dass mit den neuen Techniken erweitert und verfeinert wird. So erlebt man den neuen Stoff im Zusammenspiel mit bekannten Inhalten. Das finde ich wirklich didaktisch gut gemacht. Nun folgen zwei Kapitel zu Tabellen und Formularen. Insbesondere Formulare sind ja für die Interaktion mit den Nutzern einer Seite sehr wichtig. Hier gibt es inhaltliche Überschneidungen mit dem Modul "Web-Design und Web-Ergonomie", wobei es in "Web-Design" um Aufbau und Gestaltung von Formularen geht und in diesem Modul um die technische Umsetzung. Die Module wirken an dieser Stelle gut aufeinander abgestimmt. Auch Tabellen und Formulare werden ins Fallbeispiel Webanzeigenmarkt integriert. Im nächsten Kapitel geht es um Javascript. Mit "Webprogrammierung" im Hintergrund kam ich diesmal ganz gut zurecht, wenngleich der Stoff auch hier recht komprimiert vermittelt wurde. Ca. 25 Seiten mussten genügen. Das nächste Kapitel war das einzige im Buch, dass ich nicht so gelungen fand. Hier ging es um neue Features in HTML5, z.B. zur Validierung von Formularen, für Drag&Drop, um das Canvas-Element, um die lokale Speicherung von Web-Ressourcen und um sematische Auszeichnung. Hier war man bemüht, aktuelle Inhalte zu vermitteln. Beim Ausprobieren der Fallbeispiele erlebte ich, dass die Browser neue Elemente zum Teil sehr unterschiedlich darstellen, so dass man sich gut überlegen muss, was man davon in der Praxis verwenden möchte. Oft schienen Codebeispiele erst nicht zu funktionieren, bis ich sie in einem anderen Browser testete. Am besten liefen die Sachen noch im Firefox. (Ich verwende meist Chrome.) Der Grund, weshalb ich von diesem Kapitel nicht so begeistert war: Es fehlte der rote Faden, der sich sonst durch das ganze Lehrbuch zog. Eher war es eine bunte Sammlung von Themen, die in einer recht beliebig scheinenden Reihenfolge präsentiert wurden und zwischen denen es wenig inhaltliche Zusammenhänge gab. Das erinnerte ein wenig an den eher technischen Charakter des Vorgängermoduls "Webprogrammierung". Entsprechend war der Stoff dieses Kapitels auch nicht mit dem Fallbeispiel verknüpft. Das folgende Kapitel zu CSS war wiederum sehr gelungen. Hier ging es um: - Selektoren - Pseudoelemente und Pseudoklassen - um medienspezifische Präsentation, also um Seiten die z.B. auf einem Smartphone anders aussehen als auf einem Bildschirm - um den Elementfluss Wenn man hier gut aufpasste, konnte das schon als erster Einstieg in responsive Web-Design dienen, auch wenn das nicht explizit Thema des Moduls ist. Meine Tutorin hat mir hier ein sehr gutes weiterführendes Buch empfohlen und ich habe auch einige Aufgaben aus dem Modul nach diesem Kapitel neu bearbeitet, um z.B. Formulare so umzugestalten, dass sie auch auf einem Handydisplay gut zu bedienen sind. An diesem Punkt hatte ich das Gefühl, dass nun alle Kursinhalte schön ineinander greifen und ich die Dinge im Zusammenhang sehe. Ein befriedigender Abschluss. Das letzte Kapitel handelte von barrierefreiem Webdesign. Es ist aber zu kurz, um danach wirklich Ahnung vom Thema zu haben. Trotzdem finde ich es gut, dass es im Modul enthalten ist. Behörden müssen sich mit dem Thema auseinandersetzen. Firmen machen es seltener. Ich finde das Thema wichtig. Das Internet ist längst im Alltag unverzichtbar, aber man vergisst gerne, dass es viele Menschen gibt, die aufgrund von Einschränkungen Webseiten nicht so nutzen und betrachten können wie die meisten von uns. Aber auch diese Menschen brauchen die Informationen und Dienste, die das Web bereitstellt. In "Web-Design und Web-Ergonomie" taucht dieses Thema noch einmal auf. Leider auch dort in recht kompakter Form. Klar wird allerdings: Barrierefreiheit per se gibt es nicht. Barrierefrei ist eine Seite immer im Hinblick auf die Fähigkeiten und Möglichkeiten ihres Nutzers. Ein blinder Mensch hat zum Beispiel andere Bedürfnisse als jemand mit motorischen Einschränkungen. Die Einsendeaufgaben haben mir in diesem Modul viel Spaß gemacht und bauten zum Teil auch aufeinander auf. Die Rückmeldung kam zum Teil recht langsam, dann oft schubweise für mehrere Aufgaben, aber das war mir ja so angekündigt worden und ich hatte entsprechend geplant. Auch die Korrektur der Präsenzklausur ließ ein Weilchen länger auf sich warten. Dies mag aber auch den Sommerferien geschuldet gewesen sein. Die Präsenzklausur fand ich leider nicht so einfach, obwohl viele meiner Kommilitonen der Ansicht waren, im Falle von "Web-Anwendungen 1" sei sie ja besonders leicht. Viele meiner Mitstudierenden arbeiten als Web-Entwickler und haben täglich mit den Inhalten dieses Moduls zu tun. Solche Routine ist natürlich mit Pauken nicht zu ersetzen. Mein Problem war denn auch in erster Linie die Zeit, die ich für die Aufgaben brauchte. Hier ist es mir leider nicht gelungen, alles zu bearbeiten. Ein weiteres Problem war das Arbeiten mit Stift und Papier, ohne zwischendurch einmal sehen zu können, wie das nun im Browser dargestellt wurde. Ich hatte zwar auch für diese Klausur einige Aufgaben noch einmal von Hand bearbeitet, aber dieser Aspekt blieb für mich schwierig. So befürchtete ich denn, bei diesem Modul schlechter abzuschneiden als bei "Webprogrammierung". Das hätte mich sehr geärgert, weil ich das Gefühl hatte, diesmal den Stoff viel besser verstanden zu haben. Zum Glück hatte ich beim Abschlusstest und der Online-Klausur ziemlich gut abgeschnitten, so dass mir die Bonuspunkte halfen, ein paar Schwächen in der Präsenzklausur auszugleichen. Insgesamt endete es nicht schlechter als in "Webprogrammierung", so dass ich nicht nur mit dem Modul sondern auch mit dem Ergebnis zufrieden war. Anderen Studierenden im Studiengang Web- und Medieninformatik würde ich empfehlen, sowohl in "Webprogrammierung" als auch in "Web-Anwendungen 1" reinzuschnuppern. Und sich dann zu überlegen, ob sie "Web-Anwendungen 1" nicht entgegen der Empfehlung der W3L zuerst belegen möchten.
  14. Habe ich an dieser Stelle nicht versucht, weil ich vermutet habe, dass der Abschnitt für die Klausur nicht relevant ist. Das erschien mir eher als Nebenschauplatz, wo noch mal schnell etwas vorgestellt wurde. In erster Linie helfen die Tutoren bei Fragen zum Kursinhalt und bei Problemen mit Übungen und Aufgaben. Wenn irgendeine Bibliothek oder ein Tool verwendet wird, ist im Kurs in der Regel eine kurze Installationsanleitung vorhanden. Da sich Software schnell weiterentwickelt, ist die aber oft schon nicht mehr ganz aktuell. Da wird dann eher auf die Homepage des Herstellers oder des Projektes verwiesen, wo die Informationen zum aktuellen Release zu finden sind. Das finde ich auch sinnvoll so. Ich nehme mal die Bücher von Herbert Schildt als Beispiel. "Swing - A Beginner's Guide" hat 590 Seiten, "Introduction to JavaFX 8 Programming" nur noch 262. Der Untertitel des zweiten Buches ist "A Fast-Paced Guide to JavaFX GUI Programming Fundamentals". Fast-paced scheint es zu treffen. Ich glaube nicht, dass das ein gutes Buch für Neulinge ist. Ich habe es nicht durchgearbeitet, aber syntaktisch scheint mir JavaFX-Code kompakter auszufallen als Swing-Code. Wenn ich mir die Code-Beispiele anschaue, habe ich das Gefühl, gut nachvollziehen zu können, was passiert. Um so etwas selber schreiben zu können, müsste ich mir die Finger schmutzig machen: Die Beispiele durcharbeiten, mir Variationen ausdenken, rumprobieren, mir eigene Probleme überlegen und die lösen. Bei JavaFX kommen allerdings viele neue Features hinzu und wenn man die nutzen wollte, müsste man sich doch noch mal ganz anders einarbeiten. Letztlich weiß man ja nicht, mit welcher Sprache man später beruflich zu tun haben wird. Und natürlich gibt es zu jeder Sprache verschiedene GUI-Frameworks. Das kann nicht Sinn eines Studiums sein, die alle vorzustellen. Man muss ein paar grundlegende Konzepte verstehen. Was ist ein Action-Listener, wie funktioniert Event-Handling, was sind gängige GUI-Komponenten, was macht ein Layout-Manager? Solches Wissen ist übertragbar. GdI3 bemüht sich, solche Grundkenntnisse zu vermitteln und tut dies am Beispiel Swing.
  15. Nach Datenbanken, Mathe1 und SQL hatte ich richtig Lust, wieder einen Kurs mit Java zu belegen. Der nächste Kurs aus dieser Gruppe war "Grundlagen der Informatik 3: Anwendungen programmieren". Der Kurs deckt verschiedene Themen ab, die mit Anwendungsentwicklung zu tun haben. Aus meiner Sicht gibt es aber 3 inhaltliche Schwerpunkte: - GUI-Programmierung - Persistenz mit relationalen Datenbanksystemen - Erzeugung und Verarbeitung von XML-Dateien Der Kurs beginnt wie bei der W3L üblich mit einem Schnelleinstieg, der eine Art Überblick über die Themen des Kurses gibt. Bei GdI3 handelt dieser Schnelleinstieg aber nur von den GUI-Kapiteln, die auch mehr als die Hälfte des Kursumfangs ausmachen. Die GUI-Programmierung wird noch am Beispiel Swing behandelt, obwohl mit JavaFX ja ein aktuellerer Rahmen zur Verfügung steht. Das hat mich anfangs ein bisschen enttäuscht. Auf den ersten 40 Seiten lernt man das Grundgerüst einer Swing-Anwendung kennen; lernt, wie man ein Fenster durch Kompositon oder Vererbung erzeugt, macht erste Erfahrungen mit Event-Handling und lernt einfache Komponenten wie Textfelder und Buttons kennen. In diesem Zusammenhang muss man auch mit inneren Klassen und mit Lambda-Ausdrücken umgehen. Hier geht es zunächst gemächlich voran. Eine wichtige Rolle spielt stets die Darstellung der Zusammenhänge zwischen den Swing-Klassen durch Klassendiagramme in UML. Es geht in erster Linie um das Verstehen der Grundkonzepte. Für meinen Geschmack war es ein bisschen viel UML und ein bisschen wenig Code. Auch das Herumexperimentieren mit den Komponenten kam mir ein bisschen zu kurz. Hier musste ich mir selber zusätzliche Gelegenheiten suchen, das Gelernte durch kleine Experimente zu vertiefen. Auf das Buch, das ich ergänzend verwendet habe, verweise ich am Ende meines Beitrages. Es folgen 3 kürzere Kapitel über das Testen von GUIs, über GUI-Grafikeditoren und über Applets, die ja inzwischen keine so große Rolle mehr spielen. Da Applets am Anfang sehr wichtig für die Etablierung der Sprache Java waren, konnte man sie wohl nicht übergehen. Die Kapitel über Grafikeditoren sind nicht so umfangreich, dass man hinterher wirklich mit so einem Werkzeug umgehen könnte. Man weiß, dass es so etwas gibt und welche Vor- und Nachteile die Arbeit mit einem Editor haben kann. Ich habe die Aufgaben alle von Hand gecodet und ich glaube, so lernt man in diesem Stadium auch am meisten. Das Kapitel über Grafikprogrammierung fand ich nicht sehr zugänglich. Natürlich hätte man hier schnell zeigen können, wie man ein paar Linien und Formen zeichnet, aber die Intention war, zu vermitteln, was der Grafikontext ist und wozu man die Methode paint() überschreibt. Später im Kurs ist das einmal Grundlage dafür, Swing-Komponenten ein wenig zu erweitern und mit einer eigenen Optik auszustatten. Außerdem lernt man, wie man Grafiken lädt und anzeigt. Interessanter ist das Kapitel, das die Ereignisverarbeitung in Java im Detail behandelt. Hier lernt man das Beobachter-Muster kennen und begreift, wie Adapterklassen die Ereignisverarbeitung vereinfachen. Das Praxisbeispiel ist ein sehr einfacher UML-Editor. An diesem Punkt des Kurses begann mir zu dämmern, das GUI-Programmierung eine recht zeitaufwändige Angelegenheit sein kann. Man landet schnell bei ziemlich umfangreichem Code, der gar nicht mehr so leicht zu navigieren ist. Das für mich interessanteste Kapitel war "GUI-Gestaltung - Theorie und Praxis". Hier lernt man viele verschiedene Swing-Komponenten im Zusammenspiel kennen: Fenster, Menüs, Multifunktionsleisten, Listen, Dialoge und die unterschiedlichsten darin enthaltenen Interaktionselemente. Als Fallbeispiel dient eine Artikel- und Lieferantenverwaltung. Konzeptionell lernt man etwas über das MVC-Muster. Sehr interessant fand ich die Abschnitte, wie man auf der Grundlage der objektorientierten Analyse ein GUI konzipieren kann. Die hier vorgestellten Heuristiken sind für kaufmännisch-administrative Anwendungen gedacht, aber der Stoff war sehr aufschlussreich, weil einem klar wird, dass man nicht immer das Rad neu erfinden muss. Lohnend war auch der Abschnitt über Layout-Manager. Hier ging es zunächst um die Layout-Manager, die Swing von Haus aus mitbringt. Es brauchte eine Weile, bis ich das Konzept des schon recht flexiblen GridBag-Layoutmanagers verstanden hatte. Wirklich schwierig fand ich die Ausführungen zur Entwicklung eigener Layout-Manager. Hier konnte ich nicht in allen Punkten folgen. Nach einem kurzen Kapitel über modellgetriebene Entwicklung am Beispiel von Enterprise Architekt landete man beim zweiten großen inhaltlichen Block: Persistenz mit relationalen Datenbanken. Ich hatte mir vorgestellt, recht pragmatisch zu lernen, wie ich mit JDBC eine Verbindung zu einer relationalen Datenbank wie z.B. MySQL aufbaue. Darum ging es auch zunächst, aber eigentlich ging es vor allem um das DAO-Muster, das Fachkonzept und Datenbank schön entkoppelt, so dass man z.B. die verwendete Datenbank relativ leicht wechseln könnte, ohne Code in den Fachkonzeptklassen ändern zu müssen. Man arbeitet allein an der schlanken Schnittstelle. Das wird dann schon recht komplex und ich habe eine ganze Weile gebraucht, bis ich das Zusammenspiel der vielen verschiedenen Klassen begriffen habe. Der Clou an der Angelegenheit ist natürlich, dass nicht jeder Entwickler verstehen muss, was hier im Detail passiert. In der Regel wird interessieren was vor der Schnittstelle passiert. Diese Abschnitte waren für mich sehr lohnend, weil ich hier das Gefühl hatte, nicht allein etwas über Java zu lernen. Weniger gelungen fand ich den Abschnitt über die Java Persistence API. Hier ist es mir leider auch nicht gelungen, die Codebeispiele aus dem Kurs zum Laufen zu bringen. Es folgt ein kurzes Kapitel über Nebenläufigkeit. Das ist nötig, weil Swing nicht threadsicher ist. Wer in Java GUIs programmiert muss sich mit Nebenläufigkeit auseinander setzen. Hier lernt man aber nur das nötigste, denn es gibt ein eigenes Modul "Nicht-sequentielle Programmierung", in dem Nebenläufigkeit viel ausführlicher behandelt wird. Nun folgte ein umfangreiches Fallbeispiel "Auftragsverwaltung", bei dem die verschiedenen Abschnitte der Entwicklung vorgestellt wurden: Pflichtenheft und Glossar, OOA-Modell, GUI, Architektur und Komponenten, OOD des Fachkonzeptes, Persistenzschicht und natürlich auch die Ausprogramierung der entwickelten Modelle. An diesem Punkt möchte ich erwähnen, dass die Code-Beispiele in diesem Kurs viel umfangreicher sind als in GdI1 und GdI2. Anliegen des Kurses ist auch, dass der Lernende den Überblick über größere Mengen Code behalten kann. Die BlueJ-IDE aus den ersten beiden Modulen reicht hier nicht mehr aus. Die Studierenden sollen sich mit Eclipse vertraut machen. Die herunterladbaren Codebeispiele sind auch dafür aufbereitet. Ich mag Eclipse nicht und habe lieber mit Netbeans gearbeitet, was natürlich auch in Ordnung war, aber manchmal ein bisschen Mehrarbeit bedeutet hat. Bei vielen Aufgaben programmiert man nicht mehr "from scratch" sondern soll vorhandenen Code weiterentwickeln. Interessant waren auch Aufgaben, bei denen man Fehler aufspüren und beheben sollte. Dazu musste man erkunden, wie das Zusammenspiel vieler Klassen in unterschiedlichen Paketen funktioniert. Hier genügte oft wenig Code, um das Problem zu lösen, aber es kostete viel Zeit, zu verstehen, wo dieser Code hin musste, um seine Wirkung zu entfalten. Es verschaffte mir eine gewisse Befriedigung, mich in umfangreicheren Code einarbeiten zu können und mich dann auch darin zurecht zu finden. Den Abschluss dieses sehr aufschlussreichen Fallbeispiels bildeten 2 Abschnitte über Berechtigungssteuerung und Internationalisierung. Und nun begann der dritte größere inhaltiche Block des Kurses. Am Fallbeispiel der technischen Anwendung "Wetterstation" wurde die Verarbeitung von XML-Dateien behandelt. Die Wetterstation ist eine GUI-Anwendung, die sich Wetterdaten von einem Server holt und am Bildschirm in Form verschiedener Instrumente darstellt. Die Wetterdaten kommen im XML-Format und müssen geparst werden. Hier war ich froh, Webprogrammierung schon belegt zu haben, denn so hatte ich Vorkenntnisse in XML. Zwar gab es auch hier eine knappe Einführung in XML, aber allein damit wären mir diese Abschnitte schwer gefallen. Im letzten Kapitel wurde am Beispiel Othello (oder auch Reversi) ein Strategiespiel mit GUI entwickelt. Hier spielt Grafikprogramierung eine Rolle, aber eigentlich ging es um den Minimax-Algorithmus, der den besten Zug ermitteln sollte. Im Prinzip schon ein kleiner Vorgeschmack auf GdI4 "Algorithmen und Datenstrukturen". Für die Online-Klausur ist es nützlich, den Code der Übungen und Aufgaben griffbereit zu haben. Manche Aufgaben hätte ich in der zur Verfügung stehen Zeit nicht ausprogrammieren können, wäre mir nicht recht früh aufgefallen, dass ich Code aus vorangegangenen Übungen anpassen kann. Ich nehme an, dass war hier auch Zweck der Übung. Da man bei der GUI-Programmierung recht schnell bei umfangreichem Code landet, war ich natürlich sehr gespannt auf die Präsenzklausur. Wie wollte man den umfangreichen Inhalt in der kurzen Zeit abprüfen? Tatsächlich musste ich relativ wenig Code schreiben. Hier ging es um das Verständnis für die Zusammenhänge zwischen den verschiedenen Swing-Klassen und sehr allgemein um die objektorientierten Konzepte aus dem Modul. Sehr nützlich wäre es hier gewesen, noch einmal Stoff aus GdI2 zu wiederholen. In UML sollte man fit sein. Reines Programmieren genügte hier nicht. Ich hatte aber Glück und konnte das Modul mit einem schönen Ergebnis abschließen. Auch mit meinem Tutor hatte ich Glück. Er war derselbe wie in GdI2 und es war schön, in 2 aufeinanderfolgenden Modulen die auch noch inhaltlich eng zusammenhingen vom gleichen Tutor betreut zu werden. Von ihm habe ich nicht nur gute und schnelle Rückmeldungen zu meinen Aufgaben bekommen. Ich hatte auch immer wieder Fragen, die eher auf Nebengleise führten und gelegentlich bekam ich sehr interessante Anregungen. Das hat mal wieder Spaß gemacht. Anderen Studierenden, die GdI3 belegen wollen, würde ich empfehlen, zuvor "Webprogrammierung" und "SQL und relationale Datenbanken" zu belegen, um die Kapitel über XML-Parsing und Datenbankanbindung zu zu verstehen. Ein nicht zu großer zeitlicher Abstand zu GdI2 erscheint mir ebenfalls günstig. Insgesamt würde ich empfehlen, beim Bearbeiten von GdI2 gründlich vorzugehen. Die hier behandelten Grundlagen verfolgen euch über viele Module. GdI3 ist dafür ein gutes Beispiel. Ich hatte ja schon erwähnt, dass mir das praktische Herumprobieren mit Code im Modul ein wenig zu kurz kam. Hier habe ich mir selber eine alternative Möglichkeit gesucht, nämlich das Buch "Swing - A Beginner's Guide" von Herbert Schildt. Das ist kein Uni-Lehrbuch sondern ein praktisches Programmierbuch. Im wesentlichen stellt Herr Schildt Swing-Komponenten vor und zeigt an kleinen Codebeispielen, wie man sie benutzt. In jedem Kapitel gibt es auch kleine Übungsaufgaben. Das hat mir sehr viel gebracht, um zu lernen, wie ich die sehr gut aufbereiteten Konzepte aus dem W3L-Modul ganz praktisch in Java ausprogrammieren kann. Von Herrn Schildt gibt es auch ein einführendes Buch in JavaFX, das allerdings sehr dicht geschrieben ist und sich klar an Leser richtet, die Swing-Vorkenntnisse haben.
  16. Mein letztes Modul im ersten Semester sollte "Webprogrammierung" werden. Für Studierende im Studiengang "Web- und Medieninformatik" wird es als erstes Modul in diesem Fachgebiet empfohlen. Es ist zugleich Pflichtmodul im Studiengang "Wirtschaftsinformatik", wo es dem Fachgebiet Softwaretechnik zugeordnet ist. Für die Wirtschaftsinformatiker bleibt es das einzige Pflichtmodul, dass sich speziell mit Webtechnologien beschäftigt. (Sie belegen allerdings noch ein Modul zu Content Management Systemen.) Für die Webinformatiker ist es der Auftakt zu vertiefenden Modulen in HTML und CSS, in Multimedia, XML, Webdesign und serverseitiger Programmierung mit Java Server Pages. Der Wahlpflichtbereich bietet dann weitere Möglichkeiten, sich in diesem Bereich zu entwickeln, auch für die Wirtschaftsinformatiker. Doch zurück zum Modul "Webprogrammierung". Es handel von folgenden Themen: - XHTML - CSS - Javascript - XML - PHP - Java Server Pages - ASP.Net - und eine sehr knappe Einführung in Ajax Der Kurs beschäftigt sich also mit semantischem Markup, Styling und Layout, clientseitiger Programmierung und serverseitiger Programmierung. Das erste Kapitel behandelt XHTML. HTML5 war anscheinend bei der letzten Überarbeitung noch nicht so weit, auch wenn es im einführenden Kapitel kurz vorgestellt wird. Für die Bearbeitung der Aufgaben ist die XHTML-Syntax verbindlich, die in verschiedenen Punkten ein bisschen strenger ist. Inhalte hier sind z.B.: - Grundlegender Aufbau eines XHTML-Dokumentes - Links - Bilder - Bereiche - Tabellen - Formulare Im Grunde keine schlechte Einführung, die aber für meinen Geschmack ein wenig knapp ausgefallen ist. Möglicherweise ging man bei der Konzipierung des Moduls davon aus, dass viele Studierende in diesem Gebiet Vorkenntnisse haben. Dies trifft auch für viele meiner Kommilitonen zu, die z.B. als PHP-Entwickler arbeiten. Mit solch einem Hintergrund sollte das Kapitel zu XHTML tatsächlich recht leicht fallen. Ich ging mit wenig Vorkenntnissen in den Kurs, hatte keine Schwierigkeiten, die vorgestellten Konzepte zu verstehen, merkte aber bei den Übungen, dass ich in der Anwendung nicht richtig sicher wurde. Ein Besonderheit in diesem Kurs: Es gibt vergleichsweise wenige Einsendeaufgaben; in der Regel zu jedem Kapitel eine. Vor Bearbeitung jeder Einsendeaufgabe wird die Bearbeitung einiger Übungsaufgaben vorgeschlagen, zu denen man sich Musterlösungen runterladen kann. So kann man selbst vergleichen und schauen, ob die eigene Lösung sinnvoll und richtig war. Natürlich kann man so eine Menge lernen und ich fand die Übungen auch didaktisch gut gewählt und erkannte einen sinnvollen Aufbau. Ein wenig mehr Tutorinteraktion hätte mir aber besser gefallen, zumal das in anderen Modulen ja auch möglich ist. Die Einsendeaufgaben fassten aber meist ganz gut die einzelnen Fähigkeiten aus den vorangegangenen Übungen zu einer komplexeren Gesamtaufgabe zusammen. Im nächsten Kapitel ging es um CSS. Themen waren hier zum Beispiel: - Vererbung, Kaskadierung - Tabellengestaltung - Layoutgestaltung mit float - Absolutes Layout Responsive Webdesign spielte in diesem Modul keine Rolle. Weiter ging es mit Javascript als clientseitige Programmiersprache. Hier ging es ums DOM, um Event Handler und um die Validierung von Formularen. Auch dieses Kapitel war für meinen Geschmack recht knapp. Ich hatte keine Schwierigkeiten, den Stoff nachzuvollziehen, merkte aber bei den Übungen, dass es einfach zu schnell gegangen war, um eine gewisse Sicherheit im Umgang mit der Sprache zu entwickeln. Auch merkte ich, dass mir die solide Grundlage in HTML und CSS fehlte, so dass ich immer wieder im Lehrtext zurückgehen musste. Javascript sieht Java auf den ersten Blick ähnlich, hat aber ein anderes Sprachkonzept. Bei den Übungen hatte ich oft das Problem, die gewohnte Java-Syntax und die noch ungewohnte Javascript-Syntax zu mischen, was dazu führte, dass ich immer wieder viel Zeit für Fehlersuche aufbringen musste. Diese Verwirrung sollte sich um Laufe des Kurses noch steigern, wenn ähnliche Anwendungsbeispiele in verschieden Sprachen gezeigt wurden. So merkte man einerseits gut die Unterschiede zwischen den Sprachen, aber zugleich fiel es mir schwer, die Codebeispiele in meiner Erinnerung auseinander zu halten. Im folgenden Kapitel über XML ging es um: - den grundlegenden Aufbau einer XML-Datei - XML-Parser - die DTD - das XML-Schema - um XSL-Stylesheets Außerdem lernte man die Vorzüge eines XML-Editors kennen. Hier möchte ich erwähnen, dass die W3L ein eigenes Modul "XML" hat, dass wesentlich tiefer geht und das im Studiengang "Web- und Medieninformatik" Pflicht ist. Als Einführung ins Thema XML fand ich dieses Kapitel sehr gelungen. In den folgenden Kapiteln sollte es um serverseitige Sprachen gehen. Hier folgten im Schnelldurchgang: - PHP - Java Server Pages - ASP.Net Im PHP-Kapitel ging es natürlich um die Anbindung an MySQL, aber auch um einfache Dateiverarbeitung und die Realisierung eines Gästebuches. Eine Herausforderung im JSP-Kapitel ist, dass die Syntax häufig wechselt, denn auch EL, JSTL und JSF werden kurz angerissen. Das soll wohl einen Überblick über verfügbare Techniken vermitteln, stiftet aber aus meiner Sicht in dieser knappen Form eher Verwirrung. JSP hat nur einen geringen Marktanteil. Trotzdem lohnt es sich, dieses Kapitel gründlich zu bearbeiten, denn das Pflicht-Modul "Web-Anwendungen 2" behandelt ausführlich JSP. Auch im Wahlpflichtbereich kann man sich weiter mit Java als serverseitiger Sprache befassen, während es zum Beispiel zu PHP keine weiteren Module gibt. Sehr gelungen fand ich dafür das Kapitel zu ASP.Net. Hier ging es unter anderem um das Konzept der code behind Technik, die eine saubere Arbeitsteilung zwischen Front-End- und Back-End-Entwicklern ermöglichen soll. Hier habe ich gemerkt, dass die Einführung in C# aus dem Modul "Grundlagen der Informatik 2" doch recht knapp war. Mit meinen Java-Kenntnissen fand ich mich zwar schnell zurecht, aber an Details blieb ich doch oft hängen und verbrachte viel Zeit mit Fehlersuche. Gleichwohl hat mir besonders dieses Kapitel gut gefallen, weil ich dabei den Net-Framework als ein schönes Stück Technik schätzen gelernt habe. Schade, dass weder ASP noch C# im weiteren Curriculum der W3L eine Rolle spielen. Das letzte Kapitel stellte in sehr knapper Form die Möglichkeiten von Ajax vor. Hier habe ich definitiv nichts mehr mitnehmen können. Ich war einfach übersättigt von den rasch wechselnden Themen und hatte zu viel neue Syntax in zu kurzer Zeit verdauen müssen. Bei der Bearbeitung der Aufgaben merkte ich das daran, dass ich immer wieder die verschiedenen Sprachen mischte und verwechselte. Zusätzlich hatte ich in diesem Modul das Problem, dass meine Tutorin länger für die Korrektur meiner Aufgaben brauchte, als ich das bislang von der W3L gewohnt war. Wenn Feedback kam, war ich oft schon 2 Kapitel weiter, was es mir schwerer machte, die durchaus guten Tipps zu verwerten. Auch die Korrektur der Online-Klausur dauerte ein wenig länger, so dass ich beim Schreiben der Präsenzklausur noch nicht wusste, wieviele Bonuspunkte ich hatte. Für mich war es das erste Modul mit dem ich insgesamt unzufrieden war. Für meinen Geschmack wollte man hier zu viel auf einmal. Die Intention, einen Überblick über gängige Webtechnologien zu geben, die Themen semantisches Markup, Styling, client- und serverseitige Programmierung in einem Modul vorzustellen, war für mich nachvollziehbar. Aber nach der Bearbeitung hatte ich den Eindruck, dass weniger mehr gewesen wäre. Lieber hätte ich zunächst eine gründlichere Einführung in HTML und CSS erhalten. Diese Grundlage bringen natürlich viele Studierende schon mit, weshalb dieses Modul von vielen meiner Kommilitonen als eines der leichteren beschrieben wird. Für die Präsenzklausur hatte meine Tutorin mir den wertvollen Tipp gegeben, ein paar Aufgaben noch einmal mit Stift und Papier zu bearbeiten. Das hat mir tatsächlich geholfen, ein paar syntaktische Grundstrukturen "in die Finger" zu kriegen, wodurch ich in der Klausur etwas schneller war. Die Note war für mich zwar erfreulich, aber das gute Gefühl, sich den Stoff richtig angeeignet zu haben, blieb in diesem Modul für mich aus. Die Klausur deckte die Themen des Kurses recht breit ab, so dass ich anderen Studierenden empfehlen würde, alle Kapitel zu wiederholen. Meine Tutorin hat mir übrigens am Ende erklärt, warum die Bearbeitung in meinem Fall etwas länger gedauert hat als üblich, und das war für mich auch gut nachvollziehbar. Da ich bald das Modul "Web-Anwendungen 1" belegen wollte, das ebenfalls von ihr betreut wurde, plante ich eine etwas längere Bearbeitungszeit ein und belegte parallel GdI3 "Anwendungsprogrammierung". Rückblickend muss ich sagen, dass es hilfreich war, das Thema der längeren Korrekturzeiten anzusprechen. Das Problem ließ sich dadurch zwar nicht sofort lösen, aber immerhin habe ich so einen guten Workaround finden können. Ich nehme daraus mit, dass es sich lohnt, sich mit den Tutoren über die eigenen Lernziele auszutauschen, auch und gerade was Klausurtermine und die angepeilte Bearbeitungszeit angeht. Wenn man rechtzeitig weiß, was einen erwartet - z.B. vorrübergehend etwas längere Korrekturzeiten - kann man einen Plan B machen. Rückblickend betrachtet, hätte ich lieber das Modul "Webanwendungen 1" als erstes bearbeitet. Hier erhält man die sehr gründliche Einführung in HTML5 und CSS, die ich mir von einem einführenden Modul in Webtechologien erhofft hätte. Dieser Kurs orientiert sich außerdem an Fallbeispielen, was für mich sehr zum Verständnis beigetragen hat. Aus meiner Sicht sollte "Web-Anwendungen 1" das erste Modul zu Webtechnologien sein. Doch darüber schreibe ich zu einem anderen Zeitpunkt mehr. Ich meine, das Modul leidet etwas unter seiner Doppelfunktion: Für die Wirtschaftsinformatiker ist es sozusagen die eierlegende Wollmilchsau. Es verschafft ihnen einen Überblick über verschiedene Webtechnologien, ohne allzu sehr in die Tiefe zu gehen. Für die Webinformatiker soll es zugleich eine Einführung sein, auf die umfangreiche Vertiefungsmodule folgen. Das erfordert ein paar didaktische Kompromisse. Als Sekundärliteratur für dieses Modul habe ich "HTML & CSS: Design and Build Websites" und "Javascript & JQuery: Interactive Front-End Web Development" verwendet. Beide Titel sind von Jon Ducket. Sie glänzen durch ein sehr aufgeräumtes Layout. Der Stoff wird in appetitlichen, kleinen Häppchen serviert und man hat eine schöne Gegenüberstellung von Code und grafischer Darstellung. Ich habe diese Bücher parallel zum Kurs gelesen und empfand die besonders ästhetische Form der Darstellung als ideale Ergänzung zum sachlichen und systematischen Stil des im Kurs verwendeten Lehrbuches.
  17. Im Modul GdI4 "Algorithmen und Datenstrukturen" wird ein Constraint Solver entwickelt. Das ist ein relativ komplexes Projekt, das ich leider nicht in allen Schritten nachvollziehen konnte. Zu meinem großen Bedauern hat die W3L bislang kein eigenständiges Modul KI. Für dieses Thema interessiere ich mich sehr, sowohl für die klassische KI als auch für neuere Ansätze wie z.B. künstliche neuronale Netze. Ich suche nach Möglichkeiten, hier zu gegebener Zeit ein Modul an einer anderen Hochschule zu belegen. Dafür brauche ich aber meiner Meinung nach noch ein paar Grundlagen.
  18. Das Modul Mathe1 - "Mathematisch-logische Grundlagen der Informatik" hat drei Autoren. Man bearbeitet ein Lehrbuch von etwa 300 Seiten. Da die Mathematik als Wissenschaftsdisziplin eine sehr komprimierte formale Ausdrucksform entwickelt hat, kann man auf wenigen Seiten viel sagen. Im Vergleich zu anderen Lehrbüchern auf FH-Niveau, die mir bekannt sind, beschränkt sich dieses Buch nicht allein auf die knappe formale Darstellung, z.B. bei Beweisen. Es hat auch viele ausführliche, beschreibende, kommentierende und informierende Passagen. Man kommt also beim Lesen stellenweise recht fix voran und hält sich dann wieder längere Zeit an wenigen Seiten, manchmal sogar an wenigen Zeilen auf. Ich nehme an, dies liegt in der Natur der Sache. Wie bei der W3L üblich, ist der gesamte Lehrtext in der Lernplattform aufbereitet verfügbar. Dort steht er im Mix mit Online-Tests, Einsendeaufgaben und natürlich Abschlusstest und Online-Klausur. Ich finde es entspannter und effektiver, mit dem Buch zu arbeiten. Mit Stift und Papier daneben, um Beispiele und Beweise gleich aktiv nachvollziehen zu können. Die Lernplattform rufe ich dann für Tests und Aufgaben auf. (Dies hat den Nachteil, dass die automatisch erstellte Statistik zur Bearbeitungszeit des Moduls nichts aussagt.) Das Buch soll erkennbar einen sanften Einstieg in das Thema Mathematik bieten, das für Informatik-Studiengänge unumgänglich aber auch bei vielen Studierenden unbeliebt und zum Teil sogar gefürchtet ist. Zunächst geht es um: - Aussagenlogik - Prädikatenlogik Hier gibt es inhaltliche Bezüge zum Modul "Rechnerstrukturen und Betriebssysteme", wo man z.B. Schaltnetze und Schaltwerke aufbaut. Dort ist sozusagen die Aussagenlogik in Hardware realisiert. Hier nähert man sich dem Thema auf formale Weise, arbeitet mit Stift und Papier. Dieser Abschnitt des Kurses fiel mir recht leicht, weil ich einmal an der Uni meiner Heimatstadt mehrere Kurse in formaler Logik belegt hatte. Das war an der philosophischen Fakultät, die auch einen Schwerpunkt in analytischer Philosophie hatte und darum viele Veranstaltungen zum Thema Logik und formale Sprachen anbot. Bei mir war es das Interesse an den Arbeiten von Ludwig Wittgenstein, das mich in diese Veranstaltungen getrieben hat. Dort haben wir zum Beispiel Vollständigkeitsbeweise geführt. Im Modul der W3L wird vergleichsweise weniger verlangt, gerade im Bereich der Prädikatenlogik. Für Leser, die im Bereich der Logik noch wenig Vorkenntnisse haben: In der Aussagenlogik ist die kleinstmögliche Einheit, die betrachtet werden kann, die Aussage. Sie kann wahr oder falsch sein. Einfache Aussagen werden nun mit Verknüpfungen wie "und" und "oder" oder auch der "Implikation" verknüpft zu komplexeren Aussagen und man möchte untersuchen, welche Wahrheitswerte diese komplexeren Aussagen in Abhängigkeit von den Wahrheitswerten der einfachen Aussagen annehmen. Elektronisch kann man die Verknüpfungen in Formen von Logik-Bausteinen realisieren und Spannung oder keine Spannung steht für wahr oder falsch. In der Programmierung begegnet einem die Aussagenlogik vor allem bei bedingten Verzweigungen im Programm, wenn verschiedene Bedingungen mit logischen Operatoren verknüpft werden, in Java z.B. mit "!","&&","||". In der Prädikatenlogik wird die Aussage logisch weiter zerlegt. "Der Ball ist rot." wäre in der Aussagenlogik eine atomare (also nicht weiter zerlegbare) Aussage. In der Prädikatenlogik wird hier von einem Objekt behauptet, dass es eine Eigenschaft hat. Genauer gesagt, behauptet man von einem Objekt, dass es einer Klasse zugehörig ist. "Das Objekt Ball ist der Klasse der roten Dinge zugehörig." Interessant wird es, wenn man solche Aussagen mit sogenannten Quantoren verknüpft. Diese entsprechen dem natürlich-sprachlichen "es gibt ein..." und "für alle ... gilt ...". Hier kann man vielleicht schon ahnen, dass das schon eine Menge mit Mathematik und mathematischen Beweisen zu tun hat. Es ist auch der Stoff, aus dem viele Logikrätsel in Zeitschriften sind. Den Abschluss des Kapitels bietet ein kurzer Überblick über Thema Vollständigkeit, Konsistenz, Entscheidbarkeit. Gödels Unvollständigkeitssatz wird erwähnt, auch seine Bezüge zum Halteproblem in der Informatik. Erwähnt wird auch, dass sich für die Aussagenlogik und Prädikatenlogik sowohl die Widerspruchsfreiheit als auch die Vollständigkeit beweisen lässt. Geführt wird dieser Beweis im Lehrbuch allerdings nicht. Hier wird von Philosophiestudenten der ersten Semester mehr erwartet als von angehenden FH-Informatikern. Schön finde ich trotzdem, dass das Thema vorgestellt wurde, denn es hat interessante erkenntnistheoretische Implikationen, auch wenn es für die Programmierung nicht direkt relevant ist. Wer Lust hat, sich diesem Thema einmal auf recht amüsante und gut verdauliche Weise zu nähern, dem möchte ich gerne das Comic "Logicomix: Eine epische Suche nach Wahrheit" von Apostolos Doxiadis und Christos Papadimitriou empfehlen. Es handelt vom Leben Bertrand Russells und dem Projekt des logischen Positivismus. Gödel, Wittgenstein und Frege treten als Nebenfiguren auf. Es macht viel Spaß. Im nächsten Kapitel werden zwei Anwendungen der klassischen Logik vorgestellt: - Boolesche-Netze - Expertensysteme Expertensysteme sind ja vielen im Zusammenhang mit dem Thema klassische KI geläufig. Von booleschen Netzen hatte ich noch nicht gehört. Sie sind letztlich eine Dynamisierung der Aussagenlogik. Es gibt ein Netz aus Knoten, die miteinander verbunden sein können. Jeder Knoten hat einen von 2 Zuständen - wahr oder falsch. Insofern entsprechen die Knoten Aussagen. Das Netz hat zu jedem Zeitpunkt einen Zustand - die Wahrheitswerte der Knoten. Das interessante ist nun, dass Knoten im Booleschen Netz ihren Zustand an verknüpfte Knoten senden und deren Zustand empfangen. Es sind logische Verknüpfungen (Junktoren) definiert, wie sich der Zustand jedes Knotens in Abhängigkeit vom Zustand der verknüpften Knoten ändert. Das ist die Dynamik. Nun untersucht man, ob wie das System in einen stabilen Zustand (Attraktor) hineinläuft. Man kann zeigen, dass boolesche Netze äquivalent zu Turingmaschinen sind. Aber keine Angst, das ist dann nicht mehr Gegenstand dieses Moduls. Für die Klausur erwartet wird lediglich, dass man in einem gegebenen booleschen Netz Folgezustände aus einem Anfangszustand berechnen kann und etwas über Attraktoren und nach welcher Vorperiode sie erreicht werden sagen kann. Es folgt ein kleiner Ausflug in die Modallogik, eine Erweiterung der klassischen Logik. Sie ermöglicht Aussagen über das MÖGLICHE und das NOTWENDIGE. Philosophisch betrachtet kann man sich vorstellen, dass es etwas, das falsch ist, in einer alternativen Welt war sein könnte. (Möglichkeit) Oder dass etwas, das wahr ist, in jeder alternativen Welt wahr sein muss. (Notwendigkeit) Dieses Kapitel ist NICHT klausurrelevant. Ich erwähne das, weil es im Modul immer wieder kleinere Ausflüge in benachbarte Themengebiete gibt, um Bezüge zwischen Mathematik/Logik und anderen Wissensgebieten zu zeigen. Die Modallogik ist z.B. vor allem für Philosophen interessant. Wer möchte, kann sich hier ein bisschen breitere Bildung holen. Wer nur auf Bestehen der Klausur aus ist, könnte hier auch ein paar Seiten überspringen, würde aber etwas verpassen. Insgesamt bemühen sich die Autoren sehr, immer wieder Verknüpfungen zwischen der Mathematik, praktischen Anwendungen und anderen Wissenschaftsdisziplinen herzustellen, was diesen Kurs für mich auch zu einem ästhetischen Erlebnis gemacht hat. Nun kommt ein - für mich eher trockenes - Kapitel über Beweistechniken. Die größte Herausforderung für Studierende ohne Abitur dürfte hier das Prinzip der vollständigen Induktion sein, dass einem in diesem Modul immer wieder begegnet und auch in den Modulen Mathe2 und Mathe3 immer wieder aufblitzt. Wenn ich mich recht erinnere, tauchte das Thema bei mir auch in der Abschlussklausur auf. Wer also gerne richtig gut abschneiden möchte, sollte hier die praktischen Übungen (kleinere Beweise) nicht überspringen. Wer nur bestehen möchte, kann sich durchaus eine Lücke erlauben, aber seid vorgewarnt: Das Thema vollständige Induktion ist grundlegend und ihr werdet es so schnell nicht los. Weiter geht es mit Mengenlehre, die manchen älteren Semestern vielleicht noch aus der Schule bekannt sein dürfte. Unmögliches wird hier nicht verlangt. Die Mengenlehre war ja früher Teil des Schulcurriculums und war vor allem bei Eltern sehr unbeliebt, die nicht verstanden haben, warum man "so einen Blödsinn" lernt, statt im Mathematik-Unterricht anständig zu rechnen. Für Mathematiker ist Mengenlehre ein ungeheuer mächtiges Ausdrucksmittel und ein Werkzeug, mit dem sich viele Beweise führen lassen. Darum ist es gut, sich damit einmal auseinander zu setzen, auch im Hinblick auf spätere Module. Für die Klausur wichtig sind auch Betrachtungen zur Kombinatorik, also wie viele Kombinationen von a Elementen kann ich aus einer Auswahl von b Elementen bilden, je nachdem ob das gleiche Element mehrfach vorkommen darf oder auch nicht. Hier treten Begriffe wie Fakultät oder auch Binomialkoeffizient auf. Auch das wird in späteren Modulen wichtig, wenn es zum Beispiel um Bernstein-Grundpolynome geht. Bis hierhin bin ich gut zurechtgekommen, aber nun kam das Kapitel "Relationen". Und spätestens beim Thema "Ordnungsrelationen" wurde die Darstellung dann schon recht formal. Im Grunde beschreiben Ordnungsrelationen etwas einfaches. Sie stellen in einer Menge eine Rangfolge von Elementen her. Zum ordnet die Relation "x ist größer als y" die Menge der natürlichen Zahlen. Es gibt aber z.B. auch Ordnungen, in denen ein Element mehrere verschiedenen Nachfolger oder Vorgänger haben kann. Und dann kann es auch Elemente geben, die ich nicht paarweise vergleichen kann. Hier waren bei den Übungen durchaus Nüsse dabei, die ich nicht mehr knacken konnte. Und das bringt mich zu einem wichtigen Thema für Leute, die dieses Modul bearbeiten und auf Schwierigkeiten stoßen: Die Autoren EMPFEHLEN sehr viele Übungen und VERLANGEN die Bearbeitung von Online-Tests und Einsende-Aufgaben. Der Schwierigkeitsgrad der Übungen ist zum Teil viel höher als der der Einsendeaufgaben und Tests. Lasst euch also nicht entmutigen, wenn ihr nicht alle vorgeschlagenen Übungen schafft. In der Klausur werden vor allem die grundlegenden Konzepte aus den Themengebieten abgeprüft, keine Spitzfindigkeiten und Spezialfälle. Die Übungen sind eine Einladung, sich einmal herauszufordern und sich wesentlich gründlicher für die Prüfung vorzubereiten. Im Kapitel Relationen ging es dann auch um die sehr grundlegenden Begriffe der Abbildungen und Funktionen. Hier muss man z.B. prüfen, ob eine gegebene Funktion injektiv, surjektiv oder sogar beides (also bijektiv) ist. Außerdem geht es um Komposition von Abbildungen oder auch ihre Umkehrbarkeit. Wirkt alles oft sehr theoretisch, aber Achtung: Diese Konzepte kommen in den höheren Modulen wieder. Schafft euch hier eine solide Grundlage und ihr habt es später leichter. Es folgt das sehr ästhetische Kapitel über Graphentheorie, ein Thema, von dem die meisten Schulabgänger nie gehört haben. Graphen begegnen einem in der Informatik tatsächlich ständig. Viele Strukturen in der realen Welt lassen sich damit sehr schön und kompakt beschreiben. Das ist ein Kapitel, das mir Spaß gemacht hat, weil man auch immer wieder viel zeichnet und es überhaupt recht graphisch zugeht. Hier lernt man als kleinen Nebenschauplatz das berühmte "Königsberger Brückenproblem" kennen, das man in verschiedenen Variationen aus Rätselbüchern kennen könnte. Graphenalgorithmen spielen keine Rolle. Hier geht es um die begrifflichen Grundlagen. Die sind auch der klausurrelevante Stoff. Die Inhalte dieses Kapitels werden euch wieder begegnen in Modulen wie "Softwaretechnik", "XML", "Web-Anwendungen", "Algorithmen und Datenstrukturen" oder "Computernetze". Haltet den Stoff nicht für irrelevant, bloß weil hier Formeln eine weniger dominante Rolle spielen. Das Kapitel über Topologie hat mich intellektuell zum Teil überfordert. Zum Glück ist es nicht klausurrelevant. Nun kam das sehr wichtige Kapitel über algebraische Strukturen. Wichtig, weil es zum Beispiel im Modul Mathe3 "Angewandte Mathematik" wieder auftaucht, und zwar in den Kapiteln zur Kryptik. Dort wird zwar alles noch mal schnell wiederholt, aber arbeitet lieber hier gründlich, dann habt ihr es später leichter. Knapp gesagt geht es um Gruppen, Ringe, Körper und Vektorräume. Für die Klausur bekommt man zum Beispiel eine Menge und Verknüpfungen und muss dannuntersuchen, ob man es mit einem Körper zu tun hat. Macht das gründlich, auch wenn es euch zunächst sehr abstrakt vorkommt, und ihr nicht seht, wofür man es brauchen kann. Ihr werdet es brauchen, nicht nur für die Abschluss-Klausur. Im nächsten Kapitel geht es um Rekursivität. Die Konzepte und Begriffe, die ihr hier lernt, tauchen z.B. in den Programmiermodulen wieder auf, und zwar durchaus in sehr praxisrelevanter Form. Zur Auflockerung gibt es hier einen kleinen Ausflug in die fraktale Geometrie, der nicht klausurrelevant ist. Wenn ihr schon immer mal wissen wolltet, was es mit dem schönen "Apfelmännchen" auf sich hat, das ja zwischenzeitlich mal zur populären Ikone wurde, dann gönnt euch den Spaß. Sonst könntet ihr hier auch ein paar Seiten überspringen. Wichtiger für den angehenden Informatiker ist der Ausflug in die theoretische Informatik. Hier geht es um Zustandsautomaten und formale Sprachen. Das ganze wird nur angerissen und hier bedauere ich ein wenig, dass ein eigenes Modul "Theoretische Informatik" im Curriculum der W3L NICHT vorgesehen ist. Ein paar Themen tauchen in "Softwaretechnik 1" noch einmal vertiefter auf. Wer mehr "Appetit" auf so etwas hat, muss sich sein "Futter" woanders suchen. Erwähnt wird in diesem Kapitel auch die ungewöhnliche deklarative Programmiersprache PROLOG, mit der man logische Beziehungen gut ausdrücken kann. Leider viel zu knapp, um wirklich etwas damit anfangen zu können, aber immerhin schön, dass hier ein wenig Neugierde geweckt wurde. Praxisrelevanter sind die Abschnitte über "Wege aus endlosen Schleifen". Konkret geht es darum, dass Programme in der Regel irgendwann halten sollten, statt unendlich weiter zu laufen, und wie man das sicherstellen kann. Im folgenden Kapitel geht es um eine interessante Erweiterung der klassischen Logik - die sogenannte Fuzzy Logic, die eigentlich eher ein Fuzzy Set Theory ist. In der klassischen Mengenlehre ist ein "Ding" Element einer Menge oder nicht. In der Fuzzy Set Theory, kann es unterschiedliche Grade der Zugehörigkeit geben. Eine Schwalbe wäre dann "vogeliger" als ein "Pinguin" und eine Fledermaus, die in der klassischen Mengenlehre kein Vogel ist, könnte doch ein bisschen "vogelig" sein. Der Grad der Zugehörigkeit wird in der Regel als Zahl zwischen 0 und 1 ausgedrückt. Verknüpfe ich nun Aussagen über diese unscharfe Zugehörigkeit, bin ich bei der unscharfen Logik. Die kann man tatsächlich praktisch anwenden, zum Beispiel in der Steuerung. Klassisches Beispiel ist das Beschleunigen und Bremsen eines Portalkrans mit einer darunter hängenden Nutzlast. Das schöne an der Fuzzy Logic ist, dass man damit gut Faustregeln von Praktikern oder Fachleuten in einem Gebiet modellieren kann, so dass ein technisches System mit Faustregeln arbeiten kann. Im Kurs geht es allerdings zunächst mal um die begrifflichen Grundlagen, nicht um das, was der Ingenieur macht. Die Fuzzy Set Theory ist klausurrelevant. Den Abschluss bildet ein sehr knappes Kapitel über Komplexitätstheorie. Das Thema taucht zum Beispiel im Modul "Algorithmen und Datenstrukturen" wieder auf, wenn man verschiedene Such- und Sortieralgorithmen vergleicht. Ein wenig beschäftigt man sich auch mit zellulären Automaten, aber das ist eher ein reinschnuppern und hier würde ich mir für spätere Module mehr "Futter" erwarten. Insgesamt hat mir das Modul sehr viel Spaß gemacht. Ich kann mich noch gut an mein Heureka-Erlebnis erinnern, als ich Cantors Diagonalverfahren begriffen habe und endlich verstanden habe, warum es zwar unendlich viele natürliche Zahlen, rationale Zahlen und reele Zahlen gibt, aber wieso es gleich viele rationale und natürliche Zahlen aber mehr reele Zahlen gibt. Für so etwas zahlt einem später niemand ein Gehalt, aber der Mensch lebt nicht vom Brot allein. Zum Spaß am Modul hat auch die hervorragende Betreuung durch meinen Tutor beigetragen. Als ich mich ihm vorgestellt habe, habe ich gleich erwähnt, dass ich aus einem fachfremden Beruf komme und lange aus dem Thema Mathematik "raus" bin. Er hat mir ein wenig von seinem eigenen Werdegang erzählt, der ihn mehrmals über Fachgrenzen geführt hat, und mich sehr ermutigt, meinen Weg zu gehen. Wir hatten immer wieder einen interessanten fachlichen Austausch. In diesem Modul nicht allein zu konkreten Problemen mit Aufgaben, denn ich kam ganz gut zurecht. Ich hatte auch Fragen zu den vielen Ausflügen in benachbarte Themengebiete, die im Kurs skizziert waren. Hier merkte ich deutlich: Ich habe es mit einem Menschen zu tun, der gewohnt ist, über die Grenzen seines fachlichen Biotops hinaus zu denken und Wissensgebiete zu verknüpfen. So etwas gefällt mir grundsätzlich und so habe ich hier viele Anregungen für mich mitgenommen. Sehr spürbar war in diesem Modul auch ein aufrichtiges Bemühen, den Wieder- und Neueinsteigern ein bisschen mehr Begleitung zukommen zu lassen. Für das Modul Mathe1 aus meiner Sicht optimal. In den späteren Modulen ist die Betreuung auch sehr gut, aber die Atmosphäre ist ein bisschen sachlicher, der Ton etwas knapper und es wird schon mehr Selbstständigkeit erwartet. Das passt aus meiner Sicht alles gut zusammen.
  19. Im Bereich Mathematik möchte ich nicht nur die einzelnen Module beschreiben, sondern auch etwas zum Gesamtkonzept sagen, wie es für mich bislang erkennbar ist. Aus Gesprächen mit Kommilitonen weiß ich, dass Mathematik für viele Studierende ein "Angstfach" ist. Auch eine lästige Pflicht, die man irgendwie "abhaken" und dann hinter sich lassen möchte. Selten wird Mathematik als etwas beschrieben, das Spaß gemacht hat. Die anscheinend weit verbreitete Abneigung gegen Mathematik teile ich nicht. Zu Schulzeiten habe ich im Abitur einen Mathe-Leistungskurs gewählt. (Damals, als es noch Leistungskurse gab.) Mathematik gehörte für mich zu den Schulfächern, die mir Spaß gemacht haben und die mir relativ leicht gefallen sind. Das muss man vielleicht im Hinterkopf behalten, wenn man meine folgenden Modulberichte liest. Ich bin bislang gut zurechtgekommen, aber ich mag Mathe auch. Allerdings ist mein Abitur schon lange her. Und seit der Schule hatte ich wenig Gelegenheit, mich mit Mathematik zu beschäftigen, weil ich mir einen Beruf ausgesucht habe, der keinerlei Bezüge zu diesem Gebiet hat. Als ich mich über Informatik-Studiengänge informiert habe, spielte es also schon eine Rolle für mich, was in Mathematik verlangt wird. Verschiedene Unis und FHs bieten auch Vorkurse an, die den Einstieg erleichtern sollen. Einen solchen Kurs durchgearbeitet hatte ich nicht, aber reingeschnuppert. Und dabei gemerkt, dass ich mich noch ziemlich gut an den Stoff bis zur 10. Klasse erinnerte, von der Oberstufenmathematik aber nicht mehr viel übrig war. Die W3L bietet die Möglichkeit, sich zu den Modulen Probekapitel runterzuladen und mal "reinzuschnuppern". Darum wusste ich, dass es im Modul "Mathe2" bzw. "Mathematik für Informatiker" um Analysis und Lineare Algebra geht. Inhalte, die mir zu Abiturzeiten geläufig waren, mir aber nach vielen Jahren fremd vorkamen. Der Stoff von "Mathe3" bzw. "Angewandte Mathematik" war mir unbekannt. Hier geht es um Numerik, Grafik, Kryptik. Ich hatte also vor Mathematik nicht unbedingt Angst aber doch Respekt, weil mir dämmerte, dass es schon ein Stück Arbeit werden würde, mich nach langer Abstinenz wieder in dem Thema einzufinden. Im Bachelor-Studiengang "Web- und Medieninformatik" der W3L gibt es insgesamt 4 Mathematik-Module mit je 5 ECTS. Sie heißen: - Mathe1: Mathematisch-logische Grundlagen der Informatik - Mathe2: Mathematik für Informatiker - Mathe3: Angewandte Mathematik - Statistik Die Studierenden im Studiengang "Wirtschaftsinformatik" müssen Mathe3 "Angewandte Mathematik" nicht belegen, können es aber im Wahlpflichtbereich buchen. Da ich inzwischen das dritte Modul "Angewandte Mathematik" bearbeite, kann ich sagen, dass Mathe2 und Mathe3 inhaltlich sehr eng aufeinander aufbauen. Die beiden Module sind vom gleichen Autor geschrieben, der zugleich auch mein Tutor ist. Hier ist ein modulübergreifendes Konzept aus "einem Guss" erkennbar. Das Modul Mathe1 hat drei Autoren. Man merkt hier einen anderen Stil. Es geht erkennbar darum, den Studierenden einen sanften (Wieder-)Einstieg ins Fach zu bieten. In allen drei Modulen gibt es ein Bemühen, inhaltliche Bezüge zur Informatik herzustellen. Sehr gelungen finde ich das bislang in Mathe1 und Mathe3 gelöst. In Mathe2 wirkt es auf mich bislang ein wenig bemüht. Allerdings muss man sich klarmachen, dass Lineare Algebra und Analysis unbedingte Voraussetzungen für die anwendungsbezogenen Themen Numerik, Grafik und Kryptik aus dem dritten Modul sind. Da muss man also einfach durch, auch wenn man zwischenzeitlich nicht sieht, was das genau mit Informatik zu tun hat. An den Präsenztagen werden üblicherweise Tutorien zur Mathematik angeboten. Die bezogen sich bislang immer auf das Modul Mathe2, es ging also um Analysis und/oder Lineare Algebra. Dies scheinen die Themen zu sein, die den Studierenden am meisten Mühe machen. Zu Statistik kann ich bislang noch nichts sagen, da ich dieses Modul noch nicht belegt habe. Die W3L muss damit zurechtkommen, dass die Studierenden mit recht unterschiedlichen Vorkenntnissen kommen. Es gibt Studierende mit Abitur, das im Idealfall noch nicht lange zurückliegt. Die finden insbesondere im Modul Mathe2 viel bekannten Stoff. Es gibt aber auch Studierende ohne Abitur, die z.B. nach einer Ausbildung zum Fachinformatiker studieren. Für die ist der in den Mathe-Modulen behandelte Stoff oft Neuland und die Bearbeitung ist entsprechend zeitaufwändiger. Es gibt aber auch Abiturienten, die sich mit den Mathe-Modulen schwerer tun, z.B. mit den Modulen Mathe1 und Mathe3. Weil dort nämlich Stoff behandelt wird, denn man aus der Schule in der Regel nicht kennt. Manche Studierende möchten die Mathe-Module einfach nur bestehen. Mathematik gilt als eines der Fächer, an denen sich entscheidet, ob man das Studium beenden kann. Viele Studierende sind daher der Meinung, dass man die Mathe-Module nicht vor sich herschieben sondern zügig angehen sollte. Wenn es schief geht, soll es bald schiefgehen, bevor man viel Zeit und Geld investiert hat. Aber natürlich gibt es auch Studierende, die die Mathematik-Module mit dem Ehrgeiz studieren, dort gute Leistungen zu erbringen. Mein bisheriger Eindruck ist: Die W3L hat ein Mathematik-Konzept, dass beiden Fraktionen etwas bietet. Wer die Klausuren einfach gerade so bestehen möchte, hat eine gute Chance, wenn er sich in der Vorbereitung auf bestimmte Grundlagen konzentriert, mit denen er relativ sicher Punkte holen kann. Wer wirklich gut abschneiden möchte, muss auch bereit sein, sich breiter vorzubereiten und etwas mehr Selbstständigkeit zeigen. Das betrifft hier vor allem den Bereich Bonuspunkte. Für die Präsenzklausuren ist die Stoffmenge ein bisschen eingeschränkt. Nicht alles, was im Kurs behandelt wird, kann auch in der Klausur drankommen. Das gibt den Leuten, die nur bestehen wollen, die Möglichkeit, sich bei der Vorbereitung ein bisschen zu spezialisieren. Bei den Abschlusstests kann aber ALLES drankommen und auch bei den Online-Klausuren wird breit geprüft. Wer also mit ein paar Bonuspunkten in die Abschlussklausur gehen möchte, der muss sich schon mit dem ganzen Stoff so auseinandersetzen, dass er sein Verständnis unter Beweis stellen kann. Mir gefällt, dass es hier ein Angebot gibt, aus dem Leute, die Mathematik mögen, etwas machen können; das aber auch Leuten, denen Mathematik nicht so leicht fällt, eine realistische Chance bietet, ihr Studium erfolgreich zu beenden und ihre Stärken in den anderen Bereichen auszuspielen. Bedenken muss man allerdings: Sowohl für die Web- und Medieninformatiker als auch für die Wirtschaftsinformatiker ist Mathematik Pflicht und die Module gehen genau wie alle anderen Module in die Berechnung der Endnote ein. Abschließend möchte ich noch bemerken, dass die W3L ja mit der FH Dortmund zusammenarbeitet, die Mathematik-Module also FH und nicht Uni-Niveau haben. Gefragt ist also eher problemlösende Anwendung mathematischer Konzepte und weniger das Führen von Beweisen. Damit kann man eventuell in den Klausuren das letzte Quäntchen rausholen. Bestehen kann man aber auch, wenn man im Beweisen nicht so stark ist.
  20. Es geht ja auch darum, was man sinnvollerweise in der Fachkonzept-Schicht macht und was in der Persistenz-Schicht. Im Idealfall hat man eine schlanke Schnittstelle zur Persistenzschicht und könnte dann falls nötig, die Datenbank wechseln oder vorhandenen Code schnell an eine andere Datenbank anpassen. Das ist aber eher eines der Themen von "Grundlagen der Informatik 3", wo z.B. das DAO-Muster ausführlich behandelt wird. Als nächstes plane ich, etwas zu "Mathe 1" zu schreiben.
  21. Weiter ging es in meinem Online-Studium mit dem Modul "SQL und relationale Datenbanken". Dieses Modul war laut empfohlenem Studienplan für das zweite Semester vorgesehen. Bei den nötigen Grundlagen war allerdings nur "Grundlagen der Informatik 1" genannt. Grundkenntnisse der strukturierten und prozeduralen Programmierung sollten also reichen. Ich hatte schon "Grundlagen der Informatik 2" bestanden, war also der Meinung, gut gerüstet in den Kampf zu ziehen. In diesem Kurs gab es zwei Lehrbücher: - SQL: Der Einstieg in die deklarative Programmierung - Datenbank-Anwendungen entwerfen & programmieren Im SQL-Buch ging es zunächst um eine Einführung in diese Sprache. Wie bei der W3L üblich, gab es ein einführendes Kapitel, indem alle Themen des Buches knapp angerissen waren, so dass man ungefähr wusste, was im Laufe des Moduls auf einen zukommen würde. Das nächste Kapitel war dann detaillierter. Es ging um: - Anlegen von Tabellen, Schlüsselspalten, Primärschlüssel - Datentypen, Domains als selbst-definierte Wertebereiche - Werteeinschränkungen durch Regeln Hier fiel mir die erste Sache auf, an der ich mich im Kurs stören sollte: Zu Beginn des Kurses war erklärt worden, wie man auf seinem System MySQL und Firebird installiert. Ich war davon ausgegangen, das eine ODER das andere zu brauchen und MySQL bzw. MariaDB ist ja bei den meisten Linux-Systemen sowieso dabei. Der Kurs hat aber nicht den Anspruch, den Studierenden in ein bestimmtes Datenbanksystem einzuführen. Vielmehr geht es um SQL als Sprachstandard, der in verschiedenen Implementierungen mehr oder weniger konsequent und umfassend realisiert ist. MySQL und Firebird dienen als Beispiele für Implementierungen, die sich in verschiedenen Punkten unterscheiden. Viele Code-Beispiele aus dem Lehrbuch liefen unter MySQL nicht. Ich sah mich so gezwungen, zwischen MySQL und Firebird zu wechseln, Code in beiden Umgebungen auszuprobieren, meine eigenen Datenbanktabellen in beiden Systemen anzulegen, was Zeit kostete. Das kam mir anfangs sehr umständlich und didaktisch nicht gelungen vor. Im Laufe der Zeit wurde mir jedoch klar, um was es dem Kursautor ging. Ich sollte verstehen, was relationale Datenbanken sind und was SQL als allgemeiner Sprachstandard ist, unabhängig von einem bestimmten Produkt. Im Laufe des Kurses wurde ich flexibler und habe mir parallel auch noch PostgreSQL installiert, habe auch mit verschiedenen graphischen Tools experimentiert und dann wieder viel auf der Kommandozeile gearbeitet. Man bekommt ein Gefühl dafür, was den Kern von SQL ausmacht, der sich nicht so schnell ändert. Man erhält auch einen Eindruck davon, wie man arbeiten müsste, um eine Datenbank leichter auf eine andere Implementierung migrieren zu können. Am Ende des Moduls wusste ich, dass ich mich wenn nötig in jede Implementierung einarbeiten kann, weil einfach Grundlagen da sind, auf die ich mich verlassen kann. Es dauerte natürlich eine Weile, an diesem Punkt zu kommen, und so war ich in den ersten Kapiteln oft unzufrieden mit dem didaktischen Asatz, dessen Sinn ich noch nicht verstand. Weitere Themen waren: - Selektionen und Projektionen - Spaltenausdrücke - Suchen mit Mustern, - Verknüpfte Ausdrücke - Mengen als Vergleichswerte - Einfügen und Aktualisieren von Datensätzen - Restrukturieren von Tabellen - Änderungen an Tabellen mit Daten - Änderungen von Domänen - Löschen von Informationen - Spaltenfunktionen von Gruppierungen Bis hierhin hatte man in der Regel mit einzelnen Tabellen gearbeitet. Der Kurs war bis hier auch recht syntaxlastig. Das machte sich auch in den Online-Tests bemerkbar, die zum Teil etwas spitzfindig formuliert waren. So halbwegs begriffen zu haben, reichte nicht. Zum Teil schien es mir, als seien bewusst kleine Ungenauigkeiten in die Fragen eingebaut, um dem Lernenden eine kleine Falle zu stellen und zu checken, ob er wirklich genau aufgepasst hatte. Auch das ärgerte mich zunächst. Ich lernte aber so auch, genauer hinzuschauen. Im Laufe der Zeit habe ich diese Art der Tests zu schätzen gelernt. Auch die Einsendeaufgaben wurden auf diese Weise korrigiert. Ungefähr richtig reichte nicht. Mein Tutor erwartete Präzision. Die Rückmeldungen im Fehlerfall waren recht knapp, so dass ich gerade am Anfang oft nachhaken musste. Der Sinn blieb mir zunächst verborgen. Im Laufe der Zeit merkte ich, dass mir der Tutor immer nur einen kleinen Brocken hinwarf. Gerade genug, um selber einen Schritt weiter zu kommen. Ich habe gelernt, die Online-Dokumentationen intensiv zu nutzen und auch mit Sekundärliteratur zu arbeiten. Ein Stück weit meine Probleme selbstständig zu lösen, statt immer gleich um Hilfe zu bitten. Das Tolle war: Im Laufe der Zeit merkte ich, dass ich besser darin wurde, selbst nach Lösungen zu suchen. Im letzten Kapitel des ersten Buches ging es dann erstmals um das, was relationale Datenbanken ausmacht: Um die Verknüpfung von Tabellen über Fremdschlüsselbeziehungen und die damit verknüpften Probleme der Konsistenzhaltung. Ein kleiner Nebenschauplatz war die Einrichtung von dynamischen Wertebereichen über Fremdschlüsselbeziehungen. Nun kam das zweite Lehrbuch und das war deutlich anders als das erste. Ging es im ersten Lehrbuch relativ konkret darum, was man mit der Sprache SQL machen kann und wie man das konkret macht, kam hier erst mal viel Theorie: - Relationen und Operationen auf Relationen - relationsinterne und relationsübergreifende Abhängigkeiten Hier ging es zum Teil recht mathematisch zu. Der Vorteil: Mit dem eher praktischen Vorwissen aus dem ersten Lehrbuch war dieser Teil etwas leichter verdaulich. Gut wäre es hier gewesen, ich hätte schon das Modul Mathe1 beendet. Das war aber bei mir nicht der Fall, weshalb dieser Teil des Kurses für mich etwas zäher ablief. Es folgte ein recht umfangreicher Teil über Entwicklungsphasen einer Datenbank und darüber, wie man Sachverhalte und Beziehungen in Datenbanken modelliert. Insbesondere ging es darum, wie man Klassen, Vererbungsstrukturen und Assoziationen zwischen Klassen in Datenbanktabellen modelliert, also das, was man objekt-relationales Mapping nennt. Dieser Teil des Kurses war für mich sehr interessant, weil hier deutlich wurde, wie man objektorientierte Programmierung und Persistenz mit einem RDBMS zusammenbringen kann. Hier war ich heilfroh, "Grundlagen der Informatik 2" bereits bearbeitet zu haben, also die Einführung in die objektorientierte Programmierung. Ohne diese Grundlage wäre mir dieses Kapitel viel schwerer gefallen und ich finde, dass es für alle Studierenden sinnvoll wäre, diese Grundlage zu haben. Der Autor verwendete hier eine Erweiterung der UML, um Tabellenstrukturen zu modellieren und zu visualisieren. Dafür war auch ein graphisches Tool in Java mitgeliefert worden, dass auf meinem System allerdings gelegentlich "Zicken" machte und nicht immer stabil lief. Ich habe dann ein anderes Tools benutzt, um UML-Diagramme und Diagramme in erweiterter UML zu erstellen, was dann auch problemlos ging um vom Tutor ohne weiteres akzeptiert wurde. In nächsten Teil des Kurses ging es um Verbunde: - Theta-Verbunde - Auto-Join - Innere Verbunde - Verschachtelung von Verbunden - Äußere Verbunde Eine Rolle spielte hier auch immer wieder, was mathematisch gesehen passiert, wenn kartesische Produkte großer Tabellen gebildet werden und wie der User oder das RDBMS diesen Aufwand minimiert. Es folgten Kapitel über Unterabfragen, wobei insbesondere die korrelierten Unterabfragen schon etwas anspruchsvoller waren. Schließlich ging es noch um Mengenoperationen und den Umgang mit Views. Damit war der klausurrelevante Teil des Moduls abgedeckt. Das Modul war aber noch lange nicht vorbei. Es kamen Kapitel zu: - Datenschutz, Authentisierung, Gewährung von Privilegien, Entzug von Rechten, Rollen - Stored Procedures, Mengenverarbeitung von Datensätzen, Trigger, Transaktionen Gerade bei den letzten Themen gibt es große Unterschiede zwischen den Implementierungen. Hier begann ich auch, parallel zu Firebird mit PostgreSQL zu experimentieren. Es folgte eine kurze Einführung in JDBC. Der letzte Teil war dann ein Überblick über alternative bzw. konkurrierende Konzepte zur relationalen Datenbank. Hier wurde ein theoretischer Überblick gegeben. Und es gab ein paar praktische Übungen mit der CouchDB. Das war jedoch eher ein Reinschnuppern und vertiefte in erster Linie das Verständnis für die besonderen Eigenschaften und auch Nachteile relationaler Datenbanken. In diesem Kurs gab es zwei Abschlusstests und zwei Online-Klausuren, eine für jeden Kursteil. Die Bonuspunkte, die man so erwerben konnte, zählten darum nur jeweils zur Hälfte. Für die Präsenzklausur hatte ich mich nicht optimal vorbereitet. Ich hatte vor allem den Umgang mit den Sprachelementen von SQL geübt. Bei den Aufgaben ging aber viel Zeit für Modellierung und Normalisierung drauf. Es mussten UML-Diagramme bzw. Diagramme in erweiterter UML gezeichnet werden, was in der Klausur natürlich von Hand geschieht. Da muss man sich beim Zeichnen schon ein bisschen Gedanken machten, wie am Ende alles gut aufs Blatt passt. Hier habe ich ein bisschen Zeit vergeudet. Zwar hatte ich das Zeichnen von Hand geübt, aber ich hätte hier noch mehr Energie reinstecken können. Dann wäre der Rest der Klausur entspannter gelaufen. Es folgte nämlich ein Teil, bei dem es konkreter um dem Umgang mit der Sprache SQL ging. Gegeben war eine Tabellenstruktur und nun sollten Abfragen formuliert werden, die bestimmte Informationen aus den Tabellen extrahierten. Viele Abfragen! Hier musste ich in kurzer Zeit eine Abfrage nach der anderen "hinschmieren", ohne Zeit zu haben, irgendetwas noch einmal zu überprüfen oder lange über die Antwort nachzudenken. Insofern war ich nach der Klausur in großer Sorge, viele Punkte verschenkt zu haben. Diese Sorge war zum Glück unnötig. Ich hatte zu Hause geübt, solche Aufgaben auf Tempo zu lösen und hatte anscheinend viele Treffer, obwohl ich in der knappen Zeit nur "aus der Hüfte schießen" konnte. Trotzdem würde ich mich rückblickend betrachtet anders vorbereiten und vor allem den Themen "Modellierung" und "Normalisierung" mehr Aufmerksamkeit widmen. Der Kurs ist eine gute Grundlage für "Grundlagen der Informatik 3". Dort geht es zwar hauptsächlich um GUI-Programmierung, aber Persistenz und Schnittstellen zu Datenbanken ist ein weiterer großer Themenbereich. Zwar erhält man in GdI3 eine knappe Einführung in MySQL, aber ich war schon sehr froh, mit einem umfangreicheren Vorwissen zu arbeiten. Insgesamt habe ich aus dem Modul etwas anderes mitgenommen, als ich mir zu Beginn erwartet hatte: Ich wollte lernen, mit MySQL umzugehen. Gelernt habe ich etwas nützlicheres, nämlich was eine relationale Datenbank ist. Auch mit meinem Tutor war ich am Ende sehr zufrieden, der mich eben nicht "mit dem Löffel gefüttert" hat, sondern mir durch seine eher knappen Hilfestellungen immer gerade genug Material gegeben hat, um selber eine Lösung zu finden.
  22. Genau so ist es. Darum liefert die Online-Klausur auch oft so wertvolle Rückmeldungen vom Tutor, wenn man sie rechtzeitig einreicht. Man bekommt einen Eindruck davon, wie bewertet wird. Die Einsendeaufgaben vermitteln auch einen gewissen Eindruck davon, aber die löst man nicht unter Zeitdruck, auch wenn eine geschätzte Bearbeitungsdauer angegeben ist. (Die ich selten einhalten kann.) Nach der Online-Klausur kann man evtl. noch nachfragen, was denn eine bessere Lösung gewesen wäre oder woran es im Detail gelegen hat, dass eine Aufgabe schlechter bewertet wurde als erwartet. Die kommt direkt vom Tutor zurück und er hat noch alles frisch im Kopf. Es ist wichtig, eine Vorstellung davon zu entwickeln, um was es in der Klausur geht. Kürzlich habe ich zum Beispiel eine Klausur zu Algorithmen und Datenstrukturen geschrieben. In der Bearbeitung des Moduls hat man recht viel in Java programmiert. In der Klausur spielte das Schreiben von Code aber eine kleinere Rolle. Es ging eher darum, die Arbeitsweise verschiedener Algorithmen verstanden zu haben, unabhängig von ihrer Implementierung in einer bestimmten Sprache. Die Online-Klausur hatte gezeigt, dass es in diese Richtung gehen könnte. Darum habe ich mich in der Vorbereitung viel mit den grundlegenden Konzepten beschäftigt. Ich habe noch kein Ergebnis, aber ich glaube, das war die richtige Strategie.
  23. Bei der Praxisaufgabe mit der Fähre konnte man verschiedene Konzepte aus dem Kurs im Zusammenspiel erleben: Vererbung, Polymorphie, Assoziation, Kapselung, Sichtbarkeit. Und das war noch mit einem Szenario verknüpft, dass insgesamt einen Sinn hatte. Ja, das hat viel Spaß gemacht. In dem erwähnten Buch von Barnes und Kölling sind auch viele schöne Projekte drin. Hier werden die Konzepte etwas kleinschrittiger und langsamer eingeführt. Generische Programmierung ist dort übrigens nicht so gut erklärt.
  24. Ja, die Online-Klausur ist freiwillig. Man kann damit Bonuspunkte sammeln, um das Ergebnis der Präsenzklausur ein wenig zu verbessern. Außerdem gibt die Online-Klausur oft einen gewissen Vorgeschmack von Art und Umfang der Aufgaben in der Präsenzklausur. Aber nicht immer. Manche Online-Klausuren kamen mir deutlich schwieriger vor als die Präsenzklausur. In anderen Fällen war es umgekehrt. Aber unterm Strich ist es eine sehr gute Idee, die Online-Klausur zu machen - und nicht in erster Linie wegen der Bonuspunke. Anders ist es mit dem Abschluss-Test. Den muss man bestehen, um zur Klausur zugelassen zu werden. Weil der automatisch ausgewertet wird, kann man den zu jeder Tages- und Nachtzeit machen. Außerdem muss man bei den Aufgaben 50% geholt haben, auch wenn dies für die Note keine Rolle spielt. Das ist manchmal ein Problem. Wenn zum Beispiel in einem Bundesland schon Sommerferien sind (NRW) und in einem anderen Bundesland noch nicht (Bayern) und der Tutor gerade im Urlaub ist. Dann lässt die Korrektur der Aufgaben auf sich warten, obwohl man sich vielleicht noch zu einer Prüfung anmelden möchte. Das kommt nicht oft vor und wird in der Regel auch angekündigt. Hier ist es hilfreich, den Tutor auch darüber zu informieren, wann man plant, in die Prüfung zu gehen und wie rasch man einen Kurs bearbeiten will. Wenn der Tutor die eigenen Ziele kennt, kann er frühzeitig auf geplante Abwesenheit hinweisen, einem in Aussicht stellen, dass er bestimmte Einsendeaufgaben noch rechtzeitig vor dem Klausurtermin korrigiert. Oder man plant die Modulreihenfolge bzw. Prüfungsreihenfolge etwas anders. Vieles ist möglich, aber dazu muss man mit den Leuten kommunizieren und die eigenen Ziele transparent machen. Es ist auch schon vorgekommen, dass meine Online-Klausur noch nicht korrigiert war, bevor ich in die Präsenzklausur gegangen bin. Eventuelle Bonuspunkte werden aber auf jeden Fall gewertet, wenn die Online-Klausur rechtzeitig eingereicht wurde.
  25. Mein drittes Modul bei der W3L war "Grundlagen der Informatik 2". Dieses Modul ist eine Einführung in die objektorientierte Programmierung mit Java. Eigentlich wäre dieser Kurs erst für das zweite Semester vorgesehen gewesen, aber nachdem mir GdI1 so viel Spaß gemacht hatte, war ich neugierig, wie es weitergehen würde. Inhalte des Moduls sind: - Objekte, Klassen, Konstruktoren, Botschaften - Attribute, Klassenattribute, Klassenoperationen - Pakte - Nutzen vorhandener Klassen (z.B. aus der Klassenbibliothek) - Hüllklassen für einfache Typen, Autoboxing, Autounboxing - Ausnahmebehandlung Sehr schön finde ich, dass es ein eigenes Kapitel über Assoziationen gibt. Die werden als wichtiges Grundkonzept der objektorientierten Programmierung oft übersehen. Es geht um: - Beziehungen zwischen Objekten und zwischen Klassen - Rollen - Assoziationsklassen, die allein existieren, um bestimmte Objekte zu verknüpfen - Navigierbarkeit - Containerklassen - den Abschluss bildet eine Einführung in das Singleton-Muster als erstes Entwurfsmuster Weiter geht es mit Vererbung: - Klonen vs. Kopieren - Identität vs. Gleichheit - Polymorphismus Echte Mehrfachvererbung gibt es in Java nicht. Einen gewissen Ersatz bietet das Schnittstellenkonzept. Um diese Konzepte zu vertiefen gab es eine sehr schöne Einsendeaufgabe, bei der das Beladen einer Autofähre mit verschiedenen Fahrzeugtypen simuliert werden sollte. Die Fahrzeugtypen stehen untereinander in einer Vererbungsbeziehung. Außerdem braucht man eine Containerklasse, die Fahrzeuge verschiedener Typen aufnehmen kann. Diese Aufgabe war umfangreicher, hat aber auch besonders viel Spaß gemacht. In GdI2 arbeitet man noch immer mit der relativ einfach BlueJ-Umgebung. (Wird jedenfalls von der W3L so empfohlen. Kann man natürlich auch anders machen.) Hier ist sehr schön, dass Klassenbeziehungen in der IDE graphisch dargestellt werden, was das Verständnis an diesem Punkt des Lernprozesses erleichtert. Mit zunehmender Komplexität wird die Darstellung allerdings unübersichtlich und es beginnt zu dämmern, dass man nicht für alle Ewigkeit mit BlueJ arbeiten wird. Schön an dem Kurs ist auch, dass die UML eine große Rolle spielt. Alles, was man in Java lernt, wird parallel in UML gezeigt, so dass man nebenbei lernt, Klassen-, Objekt- und Sequenzdiagramme zu lesen und selbst anzufertigen. Die von der W3L empfohlenen Tools fand ich allerdings zu mächtig und ressourcenhungrig. Ich arbeite meist am Laptop, wo allein die Bildschirmgröße eine Rolle dafür spielt, wie viele Informationen ich gleichzeitig angezeigt bekommen möchte. Hier habe ich mir wesentlich einfachere Tools gesucht, z.B. UMLet, mit dem man schnell einfache Klassendiagramme erstellen kann. Oder PlantUML, eine Skriptsprache zur Erstellung nicht nur von UML-Diagrammen. Um das Zeichnen von Diagrammen ging es immer wieder in den Einsendeaufgaben, nicht nur ums Programmieren. Es folgten Kapitel zu Persistenz und Datenhaltung. Hier ging es um: - sequentielles Lesen und Schreiben von Dateien - einfache Indexverwaltung - die Serialisierung von Objekten Schnittstellen zu Datenbanken blieben noch ausgeklammert. Das kommt erst in GdI3. Schließlich ging es um generische Programmierung. Hier verwendet man bei der Deklaration von Klassen und Methoden keine Typen sondern Platzhalter für Typen. So kann man eine Methode für alle möglichen Datentypen programmieren und behält trotzdem den Vorzug der Typsicherheit. Generische Programmierung kann man gut mit objektorientierter Programmierung kombinieren, aber jetzt wurde es schon ganz schön komplex. Nun kamen zwei Kapitel über Qualitätssicherung. Zuerst über konstruktive Qualitätssicherung. Hier geht es um Prinzipien des guten Klassen- und Methodenentwurfs, so dass Code zum Beispiel gut zu warten ist oder später leichter refaktoriert werden kann. Dieses Kapitel fand ich sehr interessant. Letztlich sind es Strategien, Qualität zu sichern, indem man Software auf saubere Weise plant und konzipiert. Dann ging es um analytische Qualitätssicherung. Das bedeutet, Qualität im Nachhinein zu messen, z.B. indem man Software testet. Dieses Kapitel fand ich sehr trocken, weswegen ich es nur halbherzig bearbeitet habe. Hier wollte ich auf Lücke lernen. Den Abschluss bildeten 2 kurze Kapitel über C++ und C# als Beispiele für andere objektorientierte Programmiersprachen als Java. Die waren allerdings viel zu kurz, um hinterher in diesen Sprachen programmieren zu können. Sie dienten eher dazu, ein gewisses Bewusstsein für die Besonderheiten von Java zu entwickeln. Am Beispiel von C++ kann man zum Beispiel lernen, was echte Mehrfachvererbung ist und wie diese sich von der Schnittstellenvererbung von Java unterscheidet. Außerdem begreift man, wieviel Arbeit einem Java mit der Garbage-Collection abnimmt. C# ist deswegen interessant, weil es für den .NET-Framework viele Sprachen gibt. Das Kapitel über C# ist auch nützlich, weil man in einem späteren Modul zur Webprogrammierung in ASP-NET reinschnuppert. Da ist es nützlich, C# einmal ausprobiert zu haben. In der Klausur hatte ich zwar ein zufriedenstellendes Ergebnis, aber das vor allem dank der Bonuspunkte, die ich in diesem Modul einfahren konnte. Rückblickend hätte ich mich ganz anders vorbereiten müssen. Nach den Erfahrungen mit GdI1 hatte ich erwartet, wieder viel Code schreiben zu müssen. Stattdessen spielte das Zeichnen von UML-Diagrammen eine große Rolle. Es wäre sinnvoll gewesen, solche Diagramme öfter von Hand zu zeichnen. Das hatte ich in der Bearbeitung des Moduls immer mit Software erledigt. Die kümmert sich darum, dass alles richtig proportioniert ist und auf die Seite passt. Beim Zeichnen von Hand muss man etwas vorausdenken. Das hätte man gut üben können und das hätte mir in der Klausur viel Zeit und damit verbundenen Stress erspart. Außerdem spielte die analytische Qualitätssicherung in der Klausur eine Rolle. Hier hatte ich nichts wiederholt, weil ich gehofft hatte, dieses für mich nicht so spannende Thema würde ausgespart bleiben. Auch, weil es ein eigenes Pflichtmodul zum Softwaretesten gibt. Aber nein, alles kann drankommen. Anderen Studierenden würde ich raten, in der Vorbereitung auf die Klausur alle Themen abzudecken und sich dabei auf die Grundkonzepte zu konzentrieren. Rückblickend betrachtet ist das Anliegen dieses Kurses nicht allein die Programmierung in Java sondern vor allem die Vermittlung objektorientierter Grundkonzepte. Diesen Kurs fand ich didaktisch sehr gelungen. Allerdings bin ich mit Vorkenntnissen hineingegangen. Ich hatte zuvor das Buch "Java lernen mit BlueJ" von David Barnes und Michael Kölling durchgearbeitet. Das war eine sehr gute Vorbereitung auf das, was mir in GdI2 abverlangt wurde. Dieses Buch kann ich jedem empfehlen, der sich auf einen einführenden Kurs in objektorientierter Programmierung vorbereiten möchte. Besonders ist hier der "objects first"-Ansatz. Während die meisten Lehrbücher zunächst einmal strukturierte Programmierung zeigen und dann die objektorientierten Konzepte nachschieben, beginnen Barnes und Kölling mit Objekten und Klassen. Möglich wird dies durch die BlueJ-Umgebung, einer IDE die nicht nach Produktivitäts- sondern nach didaktischen Gesichtspunkten konzipiert ist. Und durch viele halbfertige Projekte, wo schon viel Code da ist, den man noch nicht im Detail verstehen muss. Aber beim Arbeiten mit diesen Bausteinen lernt man viel über die objektorientierten Konzepte. Vieles in GdI2 wäre mir ohne diese Grundlage schwerer gefallen. Lobend erwähnen möchte ich auch meinen sehr guten Tutor, der mir viele Fragen beantwortete, die nicht direkt mit den Anforderungen des Kurses zu tun hatten. Bei ihm merkte man deutlich, dass er aus der Praxis kommt. Im Gegensatz zur Tutorin aus GdI1 forderte er an vielen Stellen schon einen knapperen, weniger expliziten Programmierstil.
×
  • Neu erstellen...