Zum Inhalt springen

kurtchen

Communitymitglied
  • Gesamte Inhalte

    766
  • Benutzer seit

  • Letzter Besuch

Blogbeiträge erstellt von kurtchen

  1. kurtchen
    Warum ich das Modul "Programmieren in C++" belegt habe
     
    Das Modul "Grundlagen der Informatik 2" ist im Curriculum von Springer Campus das einführende Modul in die objektorientierte Programmierung; und zwar sowohl im Studiengang "Web- und Medieninformatik" als auch in "Wirtschaftsinformatik". Die Lehrsprache ist Java, was derzeit an deutschen FHs und Uni nicht unüblich sein dürfte. Ergänzend gibt es im Lehrbuch aber auch je ein Kapitel zu C++ und C#. Die Idee ist, dass der Studierende auch andere objektorientierte Sprachen als Java kennenlernt. Ich war damals ziemlich gespannt auf diese Kapitel, zu denen es auch je eine Einsendeaufgabe gab. Allerdings war ich nach dem Durcharbeiten ein bisschen enttäuscht. Denn es ist natürlich nicht möglich, in der knappen Form eine weitere objektorientierte Sprache zu lernen. Vielmehr haben diese Kapitel mein Verständnis für die Besonderheiten der Sprache Java - sozusagen in Abgrenzung zu C++ und C# - geschärft. Das war auch ein schönes Ergebnis.
     
    Dennoch blieb bei mir der Wunsch, zumindest C++ und C noch einmal näher kennen zu lernen. Interessant daran war für mich, dass sowohl C++ als auch C echte Compilersprachen sind. An C interessierte mich vor allem der Umgang mit Zeigern, die ja in Java nicht zur Verfügung stehen. An C++ interessierte mich die Mehrfachvererbung und die dynamische Speicherverwaltung, um die man sich selbst kümmern muss.
     
    Leider bietet Springer Campus aktuell keine gründliche Einführung in C oder C++ an. Ich schaute mich also nach anderen Anbietern um. Und wurde fündig bei der Virtuellen Hochschule Bayern (VHB). Diese bietet zum einen das Modul "Programmieren in C++". Das ist eine Einführung in die strukturierte und objektorientierte Programmierung in C++. Es steht somit inhaltich irgendwo zwischen GdI1 und GdI2 im Lehrplan von Springer Campus. Außerdem kann man dort das Modul "Programmieren in C" belegen. Das ist ein Programmierpraktikum in C und richtet sich an Studierende, die Erfahrung mit einer objektorientierten Programmiersprache haben. (Idealerweise natürlich C++, aber auch Java wäre denkbar.) Interessant an diesem Modul ist, dass es in Kooperation mehrerer Hochschulen entwickelt wurde, die im Laufe des Kurses verschiedene "Sichten" auf die Programmiersprache C vermitteln.
     
    Man könnte also, von Java kommend, zunächst C++ belegen, um die bekannten objektorientierten Konzepte aus der Perspektive von C++ zu erfahren. Und dann in einem zweiten Schritt das Programmierpraktikum in C buchen, um ohne objektorientierung auszukommen und auch noch etwas maschinennäher zu programmieren. Dieser Top-Down Ansatz war mein Plan, von dem ich nun den ersten Teil umgesetzt habe.
     
    Was ist die Virtuelle Hochschule Bayern?
     
    Die Virtuelle Hochschule Bayern ist eine gemeinsame Plattform von 9 Universitäten, 17 FHs und 5 weiteren Hochschulen in Bayern, die sich auf diesem Wege gegenseitig Module in Form von Online-Kursen zur Verfügung stellen. So kann man das den Präsenzstudenten lokal gebotene Spektrum an Lehrveranstaltungen erweitern. Die Hochschulen haben Vereinbarungen über gegenseitige Anerkennung bestimmter Module in bestimmten Studiengängen. Das Angebot ist recht breit, umfasst naturwissenschaftliche, geistes- und sozialwissenschaftliche Kurse, aber auch Fächer wie Medizin, Jura, ingenieurwissenschaftliche Fächer, Soziale Arbeit und Sprachen. Außerdem werden im Bereich "Schlüsselqualifikationen" interessante Kurse angeboten, die fächerübergreifende Kompetenzen vermitteln. Das Angebot der VHB findet ihr unter diesem Link:
    https://www.vhb.org/startseite/
     
    Ein wichtiger Unterschied zu einer Fern-FH oder Fern-Uni: Die VHB bietet lediglich einzelne Module, die als Teil eines Präsenz-Studiums belegt werden können. Es gibt also keinen kompletten Fernstudiengang.
     
    Das Angebot der VHB richtet sich in erster Linie an Studierende der Hochschulen des VHB Verbundes. Sie können die Kurse kostenfrei nutzen. Man kann sich aber auch als "sonstiger Nutzer" registrieren. In diesem Fall zahlt man eine Gebühr, die sich nach dem Workload des Moduls richtet. Die Kosten sind recht überschaubar. Als sonstiger Studierender registriert man sich online. Danach erhält man eine Rechnung per Briefpost aus Bamberg. Nach Überweisung der Gebühr wird der Kurs freigeschaltet. Bei der Registrierung sind Fristen zu beachten. In der Regel gibt es EINEN Klausurtermin pro Modul. Die Klausur wird aber oft zeitgleich an mehreren Partnerhochschulen angeboten. Für C++ hatte ich die Wahl zwischen 3 FHs in Bayern. Auch sonstige Nutzer dürfen also Module mit einer Prüfung abschließen, z.B. als Weiterbildung. Eine Anerkennung der ECTS bei Hochschulen außerhalb des VHB-Verbundes muss man aber selbst abklären.
     
    Der Kurs "Programmieren in C++"
     
    Das Modul basiert auf einem Skript von Professor Herbert Fischer von der TH Deggendorf. Zur Verfügung gestellt wird es als PDF im A4-Format. Wer es auf Papier will, muss es selbst ausdrucken. Das Skript wie auch der Kurs hat 2 Teile. Der erste Teil hat 77 Seiten. Themen sind zum Beispiel:
    - Ausdrücke, Anweisungen, Variablen und Datentypen
    - Rechenoperatoren
    - Funktionen
    - Ein- und Ausgabe
    - Kontrollstrukturen, Verzweigungen, Schleifen
    - Felder und Strings
    - Objekte und Klassen
    - Vererbung
    - Fallbeispiel: Kontoverwaltung
     
    Programmiert werden ausschließlich Konsolenanwendungen. GUIs spielen noch keine Rolle. Dynamische Speicherverwaltung ist im ersten Kursteil ausgeklammert. Man kann eine Klausur lediglich über diesen ersten Kursteil schreiben. Die bringt dann 2 ECTS. Die meisten Studierenden werden aber eine Klausur schreiben wollen, die beide Kursteile abdeckt. Die bringt dann 6 ECTS.
     
    Das Skript zum zweiten Kurs-Teil hat noch mal 58 Seiten. Hier werden folgende Themen ergänzt:
    - Bibliotheken
    - Arrays
    - Referenzen und Zeiger
    - Zeiger auf Zeiger
    - Elementoperatoren
    - Inline-Funktionen
    - Const-Objekte
    - der this-Zeiger
    - Objekte als Argumente und return-Wert.
    - verschiedene Arten der Parameterübergabe
    - Dynamische Speicherverwaltung mit new und delete
    - Verkettete Listen, doppelt und einfach.
    - Bäume und Graphen (sehr knapp)
    - Mehrfachvererbung
    - Polymorphismus
    - Abstrakte Klassen
    - Überladen von Operatoren
    - Templates (generische Programmierung)
    - Dateioperationen
    - Exceptions
     
    Ergänzend zu den Skripten gibt es auf der Lernplattform Tests und Übungsaufgaben, deren Musterlösungen man sich anzeigen lassen kann. Für jeden Kursteil gibt es 2 Einsendeaufgaben, die von einem Tutor korrigiert werden. Hier muss eine Mindestpunktzahl erreicht werden, um zur Klausur zugelassen zu werden. Insgesamt 4 Aufgaben sind natürlich nicht viel. Die Einsende-Aufgaben sind aber ein bisschen umfangreicher als die Übungsaufgaben. Die letzte und komplexeste ist eine Verwaltung für eine Motorradvermietung mit dynamischer Speicherverwaltung. Bei den Einsendeaufgaben habe ich am meisten gelernt, weil die Aufgabenstellung ein bisschen offener formuliert ist und man sich etwas einfallen lassen muss. Von Java kommend habe ich viele Fehler gemacht, weil die Syntax auf den ersten Blick sehr ähnlich wirkt, aber im Detail dann doch anders ist. Leider hatte ich im ersten Kursteil eine andere Tutorin als im zweiten. Viel Tutorinteraktion kommt so nicht zustande, zumal meine eingereichten Lösungen ganz gut waren, so dass das Feedback knapp ausfiel. Erwartungsgemäß fielen mir vor allen solche Themen schwerer, in denen C++ sich von Java unterscheidet: dynamische Speicherverwaltung, Umgang mit Zeigern, Überladen von Operatoren.
     
    Da der Kurs von Studierenden vieler Unis und FH belegt werden kann, sind die Teilnehmerzahlen recht hoch. Es waren über 400. Es gibt auch ein Forum zum Kurs, in dem recht lebhaft diskutiert wird.
     
    Die Klausur
     
    Die Präsenzklausur dauert 90 Minuten und deckte die Themen des Kurses gut ab. Es gab viele praktische Aufgaben, aber auch solche, in denen Wissen abgefragt wurde. Den Umfang fand ich für die Zeit angemessen, den Schwierigkeitsgrad auch. Manche Fragen fand ich etwas speziell und nicht so praxisrelevant. Im wesentlichen konzentrierte sich die Klausur auf den Aspekt objektorientierte Konzepte, was ich ganz vernünftig finde.
     
    Fazit
     
    Dem Skript merkt man stellenweise an, dass der Kurs schon ein paar Jahre auf dem Buckel hat. Allerdings ist C++ eine nicht mehr ganz neue Sprache. Die Grundkonzepte, die hier vermittelt werden, sollten ziemlich zeitlos sein, so dass das Alter des Kurses sich eigentlich nicht nachteilig auswirkt. Was ich vermisst habe: In den Kursen bei Springer Campus wurde schon bei der Vermittlung der objektorientierten Konzepte auf guten Klassenentwurf eingegangen. Es wurden also schon ein paar Ideen aus der Softwaretechnik angerissen. Das sollte uns ermutigen, von Anfang an recht sauber zu arbeiten. Das war in diesem Kurs nicht so. Manche Code-Beispiele kamen mir aus Java-Perspektive ein bisschen "quick and dirty" vor.
     
    Eines habe ich in dem Kurs nicht gelernt: C++-Code idiomatisch zu schreiben. Man merkt meinen Programmen an, dass ich objektorientierte Programmierung mit Java gelernt habe. Um hier mehr wie ein C++-Programmierer zu denken und zu schreiben, müsste ich mich noch wesentlich länger mit der Sprache beschäftigen. Den Ehrgeiz, in C++ richtig sicher zu werden, habe ich aber nicht. Zumal C++ auch nicht besonders zum Schwerpunkt meines Studiums - Web- und Medieninformatik - passt. Mir ging es einfach darum, diese sehr wichtige Sprache ein bisschen besser kennen zu lernen.
     
    Lust auf das Programmierpraktikum C hätte ich aber schon noch. Ich habe mich nämlich sehr an die objektorientierte Denkweise gewöhnt. Da würde ich gerne mal erleben, wie ich ohne diesen "Luxus" auskomme. Mal schauen, ob mir im nächsten Semester Luft für solche Extratouren bleibt.
     
    Im Vergleich zu den Kursen bei Springer Campus (aber auch zur WINGS) ist man bei der VHB mehr auf sich gestellt. Es gibt eine tutorielle Betreuung, aber sie fällt im Vergleich recht knapp aus. Man merkt, dass hier viele Studierende betreut werden. Die VHB bietet einen strukturierten Rahmen, in dem man etwas anspruchsvolles Lernen kann. Aber man muss schon sehr selbstständig arbeiten. Dafür sind die Kosten sehr moderat.
     
    Der Begriff "lebenslanges Lernen" wird in den Medien oft im Zusammenhang mit älteren Arbeitnehmern gebraucht, die auf dem Arbeitsmarkt konkurrenzfähig bleiben sollen. Lebenslanges Lernen meint also meist berufliche Weiterbildung. Man kann lebenslanges Lernen aber auch breiter Denken; nämlich als lebenslange Freude an neuer Erkenntnis und an Wissenschaft.
     
    Die VHB ist auf jeden Fall etwas, das ich im Hinterkopf behalten möchte, auch für die Zeit nach meinem Fernstudium.
  2. kurtchen
    Springer Campus bietet neben den Bachelor-Studiengängen "Web- und Medieninformatik" und "Wirtschaftsinformatik" auch die Möglichkeit, durch Belegung bestimmter Modul-Kombinationen Hochschulzertifikate zu erwerben. Diese kann man als eigenständige Weiterbildung auf FH-Niveau nutzen. Studierende in den Bachelorstudiengängen erhalten die Zertifikate automatisch, sobald die entsprechenden Modul-Kombinationen belegt und bestanden wurden. Die Zertifikate können so als Meilensteine auf dem langen Weg zum Bachelor dienen.
     
    Für mich persönlich waren diese Zertifikate auch ein Grund, mich für Springer Campus bzw. die FH Dortmund als Studienanbieter zu entscheiden. Vor Aufnahme meines Studiums war ich mir nämlich gar nicht sicher, ob meine Ausdauer für einen kompletten Bachelor reichen würde. Und natürlich könnten auch unerwartete familiäre oder berufliche Ereignisse ein so langfristiges Projekt wie ein berufsbegleitendes Studium zum Scheitern bringen. Insofern habe ich die Zertifikate auch als eine Art Fallschirm betrachten. Falls ich unterwegs abspringen muss, war nicht alles vergebens. Es gibt Etappenziele und auch ein nicht komplett abgeschlossenes Studium kann ein (vorzeigbares) Ergebnis haben.
     
    Und so sieht so ein Hochschulzertifikat aus. (Persönliche Informationen habe ich entfernt).

     
    Im Bereich Informatik werden zur Zeit folgende Zertifikate angeboten:
    - Junior-Programmierer
    - Junior Data-Analyst
    - Anwendungsprogrammierer
    - Web-Entwickler
    - Web-Frontend-Programmierer
    - Software-Architekt
    - Software-Manager
    - Requirements Engineer
     
    Zum Teil überschneiden sich die Inhalte der Zertifikate. Ich werde voraussichtlich außer dem Zertifikat "Software-Architekt" keine weiteren Zertifikate im Bereich Software-Technik erwerben. Zwar habe ich auch einige Module aus dem Zertifikat "Requirements-Engineer" schon abgeschlossen, aber dazu gehören auch noch Module, die ich im Wahlpflichtbereich belegen könnte aber - wegen stärkerem Interesse an anderen Themen - nicht belegen möchte.
  3. kurtchen
    Ausgangslage
     
    Angefangen hatte alles damit, dass ich als Kindergärtner auf der Suche nach einer interessanten Weiterbildungsmöglichkeit war. Dabei stieß ich auf den B.Sc. Sozialinformatik der Hochschule Fulda. Dieser berufsbegleitende Studiengang richtete sich an ausgebildete Fachkräfte im Sozialbereich oder im IT-Bereich. Ein einschlägige Ausbildung und Beschäftigung während des Studiums war Zugangsvoraussetzung. Ziel des Studiums war die Qualifizierung von IT-Fachkräften für den Sozialbereich, also etwa in Analogie zum Wirtschaftsinformatiker für den Unternehmensbereich. Das klang für mich interessant.
     
    Damals habe ich auch einen Thread hier im Forum gestartet, in der Hoffnung, Studierende zu finden, die mir etwas aus erster Hand berichten konnten. Das hat leider nicht geklappt. Ich hatte damals das Glück, mit Hilfe des Studienbüros einen Studierenden in diesem noch recht jungen Studiengang zu finden, der mir etwas über seine Erfahrungen berichten konnte. Abgehalten hat mich eigentlich nur der relativ starre Zeitplan an der HS Fulda. Zwar gab es die Möglichkeit, verpasste Klausuren oder Module im Folgesemester oder im Folgejahr nachzuholen, aber ich war mir nicht sicher, wie rasch meine Lernfortschritte sein würden. Insbesondere konnte ich nicht abschätzen, wie schwer es mir fallen würde, mich wieder mit Mathematik zu beschäftigen. Rückblickend meine ich, dass ich mit diesem Studium gut zurecht gekommen wäre. Es gab damals ein paar Forumsteilnehmer, die in Zweifel zogen, ob Sozialinformatik als richtiges Informatikstudium gelten konnte. Heute meine ich, das Curriculum dieses Studienganges selbst ganz gut beurteilen zu können. Und finde, dass der B.Sc. Sozialinformatik ein attraktives Studienangebot ist, wenn man mit dem vorgegebenen Tempo zurecht kommt.
     
    Nachdem ich mich schon einmal mit der Möglichkeit auseinandergesetzt hatte, mich mit Mathematik, Programmierung und Algorithmen zu beschäftigen, schaute ich mich nach anderen Anbietern mit einem flexibleren Studienmodell um. Zuerst stieß ich dabei auch auf die WBH, die ja ein besonders bekannter Anbieter technischer Fernstudiengänge ist. Es gab aber auch weniger bekannte Anbieter mit interessanten Konzepten. An Springer Campus - damals noch W3L AG - gefiel mir, dass sie sehr transparent über die Inhalte ihrer Module informierten. Man konnte sich zu jedem Modul Probelektionen freischalten lassen und sich so einen Eindruck von der Lernplattform verschaffen. So konnte ich sehen, dass mir die Inhalte des Curriculums gefielen. Die freie Zeiteinteilung bei der Belegung der Module und der Anmeldung von Prüfungen hätte es aber auch bei anderen privaten Anbietern - wie z.B. der WBH - gegeben
     
    Sehr interessiert hätte mich auch der Studiengang IT-Analyst der Hochschule Kaiserslautern. Auch hier gefiel mir die Zusammenstellung der Themen und Module. Und auch die HS Kaiserlautern informierte sehr transparent über Inhalte. Leider war einschlägige Berufserfahrung eine Zugangsvoraussetzung, die ich nicht erfüllen konnte.
     
    So bin ich also bei Springer Campus gelandet. Sie boten ihren Studiengang in Kooperation mit der FH Dortmund an, die später auch den Abschluss verleihen sollte.
     
    Was mir am Studium bei Springer Campus gefallen hat:
     
    Die inhaltliche Zusammenstellung des Curriculums: Der Studiengang hatte vergleichsweise viele Module zur Programmierung in Java, so dass ich mir zumindest in einer Programmiersprache eine wirklich solide Grundlage erarbeiten konnte. Außerdem wurde das Gebiet der Softwaretechnik sehr ausführlich behandelt. Die didaktisch gut gemachten Mathematik-Module: Hier ist insbesondere der sehr sanfte Einstieg mit dem Modul "Mathematisch-logische Grundlagen der Informatik" zu nennen. Die Module "Mathe 2" (Analysis und Lineare Algebra) und "Mathe 3" (Numerik, polynomiale Interpolation und Approximation sowie Grundlagen der Kryptographie) waren schon schwieriger. Gut waren hier die zur Verfügung gestellten PDF-Tools, mit denen man sich beliebig viele Übungsaufgaben erstellen konnte. Das Tutorensystem: In jedem Modul hatte man einen Ansprechpartner, der Einsendeaufgaben korrigierte und Fragen beantworten konnte. Das war mir oft sehr nützlich. Allerdings muss man sich klar machen, dass man als Studierender an einer Hochschule eine "Holpflicht" hat und nicht "mit dem Löffelchen gefüttert" wird. Manche Studierende berichteten mir, dass sie lediglich Aufgaben eingesendet und Korrekturen empfangen hatten. So kann es gehen, wenn man keinen Kontakt mit dem Tutor aufnimmt. Ich habe mich bei allen Tutoren vorgestellt, bei den Korrekturen nachgehakt, z.T. überarbeitete Lösungen eingereicht oder auch Fragen zum Stoff oder zum Transfer in die Praxis gestellt. So ergab sich oft ein recht intensiver Austausch mit meinen Tutoren. Mir blieb zwar nichts anderes übrig, als berufsbegleitend zu studieren, aber deswegen musste ich ja kein Einzelkämpfer sein. Die gute Betreuung durch das Studienbüro: Springer Campus war ein vergleichsweise kleiner Fernstudien-Anbieter. Man kannte die Mitarbeiter und die Mitarbeiter kannten die Studierenden. Wenn es etwas zu klären gab, hatte man schnell einen Verantwortlichen an der Strippe. Man konnte mit den Leuten reden. Das war oft sehr hilfreich. Die Lotsenfunktion des Studienbüros beim Finden eines Betreuers: Das hat sowohl bei der Projektarbeit als auch bei der Bachelorarbeit hervorragend geklappt. Die Präsenztage: Diese waren zunächst verpflichtend und dann freiwillig. Bei vielen Studierenden waren sie unbeliebt, weil man dafür nach Dortmund anreisen musste. Darum gingen die Teilnehmerzahlen stark zurück, als die Präsenztage freiwillig wurden. Schade, denn die Präsenztage waren sehr nützlich, um mit anderen Studierenden in Austausch zu kommen und auch die Hochschullehrer ein bisschen kennenzulernen. (Das hilft zum Beispiel, wenn man einen Betreuer für seine Bachelorarbeit sucht.) Das Praxisprojekt: Da ich fachfremd studiert habe, war mir bei Aufnahme meines Studiums nicht klar, wo und wie ich ein Praxisprojekt würde durchführen können. Ich habe darauf vertraut, dass sich schon etwas ergeben würde. So kam es dann ja auch. Gerade das Praxisprojekt hat im Vergleich zu anderen Modulen sehr viel Zeit verschlungen, vor allem gemessen daran, das es nur 5 ECTS brachte. Aber ich würde sagen, dass ich durch dieses Modul am meisten gelernt habe, weil ich im Praxisprojekt die Inhalte vieler Module verbinden und im Zusammenspiel erleben konnte.  Die flexible Steuerung des Workloads: Es zeichnet vor allem private Anbieter von Fernstudiengängen aus, Module im eigenen Rhythmus belegen und bearbeiten zu können; und regelmäßige Prüfungstermine für alle Module anzubieten. Diese Flexibilität erfordert vom Anbieter natürlich einen hohen Aufwand, den man mit entsprechenden Studiengebühren bezahlt. Wenn man berufsbegleitend studiert, ist das aber sehr wichtig. Auch wenn ich über weite Teile meines Studiums ziemlich schnell vorangekommen bin, gab es Zeiten, in denen ich ein von außen vorgegebenes Tempo nicht hätte halten können. Das hätte sich bei manchen Anbietern verlängernd auf die Studienzeit ausgewirkt. Die Möglichkeit, mein Studientempo flexibel an meine berufliche und familiäre Belastung anpassen zu können, war für meinen Studienerfolg sehr wichtig. Die Anbindung an die FH Dortmund: Insbesondere bei der Projektarbeit und bei der Bachelorarbeit fand ich es toll, Betreuer zu haben, die auch ganz normal im täglichen Lehrbetrieb einer Präsenzhochschule stehen. Ich hatte zu keinem Zeitpunkt das Gefühl, dass meine Betreuer zwischen den Präsenzstudierenden und uns Fernstudierenden einen Unterschied machten.  
    Was mir nicht so gut gefallen hat:
     
    Manche Module waren "schlecht gealtert": Es gibt Module, bei denen es nichts ausmacht, wenn sie ein paar Jahre "auf dem Buckel" haben. Dazu zählt z.B. Mathematik aber auch Module wie "SQL und relationale Datenbanken". Und auch in einem einführenden Modul in Algorithmen und Datenstrukturen ändern sich die Inhalte nicht alle Jahre. Dringend überarbeitungswürdig gewesen wäre das Modul "Multimedia". Hier spielte z.B. Flash noch eine große Rolle. Aber auch im Modul "IT-Recht" waren viele Inhalte durch neuere Gesetzgebung nicht mehr aktuell. Dazu gehörte z.B. das Thema DSGVO. Die ist ja nicht vom Himmel gefallen. Da wäre es schon wünschenswert gewesen, darauf hinzuarbeiten, dass das Modul rechtzeitig aktualisiert wird. Für ein Studium der Web- und Medieninformatik kam mir das Thema Frontend zu kurz: Das Modul "Skriptsprachen", das als gründliche Einführung in JavaScript konzipiert war, wurde ersatzlos und ohne Ankündigung gestrichen, kurz bevor ich es belegen wollte. Im Modul "Web-Engineering" wurde unter anderem das GWT behandelt. Da wird das Front-End in Java geschrieben und per Transpiler zu JavaScript übersetzt. Mag sein, dass das mal als aussichtsreicher Ansatz galt. Letztlich hat es sich nicht durchgesetzt. Gleichzeitig hat sich JavaScript als Sprache stark weiterentwickelt. Es wäre wünschenswert, im Studium wenigstens ein modernes UI-Framework zu behandeln, also etwas wie Angular, React oder Vue. Freiwillige Präsenztage: Die Entscheidung, die Präsenztage freiwillig zu machen, fand bei den Studierenden viel Beifall und war damals auch durch Gesetzgebung des Landes NRW so vorgegeben. Ich halte die politische Entscheidung rückblickend für falsch. (Soweit ich weiß, ist das von der neuen Landesregierung inzwischen auch wieder korrigiert worden.) Leider habe ich den Eindruck gewonnen, dass viele Studierende mit der neuen Freiheit nicht sinnvoll umgehen konnten. Dazu nur ein Beispiel: Wenn man sich erkundigte, welche Module als herausfordernd wahrgenommen wurden, hörte man immer wieder "Mathe 2", also Analysis und Lineare Algebra. Eben dazu wurden auf den Präsenztagen regelmäßig Tutorien angeboten. Die spärlich besucht wurden. Es passt für mich nicht zusammen, wenn man klagt, wie schwierig Mathe sei, aber angebotene Hilfen nicht wahrnimmt. Die Lernplattform als solche: Sie hatte viele Merkmale, die de facto niemand nutzte. Dazu zählten insbesondere Social Media Funktionen wie eigene Foren und Messaging Systeme. Meine Kommilitonen nutzten für ihren Austausch lieber allgemeine Plattformen wie Facebook oder Whatsapp. Es macht in meinen Augen auch wenig Sinn, wenn jeder Anbieter so etwas selbst implementiert. Insbesondere nach Einführung der neuen Plattform reagierten die Server manchmal recht träge, was angesichts der Studierendenzahlen nicht nachvollziehbar war. Für einen Studiengang, der einen Schwerpunkt auf serverseitige Webprogrammierung legt, war die neue Plattform nicht gerade ein Aushängeschild. Die hier investierten organisatorischen und finanziellen Ressourcen hätte man meiner Meinung nach lieber in die Aktualisierung der obenen genannten Module oder in neue Inhalte investieren sollen. Und stattdessen eine der vielen vorhandenen Lernplattformen nutzen können, die andere Hochschulen mit Erfolg verwenden.  
    Was mir gar nicht so wichtig war:
     
    Der inhaltliche Schwerpunkt "Web- und Medien". Betont wurde die serverseitige Web-Programmierung. Die fand ich auch interessant. Aber ich habe mein Studium in erster Linie als Informatikstudium an einer FH aufgefasst. Das Curriculum eines Bachelorstudiengangs muss naturgemäß erst einmal breite Grundlagen vermitteln. Zwar ist es "chic" geworden, schon im Bachelor recht spezialisierte Bezeichnungen zu verwenden, aber das sollte man meiner Meinung nach nicht überbewerten. Mathematik, Programmierung, Algorithmen, Betriebssysteme, Netze, Softwaretechnik, das alles sind Beispiele für Themen, die wohl in jedem Bachelor der Informatik vorkommen dürften. Echte Spezialisierung dürfte erst im Master realistisch sein.  
    Was ich mir noch gewünscht hätte:
     
    180 ECTS sind naturgemäß zu wenig, um alle inhaltlichen Wünsche an ein Informatikstudium abzudecken. Aber es wäre schön gewesen, bestimmte Themen im Wahlbereich belegen zu können.
     
    Künstliche Intelligenz: Das einzige Modul, dass ein bisschen in diese Richtung wies, war das Wahlpflichtmodul "Text Mining". Aus meiner Sicht wäre es an der Zeit gewesen, ein Modul über künstliche neuronale Netze anzubieten. Datenvisualisierung: Ich hätte gerne aufbauend auf dem Modul "Statistik" ein Modul gehabt, bei dem man die dort vermittelten Verfahren mit einer geeigneten Programmiersprache und geeigneten Frameworks nutzt. Also z.B. ein Modul über Statistikprogrammierung mit R oder Python. Oder eines über Datenvisualisierung im Browser, z.B. mit Frameworks wie D3.js. Ethik der Informatik oder Informatik und Gesellschaft: Das ist für mich ein anderes Thema als Datenschutz oder IT-Recht. Es gibt in den letzten Jahren zunehmende Diskussionen über gesellschaftliche Auswirkungen neuer Informationstechnologien. Ich hätte mir ein Modul gewünscht, bei dem es um ethisches und/oder politisches Abwägen und Argumentieren in diesem Themenfeld geht.  
    Wie es war, berufsbegleitend zu studieren:
     
    Für den größten Teil meines Studiums habe ich 30 Stunden als Erzieher im Kindergarten gearbeitet. Das ging überraschend gut. Mein Job und mein Studium zehrten von unterschiedlichen Ressourcen. Im Kindergarten braucht man vor allem Nerven, um mit den vielen Stressoren und der sich ständig ändernden Situation umgehen zu können. Man muss kurzfristig auf neu auftretende Bedürfnisse und Konflikte reagieren. Wenn ich nach Hause kam, war ich nervlich ermüdet. Denken in formalen und abstrakten Strukturen ist im Kindergarten dagegen weniger gefragt. Zu meiner Überraschung war ich am späten Nachmittag und Abend gut in der Lage, mich noch lange auf Themen wie Mathematik, Programmierung, Algorithmen und Softwaretechnik zu konzentrieren. Das Studium bildete einen fruchtbaren Gegenpol zu meiner Arbeit. Und nach einem Wochenende vor dem Bildschirm freute ich mich auch wieder auf den Trubel mit den Kindern.
     
    Für die Projektarbeit und die Bachelorarbeit wollte ich meinen Arbeitsumfang aber reduzieren. Hier musste ich mit meinem Arbeitgeber verhandeln. Während ich anfangs an jedem Wochentag gearbeitet hatte, war es nun für mich günstiger, ganze Tage im Kindergarten und ganze Tage für mein Studium zu haben. Gerade wenn ich beim Projekt oder bei der Bachelorarbeit eine härtere Nuss zu knacken hatte, war es hilfreich, nicht immer mitten im Tag umschalten zu müssen, sondern an manchen Tagen auch mal 8 Stunden an einer Sache dranbleiben zu können, um nicht immer wieder neu in ein komplexes Thema finden zu müssen.
     
    Für meine Einrichtung war es sicher nicht leicht, mir solch ein Arbeitszeitmodell anzubieten. Dass es geklappt hat, lag sicher auch daran, dass auch meine Region inzwischen vom Erziehermangel betroffen ist, von dem man so häufig in den Medien liest. Vor zehn oder auch nur fünf Jahren wäre mein Wunsch nach Stundenreduzierung vielleicht nicht erfüllt worden. Aber die Träger müssen heute schon sehr flexibel sein und oft Stellen aus Teilzeitverträgen "zusammenstückeln", um die geforderten Betreuungsschlüssel erfüllen zu können. Aus frühpädagogischer Perspektive wäre es freilich wünschenswerter, Vollzeitkräfte in die Gruppen zu stellen, die ihre ganze Kraft den Kindern widmen. Die gibt der Arbeitsmarkt nach dem raschen Krippenausbau aber nicht mehr in ausreichender Zahl her. Und die Politik hat es versäumt, mit den Betreuungseinrichtungen auch die Ausbildungseinrichtungen für Fachpersonal auszubauen.
     
    Für mich kam diese erzwungene Flexibilität der Träger zur rechten Zeit. Gleichzeitig habe ich auch gespürt, wie viel dies den Mitarbeitern abverlangte. Denn auch ich musste mich damit auseinandersetzen, dass viele meiner Kolleginnen nur in Teilzeit anwesend waren. Das erforderte viele Absprachen und auch ein hohes Maß an Toleranz und Flexibilität. Ich bin dankbar, dass mein Team mich auf dem Weg zum Bachelor unterstützt hat und auch an meinem Studienfortschritt Anteil genommen hat. Das ist nicht selbstverständlich. Vor allem wenn man bedenkt, dass dieses Projekt das mittelfristige Ziel hatte, mich als Mitarbeiter zu verabschieden.
     
    Perspektiven nach dem Studium:
     
    Fast unmittelbar nach Abgabe meiner Bachelorarbeit ergab sich für mich eine Beschäftigungsmöglichkeit, die indirekt mit meiner Projektarbeit zusammenhing. Damals habe ich ja eine Steuersoftware für chronobiologische Experimente entwickelt. Im Moment mache ich etwas ähnliches für einen Neurobiologen. Mein Arbeitgeber ist also die örtliche Universität. Mit meinem Studienschwerpunkt Web- und Medieninformatik hat das wenig zu tun. Ich programmiere kleine Single Board Computer wie den Raspberry Pi. Weil das eine Menge mit Hardware zu tun hat, wäre es eigentlich besser, ich hätte technische Informatik oder Elektrotechnik studiert. Die Stelle ist in Teilzeit und befristet auf ein halbes Jahr. Ich sitze jetzt an drei Tagen pro Woche als einziger Informatiker unter lauter Biologen, die an sozialen Insekten forschen. Das ist ein spannendes Umfeld, weil ich unter sehr cleveren Leuten bin, die sich mit Inhalten beschäftigen, von denen ich keine Ahnung habe. Was mir fehlt, sind andere Software-Entwickler, von denen ich lernen könnte.
     
    Nicht so beeindruckend ist meine Bezahlung. Da ich als Kindergärtner schon recht viel Berufserfahrung hatte, war ich in der tariflichen Eingruppierung schon ganz gut gestiegen. Man kann ja regelmäßig in der Zeitung lesen, dass Erzieher nicht so gut bezahlt werden. Und gemessen an einer Ausbildungszeit von 5 Jahren, von denen 4 nicht vergütet sind, ist da schon etwas dran. Umso überraschter waren meine Kolleginnen, dass ich im Kindergarten den höheren Stundenlohn erziele als an meiner neuen Arbeitsstelle.
     
    Aus diesem Grund arbeite ich noch immer an zwei Tagen pro Woche im Kindergarten. Und freue mich auch jedes Mal darauf. Gleichzeitig fällt mir zum ersten Mal in meinem Leben auf, wie emotional fordernd diese Arbeit ist. Der Kontrast zu meiner neuen Arbeitsumgebung könnte kaum größer sein.
     
    Bis zum Juni werde ich also zweigleisig fahren und habe die Chance, erstmals Code gegen Bezahlung zu schreiben. Bis dahin muss sich erweisen, ob es in meiner Region Unternehmen gibt, die auch einen Berufseinsteiger im mittleren Alter einstellen möchten.
     
    Was ich aus dem Studium ziehe:
     
    Aufgenommen habe ich mein Studium, weil ich nicht nur einen beruflichen sondern auch einen fachlichen Wechsel wollte. Ein wichtiger Grund dafür war, dass ich es für unwahrscheinlich hielt, die Arbeit als Erzieher im Gruppendienst bis zum regulären Renteneintrittsalter ausüben zu können. (Ich habe leider nur wenige Erzieherinnen erlebt, die bis zum vorgesehenen Ende durchgehalten haben.) Ein Maßstab für meinen Studienerfolg wird also sein, ob der Sprung auf ein anderes Gleis tatsächlich klappt.
     
    Persönlich meine ich, stark davon profitiert zu haben, durch mein Studium viele neue inhaltliche Impulse und Perspektiven bekommen zu haben. Dadurch habe ich manchmal sogar neue Freude an meinem bisherigen Beruf gefunden. Nach einem Tag vor der Tastatur war es toll, am nächsten Morgen wieder eine Turnstunde zu leiten.
     
    Natürlich bin ich mit diesem Studium ein bisschen "der bunte Hund" im Team. Kindergärtner, die berufsbegleitend studieren, gibt es häufiger als man denkt. Aber meistens werden sie Sozialarbeiter, Sozialpädagogen oder Kindheitspädagogen.
     
    Insgesamt war es eine tolle Erfahrung, dieses Studium zu machen. Nach etwas mehr als 4 Jahren kann ich nun sagen:
    "Ich bin Informatiker."
  4. kurtchen
    Das Modul "BWL2" ist ein Pflichtmodul in den beiden Studiengängen "Web- und Medieninformatik" und "Wirtschaftsinformatik" bei Springer Campus. Die Web- und Medieninformatiker sollen es schon im zweiten Semester belegen, die Wirtschaftsinformatiker erst ein Semester später. Das liegt daran, dass die Wirtschaftsinformatiker im ersten Semester zunächst ein Modul "Grundlagen der BWL" belegen, was alles weitere ein Semester nach hinten verschiebt. Wenn ich auf meine Schwierigkeiten mit den BWL-Modulen zurückblicke, meine ich, es wäre gar keine schlechte Idee gewesen, dieses Grundlagenmodul freiwillig zu belegen. Damit hätte ich vielleicht zum Teil ausgleichen können, dass ich im Bereich BWL keine Vorkenntnisse hatte. Gut möglich, dass mir der Stoff von BWL1 und BWL2 so leichter gefallen wäre.
     
    Die Rolle der BWL-Module im Studiengang
     
    Web- und Medieninformatiker belegen außer BWL1 und BWL2 auch noch Geschäftsprozess-Management. Wirtschaftsinformatiker belegen weitere BWL-Module: E-Business, Strategisches Management und Controlling, Human-Ressources. Und natürlich viele Wirtschaftsinformatik-Module. Die meisten von denen und auch das Modul "E-Business" dürfen Web- und Medieninformatiker im Wahlbereich belegen. 
     
    BWL2 soll nach BWL1 belegt werden, was ich rückblickend nicht für unbedingt nötig halte. Mir scheint, dass die Inhalte der Module wenig aufeinander aufbauen, so dass ich eine Umkehrung der Reihenfolge für durchaus möglich halte. Dafür sprechen würde, dass insbesondere der Kurs Ökonomie aus dem Modul BWL2 einen gewissen Überblick über das Fachgebiet verschafft, der es vielleicht ein wenig erleichtert, die spezielleren Inhalte aus BWL1 einzuordnen, nämlich internes und externes Rechnungswesen.
     
    BWL2 gilt als inhaltliche Voraussetzung für Geschäftsprozess-Management. Ich habe Geschäftsprozessmanagement vor BWL2 belegt, was auch gut möglich war. Die Kapitel zur strategischen Planung und zu Organisationsformen aus BWL2 wären aber doch eine gute Vorbereitung auf Geschäftsprozess-Management gewesen, so dass ich hier anderen Studierenden dazu raten würde, die Module in der offiziell empfohlenen Reihenfolge zu bearbeiten.
     
    Aufbau des Kurses
     
    BWL2 gehört zu den Modulen, die aus zwei separaten Kursen bestehen. Es gibt 2 Lehrbücher, 2 Online-Abschlusstests, 2 Online-Klausuren, 2 Korrektoren für Einsendeaufgaben aber eine gemeinsame Präsenzklausur. Nach meiner Erfahrung erhöht eine solche Zweiteilung den Bearbeitungsaufwand ein wenig. So habe ich das auch diesmal empfunden.
    Am Umfang der Lehrbücher liegt das aber nicht. Die Titel "Basiswissen Unternehmensführung" von Klaus Menzel und "Basiswissen Ökonomie" von Rainer Ostermann und Frank Wischmann kommen zusammen auf rund 400 Seiten, was für Module bei Springer Campus üblich ist. Die Autoren Wischmann und Ostermann waren mir bekannt, denn sie haben auch die Lehrbücher für BWL1 verfasst.
     
    Inhalte des Kurses Unternehmensführung
     
    Im Kurs Unternehmensführung geht es um Zielsysteme, Strategische Planung, Unternehmensbewertung, wertorientierte Unternehmensführung und Organisationsstrukturen. Diese Inhalte haben mich anfangs wenig interessiert, aber das Buch war zugänglich geschrieben und die Kapitel wurden durch Fallbespiele begleitet, die den Stoff lebendig machten. Zum Teil wurden hier Dialoge aus Besprechungen wiedergegeben, in denen sich unterschiedliche Ansätze und Denkschulen offenbarten. Das fand ich didaktisch gut gelungen und hat mir oft weitergeholfen, mir den (für mich recht trockenen) Stoff zu erschließen.
     
    Im Kapitel Zielsysteme geht es zum Beispiel darum, Ziele in Zielhierachien einzuordnen, um Abhängigkeiten zwischen Zielen zu erkennen. Man sieht so, welche Unterziele erreicht werden müssen, um übergeordnete Ziele erreichen zu können. Ein häufiges Problem ist, dass Ziele nicht immer miteinander kompatibel sind. Häufig bestehen Zielkonflikte, die aufgelöst werden müssen. Dazu kann es nötig werden, Ziele zu gewichten. Der bei Erreichung erwartete Nutzen, die Wahrscheinlichkeit der Realisierung, aber auch die Beeinflussbarkeit spielen bei solchen Bewertungen eine Rolle. Schließlich braucht man Methoden, um bei konfliktären Zielen durch Dialog und Verhandlung zu Entscheidungen zu kommen. Wo Einigungen nicht möglich sind, werden oft übergeordnete Instanzen entscheiden müssen.
     
    Im Kapitel Strategischen Planung geht es um die langfristige Ausrichtung des Unternehmens. Strategische Entscheidungen wären zum Beispiel, in einem neuen Geschäftsfeld tätig werden zu wollen, den Produktionsstandort zu verlagern, das Unternehmen an die Börse zu bringen oder bestimmte Produktlinien komplett aufzugeben. Für strategische Entscheidungen braucht man Instrumente zur Analyse und Planung, von denen man im Kurs einige kennenlernt. Die SWOT-Analyse identifiziert Stärken und Schwächen des Unternehmens, aber auch Chancen und Risiken. Die Portfolio-Analyse bewertet die angebotenen Produkte des eigenen Unternehmens nach Kriterien wie Wachstum und Marktanteil und kategorisiert sie in Poor Dogs, Questions Marks, Stars und Cash Cows. Eine Cash Cow ist zum Beispiel ein Produkt mit hohem relativen Marktanteil aber nur noch geringem Wachstum. Cash Cows sollen ohne zusätzlich Investitionen Geld bringen. Stars sind dagegen Produkt mit hohem relativem Marktanteil und hohem Wachstum. In solche Produkte soll verstärkt investiert werden. Wichtig für die strategische Planung sind auch Prognosen künftiger Entwicklungen, denn auf diese möchte man sich durch die strategischen Entscheidungen ja vorbereiten. Hier wird unterschieden zwischen quantitativen Methoden, die Zahlenwerte aus der Vergangenheit in Form von Zeitreihen analysieren, und qualitativen Methoden, die mit Einschätzungen von Experten arbeiten. Im Kapitel geht es aber auch um Denkschulen strategischer Planung, die sich aus unterschiedlichen Wissenschaftsgebieten entwickelt haben und sich in den Vorgehensweisen stark unterscheiden. Schließlich geht es um Grenzen strategischer Planung, die sich zum Beispiel daraus ergeben, dass Prognosen auf der Grundlage vergangener Entwicklungen nicht immer zuverlässig sind.
     
    Schwierigkeiten hatte ich in erster Linie mit dem Kapitel Unternehmensbewertung. Entweder war es für mich zu dicht geschrieben oder es mangelte mir an Vorwissen. 
    Hier geht es darum, welchen Wert ein Unternehmen hat. Es gibt sehr unterschiedliche Methoden, den Wert eines Unternehmens zu bewerten. Welche davon geeignet ist, hängt vom Anlass der Bewertung ab. So wird ein Kreditgeber sich unter anderem dafür interessieren, was bei Liquidation eines Unternehmens erlöst werden kann. Das Vermögen des Unternehmens sieht er als Sicherheit für den Fall einer Insolvenz. Dagegen wird ein Investor sich eher dafür interessieren, welche Erträge das Unternehmen abwirft, weil er es nicht liquidieren sondern betreiben will. Besonders interessant ist der Potentialwert eines Unternehmens. Hier geht es darum, bislang ungenutzte Möglichkeiten und Chancen zu erkennen und zu bewerten. Dies ist zum Beispiel relevant bei Fusionen. Die Kombination der Fähigkeiten zweier Unternehmen kann neue Werte schaffen, die den Wert des aufgekauften Einzelunternehmens übersteigen.
     
    Gut gefallen hat mir das Kapitel zu Organisationsstrukturen. Hier ging es zum Beispiel um Vor- und Nachteile traditioneller Organisationsstrukturen im Vergleich zu Projektorganisationsformen und zweckorientierten Organisationsformen. Hier sah ich inhaltliche Bezüge zum Modul Geschäftsprozess-Management, das ich leider vorher belegt hatte.
     
    Inhalte des Kurses Ökonomie
     
    Im Kurs Ökonomie geht es zunächst um Grundtatbestände des Wirtschaftens. Im Schnelldurchgang werden hier wichtige Grundbegriffe geklärt und behandelt: Nachfrage und Bedürfnisse, Produktionsfaktoren, Wirtschaftsordnungen, Wirtschaftskreislauf und Wirtschaftsprinzipien, Kennziffern betrieblichen Handelns, volkswirtschaftliche Gesamtrechnung, Begriffe wie Bruttoinlandsprodukt oder Bruttosozialprodukt, Märkte, Preismechanismen, Preisbildung in Polypolen, Oligopolen und Monopolen, Dynamik der Wirtschaft. Obwohl sehr dicht geschrieben, konnte ich diesem Teil des Kurses gut folgen und meine, hier auch einige Bausteine für meine Allgemeinbildung aufgesammelt zu haben.
     
    Nach einem kurzen Kapitel über konstituive Entscheidungen wird der bis dato eher volkswirtschaftlich orientierte Kurs wieder betriebswirtschaftlich. Es geht um drei Typen konstituiver Entscheidungen:
    - die Wahl des Tätigkeitsfeldes
    - die Wahl des Standortes
    - die Wahl der Rechtsform
     
    Während ich dem Kapitel zur Standortwahl gut folgen konnte, fand ich insbesondere das Kapitel zur Rechtsform zu gedrängt geschrieben, um den Stoff wirklich zu begreifen. Natürlich wurde hier regelmäßig auf weitere Fachliteratur verwiesen, aber so sehr interessierte mich das Thema dann doch nicht.
     
    Insgesamt bin ich überrascht, dass der Kurs Ökonomie mir unterm Strich etwas weniger Spaß gemacht hat als Unternehmensführung. Ich hätte das Gegenteil erwartet. Möglicherweise liegt es daran, dass Unternehmensführung ein bisschen ausführlicher geschrieben ist als Ökonomie. Ich schätze, mit etwa 100 Seiten mehr Umfang hätte ich den Ökonomie-Kurs besser verwerten können. Dazu möchte ich bemerken, dass ich zu Schulzeiten keinen Unterricht zu Wirtschaftsthemen genossen habe und solche Inhalte auch in meiner Ausbildung keine Rolle gespielt haben. Wer mehr Vorkenntnisse oder Vorerfahrungen mitbringt, kann die im Kurs Ökonomie dargebotenen Inhalte wahrscheinlich besser aufnehmen als ich.
     
    Einsendeaufgaben und Tests
     
    Die Einsendeaufgaben haben mein Verständnis des Stoffes sicher verbessert. Im Kurs Unternehmensführung waren es mehr als im Kurs Ökonomie. Die Rückmeldungen meiner Tutoren kamen überwiegend zügig. Sie waren für mich auch interessant, weil mir oft Punkte fehlten und ich so erfuhr, was ich für die Klausur noch einmal wiederholen musste.
     
    Klausur
     
    Die Präsenzklausur ist ohne Hilfsmittel zu schreiben, was mir bei diesem Stoff ein bisschen Sorgen gemacht hat. Die waren aber unbegründet. Die Klausur deckte den Stoff breit ab und behandelte beide Kurse bzw. Lehrbücher gleichmäßig, zumindest was die erreichbaren Punkte anging. Breit gestellte Klausuren halte ich für faire Klausuren, weil Erfolg oder Misserfolg nicht davon abhängen, ob zufällig die eigenen Lieblingsthemen auftauchten. Insbesondere muss man nicht befürchten, wegen kleinerer Schwächen in einem Teilgebiet durchzufallen. Wer sich redlich bemüht, den gesamten Stoff zu bearbeiten, sollte hier Erfolge sehen.
     
    Es gab unterschiedliche Aufgabentypen: Ein Diagramm zeichnen, Multiple Choice, doch der Schwerpunkt lag auf dem Erklären von Begriffen und Zusammenhängen (z.T. mit Bezug zu politischen und gesellschaftlichen Themen). Anzahl und Umfang der Aufgaben passten gut zur Bearbeitungszeit. Manche Aufgaben waren recht knapp zu beantworten, andere ausführlicher. Es gab "Punktebringer", aber auch ein paar speziellere Fragen für das letzte Quäntchen Punkte. Hier ging es erkennbar darum, ein Grundverständnis abzuprüfen. Auch jemand, der nicht BWL-affin ist, hat hier eine faire Chance.
     
    Ein Ergebnis liegt mir noch nicht vor, aber diesmal bin ich optimistisch, dass es geklappt haben müsste.
     
    Fazit
     
    Ich bin froh, dass das ungeliebte Thema BWL nun hoffentlich hinter mir liegt. Unzumutbar schwer haben es mir die Kursautoren nicht gemacht. Es hat mir auch sicher nicht geschadet, mich einmal mit diesen Themen zu beschäftigen. Ich vermute, dass ich durch die Module etwas leichter mit Menschen kommunizieren kann, die eine betriebswirtschaftliche Denk- und Arbeitsweise haben. Das kann ja in vielen Situationen hilfreich sein.
     
    Meine eigenen Erwartungen, was ich durch die Module würde lernen können, waren rückblickend betrachtet wahrscheinlich etwas überzogen. Nur 10 ECTS sind wenig Zeit für ein komplexes Thema wie BWL. Das reicht für einen Einblick und vielleicht für eine gewisse Orientierung im Themengebiet. Das ist weniger als ich gehofft habe, aber natürlich hat es einen Wert. Wahrscheinlich wäre es in meinem Fall vernünftig gewesen, das Modul "Grundlagen der BWL" freiwillig als Propädeutikum zu belegen. Dann hätte ich wahrscheinlich aus den beiden folgenden Modulen mehr Nutzen ziehen können.
     
    Rückblickend betrachtet hätte es mir besser gefallen, ich hätte diese 10 ECTS mit anderen Inhalten füllen dürfen. Grundsätzlich gefällt es mir sehr, an einer FH zu studieren, wo ich einen starken Praxisbezug des Studiums erkenne. Vermutlich ist BWL ein Pflichtfach, weil man davon ausgeht, dass die meisten von uns in Unternehmen arbeiten werden. Das ist ja auch eine vernünftige Annahme. Statt BWL z.B. zusätzliche Mathe-Module zu belegen hätte mir allerdings mehr Spaß gemacht.
     
    Andererseits gehört zu einem Studium auch die Auseinandersetzung mit Themen, die man auf den ersten Blick nicht zum Anbeißen findet. Insofern habe ich versucht, mich auf BWL einzulassen. Für mich war es der bislang mühsamste Teil meines Studiums, weil ich es schwieriger als in anderen Modulen fand, mich zum regelmäßigen Lernen zu motivieren. Aber vermutlich ist das nun geschafft. Jetzt bin ich auch ein bisschen stolz auf mich.
     
    Ob ich noch einmal Lust haben werde, im Wahlbereich ein weiteres Modul mit BWL-Bezug zu belegen? Für die nächste Zeit möchte ich mich erst mal anderen Themen zuwenden. Andererseits gibt es dann doch Inhalte, die mich interessieren könnten. Ein Modul "E-Business" würde z.B. ganz gut zu einem Studium "Web- und Medieninformatik" passen. Momentan bin ich aber froh, im Studienbereich BWL meine Pflicht getan zu haben.
     
    Wie geht es nun weiter? Inzwischen habe ich angefangen, das Modul "Wissenschaftliches Arbeiten" zu belegen. Das ist für mich freiwillig, weil ich noch nach der alten Studienordnung studiere. Die Belegung wird uns aber dringend empfohlen, weil die Inhalte für die Anfertigung der Projekt- und Bachelorarbeit wichtig sind. Das sehe ich ein, also habe ich das Modul belegt. Ich hatte erwartet, dass das ein notwendiger aber auch trockener Studienabschnitt werden würde. Bislang bin ich positiv überrascht: Ich finde den Stoff richtig interessant, die Einsendeaufgaben machen mir viel Spaß und ich glaube, dass ich hier wichtige Einsichten für meine Projekt- und Bachelorarbeit mitnehmen kann. Besonders gefällt mir aber, dass ich den Eindruck habe, hier auch etwas für meine Allgemeinbildung zu tun. Ich werde zu gegebener Zeit ausführlicher berichten.
     
    Inzwischen habe ich auch eine Idee für meine Projekt- und für meine Bachelorarbeit. Beides dauert noch ein bisschen, aber allmählich taucht aus dem Nebel schemenhaft der letzte Studienabschnitt auf und nimmt ein bisschen Gestalt an. Das wird etwas ganz anderes werden als Stoff zu lernen und Klausuren zu schreiben. Aber mittlerweile vermute ich, dass das auch Spaß machen wird.
  5. kurtchen
    Bislang war ich von allen Mathematik-Modulen bei Springer Campus begeistert. An Mathe 1 "Mathematisch-logische Grundlagen der Informatik" habe ich vor allem die sehr intensive Betreuung durch meinen Tutor geschätzt. Das war gerade bei meinem ersten Mathe-Modul sehr hilfreich war. An Mathe 2 "Lineare Algebra" und "Analysis" und Mathe 3 "Angewandte Mathematik" gefielen mir die sehr guten PDF-Tools von Herrn Lenze, mit denen man sich selbst nach Bedarf Übungsaufgaben generieren konnte. Die Messlatte für das letzte Mathematik-Modul "Statistik" lag also schon ziemlich hoch. Nachdem ich diesen Kurs am letzten Freitag abgeschlossen habe, kann ich sagen: Das beste kommt zum Schluss.
     
    Auf das Modul Statistik war ich... sagen wir mal gespannt. Ich gehöre ja zu denen, die Mathematik zu Schulzeiten mochten. Aber mit Statistik habe ich mich tatsächlich in der Schule nie beschäftigt. Nicht mal mit Wahrscheinlichkeitsrechnung. In der Mittelstufe legte unser Lehrer das Thema immer ans Ende des Schuljahres, weil er es für unwichtig hielt. Und Jahr für Jahr kamen wir mit dem Stoff nicht schnell genug voran, so dass es am Ende wegfiel. In der Oberstufe war in meinem Bundesland Analysis für alle Abiturienten Pflicht. Außerdem konnte wahlweise Statistik oder Lineare Algebra mit analytischer Geometrie behandelt werden. An meiner Schule wurde nur lineare Algebra angeboten. Das war natürlich eine gute Grundlage für das Modul Mathe 2. Aber was Statistik angeht, hatte ich tatsächlich nur ganz geringe Vorkenntnisse.
     
    Dabei spräche vieles dafür, gerade dieses Gebiet der Mathematik im Schulunterricht zu betonen. Analysis und lineare Algebra sind wichtig in technischen und naturwissenschaftlichen Studiengängen. Statistik braucht man in Biologie und Medizin, in den Wirtschaftswissenschaften und in allen Sozialwissenschaften. Und wenn Geisteswissenschaftler überhaupt Mathematik brauchen, so ist es wohl Statistik. Wer Nachrichten schaut oder Zeitung liest, ist laufend mit Statistiken konfrontiert. Statistische Grundkenntnisse müssten eigentlich zur Allgemeinbildung gehören. Last but not least ist die Statistik der Teil der Mathematik, der sich mit dem Ungewissen und Unpräzisen beschäftigt, während die meisten anderen Gebiete der Schulmathematik den Eindruck erwecken, Mathematik handele allein vom Exakten. Ich war also sehr neugierig darauf, diese Lücke meiner Bildungsbiographie zu schließen.
     
    Das Lehrbuch "Basiswissen Statistik" von Michael Müller und Werner Poguntke ist Grundlage für diesen Kurs. Es hat an die 180 Seiten, was für ein Modul bei Springer Campus sehr wenig ist. Wie schon bei den anderen mathematischen Kursen ist die Informationsdichte sehr hoch. Die 180 Seiten erfordern durchaus vergleichbar viel Arbeit wie 500 Seiten Software-Engineering. Das Buch ist aber keine reine Formel- und Beweisorgie. Anwendungsbeispiele zu allen Themen machen dieses Buch besonders lebendig und praxisnah. Man merkt, dass Statistik ein Fach ist, dass man in vielen Wissens- und Lebensbereichen brauchen kann. Während in anderen Mathematik-Modulen die Anwendungsbeispiele gelegentlich ein bisschen konstruiert wirkten, konnte man hier immer gleich den Nutzen des ganzen erkennen.
     
    Wie schon beim Lehrbuch "IT-Sicherheit" hat Herr Poguntke auch hier viele Verweise innerhalb des Buches eingebaut. Er verweist auf künftige Kapitel, in denen ein aktuell behandeltes Thema noch einmal relevant werden wird. Und er verweist auf vorangegangene Kapitel, in denen man Grundlagen für den aktuellen Stoff noch einmal nachlesen kann. Das hat mir sehr geholfen, die Bezüge zwischen den Kursthemen zu erkennen und den Stoff im Zusammenhang zu denken. Darum bin ich der Meinung, "Basiswissen Statistik" ist das beste unter den guten Mathematik-Lehrbüchern im Studiengang.
     
    Lehrbuch, Online-Tests und Übungsaufgaben sind in diesem Modul besonders gut aufeinander abgestimmt. Es gibt Übungsaufgaben zu allen Themen des Kurses. PDF-Tools, mit denen man sich selbst neue Aufgaben generieren kann, gibt es in diesem Kurs leider nicht. Ich habe aber festgestellt, dass das Übungsmaterial genügt, um sich gut auf die Prüfung vorzubereiten.
     
    Der Kurs zerfällt im wesentlichen in zwei Teile:
    - deskriptive Statistik
    - induktive Statistik
     
    Der Unterschied ist folgender: In der deskriptiven Statistik habe ich eine vollständige Sammlung von Daten oder Werten, die ich verdichten möchte, um eine allgemeine Aussage zu treffen. Aus dem Alltag geläufig ist zum Beispiel der Durchschnitt, der in der deskriptiven Statistik Mittelwert heißt. Er fasst zum Beispiel alle Noten eines Studium in einem Wert zusammen.

    In der induktiven Statistik habe ich eine Stichprobe, von der ich auf eine Gesamtmenge schließen möchte. Es gibt Millionen Wahlberechtigte Bürger, aber befragt habe ich nur ein paar Tausend. Nun möchte ich eine Prognose abgeben, wie die Wahl ausfallen wird und ich möchte abschätzen können, mit welcher Wahrscheinlichkeit meine Prognose zutrifft. Kennzeichnend für die induktive Statistik ist also, dass...
    ... mir ein großer Teil der relevanten Daten unbekannt ist.
    ... ich wahrscheinlichkeitstheoretische Überlegungen anstellen muss.
     
    Themen in der deskriptiven Statistik sind:
    - Lage- und Streuungsmaße
    - Graphische Darstellungen von Häufigkeiten
    - Konzentration und Disparität
    - Lorenzkurve
    - Konzentrationskoeffizient nach Gini
    - Messzahlen und Indizes
    - Geometrisches Mittel
    - Zusammenhangsanalyse
    - Kreuztabellen
    - Unabhängigkeit und Kontingenzmaße
    - der Korrelationskoeffizient nach Pearson und nach Spearman
    - Lineare Regression
    - Zeitreihenanalyse
     
    Die Themen sind sehr lebensnah präsentiert. Mathematisch ist relativ leicht nachzuvollziehen, was hier geschieht. Dieser Teil des Kurses ist vergleichsweise einfacher. Wer sich mit Mathematik schwer tut, sollte sich auf diesen Teil konzentrieren, weil man hiermit in der Klausur einen guten Punktesockel aufbauen kann, so dass man zumindest nicht durchfällt.
     
    Die induktive Statistik ist ein bisschen schwieriger und mathematisch raffinierter. Im Grunde wird die Sache in drei Schritten aufgebaut:
    1. Die Kombinatorik handelt davon, auf wieviele Arten man aus Mengen etwas auswählen kann. Ein aus dem Alltag bekanntes Beispiel ist die Ziehung von 6 Lottozahlen aus 49.
    2. Die Wahrscheinlichkeitsrechnung weist auf dieser Grundlage bestimmten Ereignissen und Kombinationen von Ereignissen eine Zahl zwischen 0 und 1 zu, die man Wahrscheinlichkeit nennt. Was genau eine Wahrscheinlichkeit ist, bleibt letztlich eine philosophische Frage. (Psychologisch interessant ist, dass man beim Umgang mit Wahrscheinlichkeiten leicht in gewisse "kognitive Tunnel" rennt. Das sind Irrwege des Denkens, die einem zeigen, dass man leider gerade im praktisch relevanten Gebiet der Wahrscheinlichkeitsrechnung nicht gut beraten ist, auf Intuition zu setzen. Die Autoren präsentieren in diesem Zusammenhang ein paar interessante Paradoxien, z.B. das Simpson Paradox. Dieses wird im Lehrbuch anhand von zwei Gruppen präsentiert, in denen der Anteil der nichtrauchenden Männer höher ist als der der nichtrauchenden Frauen. Vereint man diese beiden Gruppen zu einer, so ist der Anteil nichtrauchender Frauen höher. Das überrascht und verwirrt, auch wenn man alles wiederholt nachrechnet.)
    3. Auf der Grundlage von Kombinatorik und Wahrscheinlichkeitsrechnung beschäftigt man sich nun mit verschiedenen Wahrscheinlichkeitsverteilungen, von denen die bekannteste die Standard-Normalverteilung ist. Sie ist auch als Glockenkurve bekannt. Normalverteilungen sind deshalb so nützlich, weil dort, wo sich viele zufällige Phänomene überlagern, regelmäßig eine Normalverteilung zu beobachten ist.
     
    Themen in der induktiven Statistik sind:
    - Kombinatorik
    - Rechnen mit Wahrscheinlichkeiten
    - Bedingte Wahrscheinlichkeiten
    - Kontingenztabellen und Wahrscheinlichkeitsbäume
    - die Bayes-Formel
    - Gemeinsame Wahrscheinlichkeiten
    - Zufallsvariablen
    - Bernoulli-Verteilung
    - Binomial-Verteilung
    - Hypergeometrische Verteilung
    - Poisson-Verteilung
    - Stetige Verteilungen
    - Exponential-Verteilung
    - Normalverteilung
    - t-Verteilung
    - zentraler Grenzwertsatz
    - Approximation mit der Normalverteilung
    - Schätzen und Testen
    - Schätzung unbekannter Parameter
    - Testverfahren
     
    Es folgt ein knappes Kapitel über Statistik mit Rechnern, das aber nicht klausurrelevant ist. In diesem Kurs lernt man, Statistik sozusagen mit Papier und Bleistift zu treiben. Dabei merkt man durchaus, dass viel mechanische Rechenarbeit anfällt. Aus diesem Grund darf in der Klausur ein nicht-programmierbarer Taschenrechner verwendet werden. Wer einmal erlebt hat, wie viel Mühe es macht, eine größere Menge von Messwerten zu verdichten, der kommt schnell auf die Idee, das man das mit Software automatisieren müsste. Das ist allerdings nicht mehr Thema dieses Moduls.
     
    Die Betreuung durch meinen Tutor war auch in diesem Mathematik-Modul hervorragend. Die Rückmeldungen kamen schnell. Spannend wurde es gerade dann, wenn ich nicht alles richtig hatte. Hier gab es dann Anregungen, wie man doch noch selbst auf die richtige Lösung kommen konnte. Einmal bin ich in einen der besagten kognitiven Tunnel getappt, so dass ich alles richtig gerechnet und am Ende doch die falschen Schlüsse gezogen habe. Das war ein recht witziger Austausch, bis bei mir endlich der Groschen fiel. (Kurz gesagt, bin ich auf eine Variante des bekannten "Ziegenproblems" reingefallen. Wer das nicht kennt, einfach mal googlen.)
     
    Der Online-Test und die Online-Klausur waren beide gut machbar, wenn man seine "Hausaufgaben" erledigt hatte. Hier konnte man sich noch mal ein kleines Bonuspunktepolster für die Klausur erarbeiten. Geschenkt bekommt man es aber nicht. Die Online-Klausur gibt einen realistischen Vorgeschmack auf das Niveau der Präsenzklausur. Schwierig für mich war: Mein gewohnter Taschenrechner ist programmierbar und funktioniert mit RPN-Logik. Für die Klausur musste ich mir den Taschenrechner meiner Tochter ausleihen. Es hat mich tatsächlich ausgebremst, ständig suchen zu müssen, wo welche Taste ist. Mal schauen, wie verheerend sich das ausgewirkt hat. Unterm Strich ist das aber eine faire Klausur, die die Themen des Kurses breit abdeckt. Man hat ein bisschen Zeitdruck, kann aber alles schaffen, wenn man ordentlich vorbereitet ist.
     
    Damit wäre nun der Studienbereich Mathematik abgeschlossen. Was mir jetzt noch gefallen würde, wäre ein aufbauendes Modul zur Statistik mit Rechnern. Ich denke zum Beispiel an Datenanalyse mit R oder Statistik-Programmierung mit Python. (Da gibt es ein tolles Buch von Allen B. Downey.) Auch ein Modul zur Datenvisualisierung fände ich für einen Studiengang Web- und Medieninformatik ziemlich cool. Gibt es leider bislang nicht, aber ein paar Wünsche dürfen ja noch offen bleiben.
  6. kurtchen
    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!
  7. kurtchen
    Beim letzten Prüfungstermin habe ich 4 Klausuren an 2 verschiedenen Standorten geschrieben:
    - Web-Engineering (Heidelberg)
    - Software-Technik 3 (Heidelberg)
    - Content-Management-Systeme (Dortmund)
    - Data-Mining (Dortmund)
     
    Nötig war das, weil ich zum 1. Juli umziehe. Das ist zum Glück nur ein Umzug innerhalb der Stadt, aber viel Zeit wird trotzdem dafür draufgehen. Außerdem werden wir in der neuen Wohnung ein bisschen renovieren und umbauen müssen. Einen Schuppen werde ich auch noch bauen müssen, damit wir einen Platz haben, wo wir unsere Fahrräder hinstellen können. Die alte Wohnung war schon lange zu klein, was sich immer häufiger auf den Familienfrieden auswirkt. Berufsbedingt bin ich es gewohnt, im größten Trubel meinen Kram zu machen, so dass ich wahrscheinlich noch am wenigsten darunter gelitten habe. Mich stören eher technische Geräusche: Handy-Gedudel, Gepiepse von Computerspielen und solche Sachen. Da gilt die Regel: Nicht wenn ich lerne bzw. dann nur mit Kopfhörer. Da halten sich die Teenager zum Glück dran.
     
    Die alte Wohnung hatte viele Vorzüge. Unser Vermieter hat uns nicht ein einziges Mal die Miete erhöht und war immer sehr tolerant gegenüber Kinderlärm. Dafür haben wir bei Reparaturen immer zugeschaut, dass wir uns möglichst selbst mit Material aus dem Baumarkt helfen. Leben und Leben lassen. War eine Hausgemeinschaft, wo man ein bisschen aufeinander aufgepasst hat. Selbst, wenn wir in Urlaub gefahren sind, haben wir die Wohnungstür nur zugezogen, nie abgeschlossen. Wäre sofort aufgefallen, wenn jemand unbekanntes durchs Treppenhaus geht. Die günstige Miete hat mir auch sehr geholfen, die Kosten für mein Studium aufbringen zu können, obwohl ich meine Arbeitszeit auf 30 Stunden reduziert hatte. Das wird ab jetzt alles ein bisschen schwieriger.
     
    Das jedenfalls war der Grund für meinen Versuch, 4 Klausuren auf einen Streich zu schaffen. Den Stoff von 4 Modulen gleichzeitig im Kopf "fluide" zu halten, ist mir nicht leicht gefallen. Vor allem, weil mit Software-Technik 3 ein anspruchsvolles und umfangreiches Modul dabei war, das mir auch inhaltlich sehr wichtig war. Da wollte ich gerne gut abschneiden. Ich hoffe, dass sich mein Ehrgeiz, alles vor dem Umzug zu schaffen, nicht an gerade dieser Stelle rächt.
     
    Nach den Prüfungen habe ich auch gemerkt, dass ich mich nicht lange konzentrieren konnte. Der Start in mein neues Modul "BWL1" war zäh. Jetzt wird es langsam wieder besser. 4 Klausuren an einem Termin, das möchte ich nicht zur Nachahmung empfehlen.
  8. kurtchen
    Das Modul "Data Warehouse & Data Mining" kann in meinem Studiengang "Web- und Medieninformatik" als Vertiefungsmodul belegt werden. Für Studierende der Wirtschaftsinformatik ist es ein Pflichtmodul und wird dem Studienbereich "Wirtschaftsinformatik" zugerechnet. Meine Erwartungen an dieses Modul wurden durch das Lehrbuch "Data Mining" von Jürgen Cleve und Uwe Lämmel geprägt. In diesem Buch geht es darum, wie Analyseverfahren mathematisch und algorithmisch funktionieren. Das wollte ich lernen. Zu meiner anfänglichen Enttäuschung hat dieses Modul andere inhaltliche Schwerpunkte. Eigentlich hätte ich das ahnen müssen. Als inhaltliche Voraussetzung werden nämlich "Grundlagen der Informatik 1" und "SQL und relationale Datenbanken" aber nicht "Statistik" genannt. Kein Wunder also, dass die eigentlichen Mechanismen des "Knowledge Discovery in Databases" keinen großen Raum einnehmen.
     
    Dieses Modul beschäftigt sich mit Data Mining und Data Warehousing in einem unternehmerischen Kontext. Zunächst geht es um die Unterscheidung zwischen operativen und analyseorientierten Informationssystemen. Operative Systeme sind entlang von Workflows im Unternehmen organisiert. Ein Beispiel wäre eine Software zu Aufnahme und Abwicklung von Bestellungen. Solche Informationssysteme häufen im Laufe der Zeit große Datenbestände an. Die Art der Ablage der Daten ist aber an der konsistenten Speicherung von fallbezogenen Daten orientiert.
     
    Bei analyseorientierten Informationssystemen geht es darum, die so gewonnenen Daten in Kombination mit Daten aus anderen Quellen mit geeigneten Methoden auszuwerten, um bislang unbekannte Muster und Zusammenhänge zu erkennen, die sich betriebswirtschaftlich nutzen lassen. Zum Beispiel, dass bestimmte Produkte häufig in Kombination gekauft werden oder dass der Kauf bestimmter Produkte Folgekäufe bestimmter anderer Produkte nach sich zieht. Ein Unternehmen könnte darauf z.B. reagieren, indem es solche Produkte gemeinsam anbietet oder Werbung passgenau verschickt.Die Details solcher Auswertungsprozesse stehen nicht im Mittelpunkt des Kurses. Vielmehr geht es um den Prozess im Unternehmen, in dem solche Verfahren durch geeignete Aufbereitung der Daten vorbereitet werden und zur Anwendung kommen. Und natürlich auch darum, wie die Ergebnisse solcher Analysen für den Unternehmenserfolg nutzbar gemacht werden können.
     
    Als Studierender der Web- und Medieninformatik bin ich eine andere Perspektive gewohnt: Wie funktioniert es technisch?
     
    Aber das ist ein Modul für Wirtschaftsinformatiker. Die Perspektive ist eher: Wie bekommen wir das im Unternehmern organisiert? Was fangen wir betriebswirtschaftlich damit an? Die nötige Analysesoftware programmieren wir wahrscheinlich nicht selbst sondern kaufen sie ein. Wir möchten daher nur wissen, was für Verfahren es gibt und für welche Anwendungsszenarien sie welche Stärken und Schwächen haben. Wir müssen nicht en detail wissen, wie z.B. ein künstliches neuronales Netz in der Lage ist, bislang unbekannte Muster im Kaufverhalten zu entdecken.
     
    Nach der ersten Enttäuschung habe ich beschlossen, mich auf diese andere Perspektive einzulassen und das beste aus dem Modul zu machen. Unterm Strich hat es mir dann doch recht gut gefallen, wenn auch aus ganz anderen Gründen als erwartet. Der größte Gewinn war tatsächlich die unternehmerische, anwendungsbezogene Perspektive, über die ich mir bislang weniger Gedanken gemacht hatte. Mich interessiert, wie man ein gegebenes Problem technisch lösen kann. Wie man vorhandene Technologien einsetzt, um sich im Wettbewerb Vorteile zu verschaffen, finde ich weniger spannend. Aber natürlich braucht man Menschen, die sich um genau solche Dinge Gedanken machen. Ich möchte mich nicht unbedingt selbst in diese Richtung entwickeln, aber ich halte es für sinnvoll, ein Verständnis für diese Denk- und Arbeitsweise zu entwickeln. Und für Menschen, die so arbeiten. Dazu ist das Modul Data Mining gut geeignet.
     
    Der Umfang des Lehrbuches ist mit ca. 200 Seiten für Springer Campus unterdurchschnittlich. Nur die zweite Hälfte des Buches beschäftigt sich mit dem Prozess der Wissensgewinnung aus großen Datenbeständen. In der ersten Hälfte geht es zunächst um die Transformation und Zusammenführung von Daten aus operativen Systemen. Für analyseorientierte Systeme bieten sich andere Formen der Datenspeicherung an. Es gibt multidimensionale Datenbanken, die für genau solche Anwendungsfälle entwickelt wurden. Auch die Verwendung relationaler Datenbanken ist möglich, aber sie werden dann oft anders aufgebaut. Während man in operativen Systemen redundante Speicherung von Informationen vermeiden möchte, um Inkonsistenzen auszuschließen, lässt man bei analyseorientierten Systemen manchmal gewisse Redundanzen zu, um schneller durch multidimensionale Datenbestände navigieren zu können. All dies ist zusammengefasst in den Kapiteln zu Data Warehouse und OLAP. Eine wesentliche Rolle spielen die grundlegenden Navigationsmöglichkeiten in multidimensionalen Datenstrukturen. Man kann multidimensionale Datenwürfel in verschiedenen Ebenen schneiden (Slicing), den Datenwürfel durch die Schnittebene drehen (Dicing), Dimensionen feiner Auflösen bzw. in den Würfel hineinzoomen (Drill down) oder aus dem Würfel herauszoomen (Roll up). Ziel ist, eine Datenstruktur aufzubauen, die es erlaubt, große Datenbestände interaktiv und auf neue Weise zu erkunden. Das ist etwas ganz anderes als klassisches Reporting.
     
    Erst im zweiten Teil des Buches geht es dann um Data Mining, also das Erkennen bislang unbekannter Muster in großen Datenbeständen. Im Lehrbuch werden zwei Auslegungen des Begriffes Data Mining unterschieden. Data Mining im engeren Sinne ist der technische Prozess der Wissensentdeckung in Datenbanken. Dazu verwendet man Verfahren wie künstliche neuronale Netze, Clusterverfahren, Assoziationsanalyse und Entscheidungsbaumverfahren. Data Mining im weiteren Sinne ist ein umfassender, mehrstufiger Prozess. Die Stufen heißen: Business Understanding, Data Understanding (Auswahl und Sichtung der Daten), Data Preparation (Datenaufbereitung und -bereinigung), Data Modelling (die Anwendung der eigentlichen Analyseverfahren), Evaluation (Beurteilung und Auswahl relevanter Analyseergebnisse) und Deployment (die Anwendung der Ergebnisse zur Generierung von Wettbewerbsvorteilen). Das Lehrbuch konzentriert sich auf die zweite Sichtweise des Data Minings als mehrstufiger Prozess. Wer wissen will, wie die Phase des Data Modelling mathematisch-technisch funktioniert, sollte ein anderes Lehrbuch lesen.
     
    Typisch für Springer Campus ist, dass jedes Kapitel mit einer Fallstudie endet, die die Anwendung der beschriebenen Techniken und Konzepte in einem betrieblichen Kontext schildert. Hier geht es um eine Firma, die Fahrräder produziert und ihre Kunden gezielter ansprechen möchte.
     
    Meine Tutorin gab mir mit den Aufgaben gute Rückmeldungen zur Klausurvorbereitung. Dankbar bin ich vor allem für ihre Tipps zum Zeitmanagement in der Klausur. Meine eingereichten Lösungen waren nämlich oft recht detailliert. Hier bekam ich den Hinweis, für die Klausur mehr auf den Punkt zu kommen, weil die Zeit knapp sei. In der Präsenzklausur gab es denn auch viele Aufgaben, die alle Teile des Kurses abdeckten. Ich habe von Anfang bis Ende geschrieben, was das Zeug hielt, und wurde gerade so rechtzeitig fertig. Was recht angenehm war: Die Aufgaben kamen in Dreiergruppen und aus jeder Gruppe sollte man zwei Aufgaben auswählen, eine durfte man weglassen. Auf diese Weise konnte man kleinere Unsicherheiten im Stoff ein wenig ausgleichen. Aber nicht ganz, denn z.T. zielten die Fragen in ähnliche Richtungen mit unterschiedlichen Schwerpunkten. Eine gründliche Vorbereitung des gesamten Stoffes ist also angesagt. Ich meine, ganz gut klar gekommen zu sein. Ein Ergebnis liegt mir aber noch nicht vor.
     
    Data Mining ist aus meiner Sicht ein Modul mit mittlerem Schwierigkeitsgrad. Der Arbeitsumfang für die Bearbeitung erscheint mir leicht unterdurchschnittlich, weil das Lehrbuch etwas dünner ist als in vergleichbaren Modulen. Web- und Medieninformatiker sollten sich bewusst sein, dass Data Mining als Modul für Wirtschaftsinformatiker aus einer anderen als der gewohnten Perspektive geschrieben ist und auch eine andere Zielsetzung hat. Wer mit diesem anderen Blickwinkel zurecht kommt, ihn vielleicht sogar als willkommene Abwechslung und Anregung begreifen kann, hat hier eine Möglichkeit, im Vertiefungsbereich auch mal mit etwas weniger Bearbeitungszeit einen Schritt weiter zu kommen. Mir hat es am Ende Spaß gemacht, auch wenn ich immer noch Lust hätte, ein Modul zu belegen, das wirklich vertieft auf die einzelnen Analysetechniken eingeht.
  9. kurtchen
    Mein erstes Modul bei der W3L war "Grundlagen der Informatik 1". Dies ist das erste von insgesamt 5 aufeinander aufbauenden Modulen zur Programmierung in Java. In GdI1 fängt man an mit strukturierter Programmierung. Objektorientierte Konzepte werden in diesem Modul noch umschifft. Das heißt auch, dass man lediglich Konsolenprogramme schreiben kann, denn der Umgang mit GUI-Bibliotheken setzt voraus, dass man objektorientierte Konzepte verstanden hat.
     
    Hier geht es zunächst einmal um grundlegende Dinge:
    - Datentypen
    - Probleme und Fehlerquellen bei Fließkommaarithmetik
    - Variablen und Zuweisungen, Konstanten
    - Felder
    - Funktionen bzw. Methoden
    - Lokale Variablen
    - Übergabe von Parametern
    - Call-by-value vs. call-by-reference
    - Bedingte Verzweigungen und andere Kontrollstrukturen
    - Schleifen
    - Darstellung des Programmflusses, zunächst mal klassisch mit Nassi-Shneidermann-Diagrammen
    - Und dann mit UML
    - Felder
    - einfaches Sortieren
    - Rekursion
     
    Es wird empfohlen, die Programmierübungen in der Entwicklungsumgebung BlueJ zu machen. Daran habe ich mich gehalten und ich fand das für den Einstieg gut.
     
    Es gibt ein erstes Kapitel über Software-Tests, z.B. über Regressionstests. Ferner gibt es ein Kapitel über Verifikation. Hier geht es darum, die Korrektheit eines Programms formal zu beweisen. Dies war das einzige Kapitel, das ich nicht so gut verständlich fand. Hier ist es mir auch nicht gelungen, die Einsendeaufgabe zur vollen Zufriedenheit meiner Tutorin zu lösen.
     
    Um auch mal etwas anderes kennen zu lernen, endet der Kurs mit zwei recht knappen Kapiteln über andere Programmiersprachen. Man experimentiert ein wenig mit C. Das ist aber vom Umfang her nicht genug, um diese Sprache zu lernen. Eher bekommt man ein Bewusstsein dafür, was Java einem alles abnimmt und worum man sich in einer vergleichweise maschinennahen Sprache selber kümmern muss. Und dann kam noch ein recht kurzes Kapitel über Processing. In dieser Sprache kann man mit geringen Vorkenntnissen Grafik und Animationen programmieren. Processing basiert letztlich auf Java. Ich habe das als spaßiges Element erlebt, um am Ende auch mal etwas anderes zu machen als immer nur Konsolenanwendungen.
     
    Die wenigsten Inhalte des Kurses waren völlig neu für mich. Aber ich fand den didaktischen Aufbau recht gelungen und habe noch einmal viele eigentlich bekannte Dinge in einem anderen Licht oder in einem anderen Zusammenhang gesehen. So war ich am Ende doch sehr froh, diesen Kurs als solide Grundlage gemacht zu haben.
     
    Die Rückmeldungen und Antworten meiner Tutorin waren in diesem Kurs besonders ausführlich. Hier gab es ein erkennbares Bemühen, dem Einsteiger ein bisschen mehr Hilfe zu geben. Die Rückmeldungen in den fortgeschritteneren Kursen sind deutlich knapper, vor allem, wenn die eingereichten Lösungen passen.
     
    Einen kleinen Schock erlebte ich, als ich durch die freiwillige Online-Klausur am Ende des Kurses durchgefallen bin. Hier hatte ich mich zeitlich völlig verzettelt. Außerdem hatte ich unterschätzt, dass ich ein wenig Zeit extra einplanen musste, um Lösungen zu zippen und hochzuladen. In der Bedienung der Lernplattform war ich noch etwas unerfahren und ungeschickt. Darum gab es da ein paar Fehlbedienungen und am Ende war die Zeit um, bevor ich alles hochladen konnte.
     
    Hier hat mir sehr weitergeholfen, dass meine Tutorin mich motiviert hat, trotzdem zügig die Präsenzklausur anzugehen. Ich habe auch ein paar gute Tipps zur Zeiteinteilung in der Klausur bekommen und generell zum Thema Prüfungsvorbereitung. Im Grunde alles Sachen, die einem der gesunden Menschenverstand hätte sagen sollen, aber es war für mich schon lange her, dass ich mich einer Prüfung unterzogen hatte. Und so war das wirklich sehr hilfreich, das noch mal so gesagt zu bekommen. (In späteren Modulen wird allerdings schon vorausgesetzt, dass man seine Lerntechnik drauf hat, sich selbst motivieren und auch mit Rückschlägen umgehen kann.)
     
    Nach der verpatzten Online-Klausur bin ich doch mit großen Respekt und ziemlichem Bammel in die Präsenzklausur gegangen. Ungewohnt war hier, nur mit Papier und Stift arbeiten zu können und keine IDE zu haben. Darauf hatte mich meine Tutorin aber vorbereitet und mir geraten, auch mal zu üben, ein paar Aufgaben nur mit Stift und Papier zu lösen, um ein bisschen auf Tempo zu kommen. Man schreibt ja heute nur noch selten mit der Hand. Zu meiner großen Überraschung, fiel mir die Präsenzklausur dann recht leicht. Ich war innerlich ruhig, konnte mich gut konzentrieren, mir die Zeit gut einteilen und meine Leistung erbringen. Mit dem Ergebnis war ich dann auch zufrieden.
     
    Nach dem Abschlusstest jedes Moduls bekommt man einen Link zu einer Online-Befragung geschickt. Hier kann man das Modul und auch seinen Tutor bewerten.
     
    Auf mein Klausurergebnis musste ich ca. 3 Wochen warten. Das kam mir ewig vor, aber heute weiß ich, dass das eigentlich ein recht guter Wert war. Meistens dauert es noch ein bis zwei Wochen länger.
     
    Fazit: Dieser Einstieg ins Studium hat mir viel Spaß gemacht, mein Selbstvertrauen gestärkt und mich stark motiviert, die nächsten Schritte zu gehen. Programmieren war natürlich auch ein bisschen das, was ich mir noch ganz naiv unter einem Informatik-Studium vorgestellt hatte. Mein nächstes Modul sollte dann "Rechnerstrukturen und Betriebssysteme" werden und das war natürlich ganz anders. Aber davon erzähle ich ein andermal.
  10. kurtchen
    Das Modul "Web-Anwendungen 2" ist ein Pflichtmodul im Studiengang "Web- und Medieninformatik" und zählt zum gleichnamigen Studienbereich. Springer Campus empfiehlt, dieses Modul im 4. Semester zu belegen, also im gleichen Semester wie "XML" und "Multimedia". Studierende im Studiengang "Wirtschaftsinformatik" müssen "Web-Anwendungen 2" nicht belegen, können es aber als Vertiefungsfach wählen. Allerdings sollten sie dabei die inhaltlichen Voraussetzungen beachten. Grundlagen der Informatik 1 und 2 sowie Web-Programmierung müssen ja auch die Wirtschaftsinformatiker als Pflichtmodule belegen. Aber auch "Web-Anwendungen 1" wird hier empfohlen. Es liefert eine solidere Grundlage in HMTL und CSS als das Modul Web-Programmierung. Insofern finde ich es hier sehr sinnvoll, der Empfehlung zu folgen. "Web-Anwendungen 2" ist auch Pflichtmodul für das Weiterbildungszertifikat "Web-Entwickler". Es ist darüber hinaus eine inhaltliche Voraussetzung für das Vertiefungsfach "Aktuelle Webtechniken", bei dem es um Java Server Faces (JSF) geht.
     
    Worum geht es im Kurs?
     
    Während es in "Web-Anwendungen 1" um statisches HTML geht, behandelt "Web-Anwendungen 2" die dynamische Erzeugung von HTML-Dokumenten mit einer serverseitigen Sprache. Bekanntestes Beispiel hierfür ist sicher PHP. In diesem Modul wird aber die serverseitige Programmierung mit Java Server Pages behandelt.
    Was ist nun eine Java Server Page? Eine JSP ist eine Datei, in der Regel mit der Endung ".jsp", die HTML-Schablonentext enthält, in den Java Code-Fragmente eingestreut sind. Diese Datei wird in eine Java-Klasse übersetzt, die wiederum in Bytecode übersetzt wird. Ein Web-Server, z.B. Apache Tomcat, erzeugt damit zu einem HTTP-Request eine sinnvolle HTTP-Response. Die Response ist der HTML-Schablonentext, in den Elemente eingefügt wurden, die dynamisch berechnet wurden und zur Anfrage passen.
     
    Aus Gesprächen mit Kommilitonen weiß ich, dass es für viele ein Ärgernis ist, dass in diesem Modul nicht PHP als Lehrsprache verwendet wird. Zum einen arbeiten viele von ihnen als Web-Entwickler und haben praktische Erfahrung mit PHP. Zum anderen argumentieren sie mit dem recht kleinen Marktanteil von JSP. Das ist natürlich ein Argument. Und doch meine ich, dass es durchaus gute Gründe gibt, die serverseitige Programmierung am Beispiel von JSP zu lehren.
     
    Springer Campus setzt ja in den einführenden Programmierkursen auf Java als Lehrsprache. Die Stärke von JSP ist, dass man Java-Klassen verwenden kann. Man kann die gesamte Fachlogik einer Web-Anwendung in Java programmieren und dabei auf alles zurückgreifen, was man bisher über Programmierung gelernt hat. Das hat didaktisch dann doch einige Vorzüge. JSP kann man Klebstoff zwischen Java und HTMl sehen.
     
    Praktisch wird man eine IDE wie Eclipse oder Netbeans mit JavaEE verwenden. Die nimmt einem eine Menge Arbeit ab, zum Beispiel das Anlegen einer sinnvollen Ordnerstruktur für den Server. Die IDE packt die erstellten Anwendungen auch automatisch in sogenannte war-Archive. Der Tutor erwartet Lösungen zu den Einsendeaufgaben in dieser Form.
     
    Das Lehrbuch
     
    "Java Server Pages" von Dieter Wißmann ist wahrscheinlich das beste deutschsprachige Lehrbuch zu diesem Thema. Es gibt nämlich nicht viel anderes dazu. Und das wenige, was es gibt, ist oft schon ganz schön alt. Wer mit diesem Lehrbuch nicht zurecht kommt und Sekundärliteratur sucht, wird es also nicht ganz leicht haben. Zum Glück schreibt der Autor sehr verständlich. Theorie und Anwendungsbeispiele wechseln sich ab und die Themen bauen gut aufeinander auf. Das Buch hat ca. 450 Seiten, was für Kurse bei Springer Campus üblich ist. Unter den Abbildungen sind besonders die UML-Diagramme relevant, die verwendet werden, um die Zusammenhänge zwischen verschiedenen Klassen zu klären, die man beim Arbeiten mit JSP kennen sollte.
     
    In vielen Modulen habe ich die Themen recht ausführlich beschrieben. In diesem Modul werde ich darauf verzichten, weil JSP ziemlich komplex ist und so ist auch die Vielfalt an Themen sehr groß. Ein einfacher, linearer Aufbau des Stoffes ist hier nicht möglich und sinnvoll, weil JSP eine Brücke zwischen vielen Technologien schlägt. Man arbeitet mit HTML und CSS, muss sich damit beschäftigen, was bei einem HTTP-Request zwischen Client und Server passiert, hat mit Apache Tomcat zu tun, aber auch mit der JVM und natürlich mit der Programmiersprache Java, die womöglich per JDBC auch noch an eine relationale Datenbank angebunden ist. Insofern muss der Kurstext immer wieder Theorie einführen oder wiederholen, um so Themen noch einmal ins Bewusstsein zu rufen, die dann per JSP verknüpft werden. Keine leichte Aufgabe für einen Autor, die meiner Meinung nach hier hervorragend gelöst wurde.
     
    Einen großen Teil des Buches - an die 100 Seiten - nimmt ein komplexes Fallbeispiel ein: Der Aufbau eines Web-Anzeigenmarktes mit JSP, wobei ein Überblick über den gesamten Entwicklungsprozess gegeben wird. Der komplette Code des Fallbeispiels liegt dem Kurs bei und kann praktisch ausprobiert werden.
    Besonders loben möchte ich hier, dass ein Kapitel zur Fehlersuche in JSPs enthalten ist. Die ist nämlich manchmal nicht ganz einfach, was mit dem zweistufigen Übersetzungsprozess zu hat: Von JSP zu Java und von Java zu Bytecode.
     
    Treten Fehler beim ersten Schritt auf, so kann man das noch gut nachvollziehen. Ab dem zweiten Schritt oder zur Laufzeit wird es schwieriger, denn die Fehlermeldung bezieht sich auf die aus der JSP generierte Java-Klasse, die man ja nicht selbst geschrieben und gesehen hat. Der Autor stellt hier einige Strategien zur Fehlersuche vor. Eine ist die Umleitung auf eine Fehlerseite, die im Browser detaillierte Meldungen zeigt. Das ist natürlich nichts für die ausgelieferte Web-Anwendung sondern etwas, was dem Entwickler nützt.
     
    Wegen des zweistufigen Übersetzungsprozesses ist es auch immer wieder nützlich, sich damit zu beschäftigen, wie die Umsetzung in eine Java-Klasse läuft und was dabei im Hintergrund passiert.
     
    Zur Komplexität des Themas trägt bei, dass sich bei JSP verschiedene Syntaxen entwickelt haben, oft mit dem Ziel, das Schreiben von JSPs für Web-Frontend-Entwickler ohne Java-Kenntnisse einfacher zu machen. Das ist historisch gewachsen aber für den Einsteiger unübersichtlich und verwirrend. Der Autor löst dieses Problem, indem er die verschiedenen Syntaxen nacheinander einführt und Hinweise gibt, welche wofür geeignet ist und welche man besser nicht in einer JSP mischen sollte.
     
    Einsendeaufgaben
     
    Die Einsendeaufgaben in diesem Kurs hatten eine gewisse "Künstlichkeit", weil sie erkennbar darauf hin konstruiert waren, dass der Lernende bestimmte Sprachfeatures kennen lernt, ausprobiert und auch typische Probleme kennen lernt, die damit verbunden sind. In anderen Programmierkursen von Springer Campus wirkten die Aufgaben oft ein bisschen näher an realen Anwendungsszenarien. Für den behandelten Stoff hat der Kursautor meiner Meinung nach genau das richtige getroffen. Der Kurs ist schon etwas anspruchsvoller und eine gewisse didaktische Zuspitzung scheint mir deswegen notwendig.
     
    Bei den Einsendeaufgaben geht es um das Abfangen von Fehlern, um Weiterleitungen von Seite zu Seite, um die Übergabe und Validierung von Parametern, um das Speichern und Weitergeben von Informationen vermittels Java-Beans, um die Verwaltung von Sitzungen, den Umgang mit Cookies, aber auch um die Konfiguration des Apache Tomcat Servers vermittels einer XML-Datei.
     
    Für die Aufgaben habe ich regelmäßig länger gebraucht als im Kurs angegeben. Mein Tutor empfahl, den compilierten Code nicht nur zu testen, sondern die erzeugten HTML-Seiten auch validieren zu lassen. Er machte relativ enge Vorgaben hinsichtlich der einzureichenden Lösungen, z.B. verbindliche Dateinamen und Ordnerstrukturen. Dafür waren seine Rückmeldungen besonders detailliert und treffsicher. Mein Tutor benannte nicht nur klar, was nicht gut war und wie man es hätte besser machen können. Er sagte ebenfalls, was gut war und so bleiben sollte.
     
    Auch kommunizierte er im Vorfeld recht genau, wann und in welchem Umfang er Einsendeaufgaben korrigiert, so dass ich mir die Arbeit am Kurs gut einteilen konnte und rechtzeitig zum Prüfungstermin fertig war.
     
    Prüfungen
     
    Die Online-Klausur war wie üblich eine gute Vorbereitung auf die Präsenzklausur, allerdings nicht, weil sie ähnlich war. In der Präsenzklausur hat man keine IDE zur Verfügung, bei der Online-Klausur schon. So war denn die Online-Klausur eine Gelegenheit, noch einmal mit Programmieraufgaben praktische Erfahrungen mit JSP zu sammeln, diesmal natürlich mit tickender Uhr im Hintergrund.
     
    Schreiben von Code spielte in der Präsenzklausur dann eine geringere Rolle. Das hängt wahrscheinlich damit zusammen, dass man so nur ganz kleine Teile des Kurses hätte abprüfen können. Es war also ein Mix aus Wissensfragen, Fehlersuche, Vorhersage von Ausgaben zu gegebenen Programmen, Konfiguration eines Servers per web.xml und einigen anderen Themen. Überrascht hatte mich, dass es viele kleinere Aufgaben waren.
     
    Der Vorzug ist natürlich: Wenn man irgendwo eine kleine Lücke im Wissen hat, ruiniert das nicht gleich die ganze Note. Ich glaube, dass die Klausur recht realistisch abbildet, wo man mit seinem Verständnis des Stoffes steht. Insofern bin ich gespannt auf mein Ergebnis.
     
    Fazit
     
    "Web-Anwendungen 2" war einer der schwierigeren Kurse im Studiengang. Wegen der vielen praktischen Programmieraufgaben hat er mir aber auch besonders viel Spaß gemacht. JSP ist eine vergleichsweise komplexe Angelegenheit. Eine gewisse Einarbeitungszeit muss man einplanen. Auch wird man gerade am Anfang Schwierigkeiten mit der doch recht komplexen und vielfältigen Syntax haben und dabei auch mit Frustration und Rückschlägen umgehen müssen. Aus meiner Sicht lohnt sich diese Mühe. Mehr als andere Kurse verbindet "Web-Anwendungen 2" den Stoff ganz vieler Module des Studienganges zu einem zusammenhängenden Wissensgebiet. Ich glaube, das bringt etwas, auch wenn man später serverseitig lieber mit PHP, Python, Ruby oder etwas ganz anderem programmiert.
     
    Für die Bearbeitung dieses Moduls würde ich etwas mehr Zeit einplanen und vielleicht zuschauen, dass man andere dicke Brocken vorher abgeräumt hat. Ich würde dieses Modul z.B. nicht zeitgleich mit "Software-Technik 1" oder mit "Nicht-sequentielle Programmierung" belegen wollen.
     
    Weil mir das Modul viel Spaß gemacht hat, würde ich gerne auch noch den weiterführenden Kurs "Aktuelle Webtechniken" belegen, der eine Einführung in Java Server Faces gibt. Dafür fehlen mir aber noch ein paar inhaltliche Voraussetzungen, so dass ich mich noch ein wenig gedulden muss.
  11. kurtchen
    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.
  12. kurtchen
    Wie ich zur theoretischen Informatik kam
     
    In meinem Modulbericht zu GdI4 "Algorithmen und Datenstrukturen" hatte ich es schon einmal erwähnt: Ich wollte gerne ein Modul "Künstliche Intelligenz" belegen, was Springer Campus leider bislang so nicht anbietet.
     
    Die WINGS Wismar hat ein sehr schönes KI Modul, in dem sowohl klassische KI und als auch künstliche neuronale Netze behandelt werden. Das gefiel mir und so schrieb ich Professor Cleve an, der für dieses Modul zuständig ist und auch das zugrunde liegende Lehrbuch geschrieben hat. Ihn fragte ich, ob ich dieses Modul als Gast- oder Zweithörer belegen könne. Und was gegebenenfalls für Vorwissen nötig sei. Herr Cleve empfahl mir, zunächst Kenntnisse in theoretischer Informatik zu erwerben und hatte auch gleich das passende Modul, das ebenfalls von ihm betreut wurde. So kam es, dass ich mich als Gasthörer bei der WINGS anmeldete.
     
    Organisatorisches
     
    Die Anmeldung unterscheidet sich bei der WINGS ein wenig von Springer Campus, weil man sich für ein bestimmtes Semester anmelden muss. In diesem Semester soll man auch die Modulprüfung ablegen. Für die Prüfung stehen mehrere Termine zur Verfügung, die allerdings an verschiedenen Standorten angeboten werden. Will man zu einem anderen Termin in die Prüfung gehen, so muss man in der Regel auch einen anderen Standort anfahren.
     
    Das Studienbüro ist gut erreichbar und bei organisatorischen Fragen sehr hilfreich. Als Gasthörer hatte ich immer wieder mal eine organisatorische Frage, weil ich mit den Abläufen noch nicht so vertraut war.
     
    Etwas verwirrend für mich: Während Springer Campus EINE Online-Plattform für den Studiengang hat, gibt es an der WINGS mehrere: StudIP, Ilias, den OnlineCampus, Wistu und wie sie alle heißen. Es dauerte eine ganze Weile, bis ich halbwegs begriffen hatte, wo ich welche Informationen finde.
     
    Das Modul "Theoretische Informatik"
     
    Grundlage für das Modul ist das in meinen Augen hervorragende Skript von Professor Jürgen Cleve. Er lehrt an der HS Wismar Grundlagen der Informatik und Künstliche Intelligenz. Sein Skript besteht aus an die 130 Seiten im A4-Format. Wenn man Anhänge, Verzeichnisse und Index abzieht, bleiben ca. 120 Seiten reiner Stoff. Die haben es allerdings ziemlich in sich, weil die Ausdrucksform mathematisch knapp ist, man also mit wenigen Symbolen viel ausdrücken kann. Diese 120 Seiten liest man also nicht mal eben so runter. Mehr als 2-4 Seiten pro Tag waren bei mir selten drin. Damit man bis zum Prüfungstermin "fit" ist, muss man dranbleiben und "den Berg Kieselstein für Kieselstein abtragen".
     
    Das Skript gliedert sich in 6 Kapitel:
    1. TI - Einführung
    2. Grundlagen
    3. Automatentheorie
    4. Logik
    5. Komplexität
    6. Berechenbarkeit
     
    Es enthält auch einen Vorschlag, wie man sich die Bearbeitung des Moduls zeitlich einteilen soll. Damit bin ich flexibel umgegangen.
     
    Außer dem Skript findet man auf der Plattform StudIP Zusatzmaterial, Videos, Übungsaufgaben für die Klausur und einen Link zum Download von JFLAP, einer Software zum Simulieren der verschiedenen Automaten aus dem Kapitel Automatentheorie. Im Unterschied zu Springer Campus, wo alles schön in EINER Plattform beisammen ist, muss man hier aus mehreren Quellen schöpfen. Die Materialien sind aber sehr gut.
     
    Mathematische Grundlagen
     
    Das Grundlagenkapitel ist ein Parforceritt durch Mengenlehre, Relationen und Funktionen. Grundlagen waren bei mir aus dem Modul Mathe1 da. Ich würde sagen, dass man davon ausgeht, dass die meisten Studierenden sich schon einmal mit diesen Themen vertraut gemacht haben. Es ist eher eine knappe Wiederholung, die noch einmal den begrifflichen Boden bereiten soll, für das was kommt. Außerdem werden so verschiedene Konventionen hinsichtlich der Darstellung etabliert, was die weitere Lektüre des Skriptes vereinfacht.
     
    Auch die sehr knappe Einführung in Begriffe der Graphentheorie enthielt größtenteils vertrautes. Auch das kannte ich aus Mathe1. Aber hier kamen die ersten für mich neuen Begriffe, z.B. der der Hülle eines Graphen. Dieser Begriff ist hilfreich, wenn man ausdrücken möchte, wie ein Automat durch eine Serie von Konfigurationsübergängen geht.
     
    Neu war für mich in erster Linie der Abschnitt über formale Sprachen. Knapp ausgedrückt, hat man eine Sammlung von Zeichen, ein Alphabet. Dieses besteht bei formalen Sprachen oft aus nur wenigen Zeichen, z.B. {0,1} oder {a,b,c} oder etwas in der Art. Wörter entstehen dadurch, dass man Ketten aus Zeichen bildet, also Strings. Eine Sprache entsteht dadurch, dass wir Eigenschaften definieren, die die so erzeugten Strings aufweisen müssen, z.B. mindestens eine Folge von drei Nullen enthalten. Eine Sprache ist also eine Teilmenge der mit dem Alphabet möglichen Strings.
     
    Interessanter wird es, wenn reguläre Ausdrücke ins Spiel kommen. Sie erlauben, bestimmte Stringmuster in kompakter Weise zu beschreiben. Das kann man in vielen Programmiersprachen gut brauchen, um z.B. Muster für Suche und Vergleich zu definieren. Zugleich sind reguläre Ausdrücke wichtig, weil sie mit einem bestimmten Automatentyp aus der Automatentheorie in Zusammenhang stehen, den sogenannten endlichen Automaten. Diese können nämlich genau solche Strings erkennen, die sich durch reguläre Ausdrücke beschreiben lassen.
     
    Über das Kapitel verstreut sind gelegentlich Übungsaufgaben. Am Ende des Kapitels kommen dann noch mal mehr Aufgaben. Im Gegensatz zu Springer Campus ist die Bearbeitung dieser Aufgaben nicht nötig, um zur Klausur zugelassen zu werden. Man kann seine Lösungen aber per Mail an einen Betreuer schicken. Besser ist es, sie ins Forum von StudIP einzustellen, wo sie auch andere Studierende sehen. Die Aufgaben werden auch dort von einem Betreuer kommentiert, jedenfalls wenn es etwas zu kommentieren gibt. Perfekte Lösungen bleiben auch mal ohne Feedback. Im Vergleich zu Springer würde ich sagen, dass es hier mehr und kleinere Aufgaben gibt. Das ist nicht schlecht, weil man so ähnliche Aufgaben wiederholt übt, was ungemein hilft, die Konzepte zu verinnerlichen.
     
    Automatentheorie
     
    Dieses Kapitel ist für mich das Kernkapitel des Moduls. Es behandelt zunächst endliche Automaten, abgekürzt DFA für engl. deterministic finite automaton. Einen endlichen Automaten kann man sich vorstellen als eine Maschine, die ein Band einliest, auf dem Zeichen notiert sind. Die Maschine liest das Band genau 1x von Anfang bis Ende. Sie kann nicht vor oder zurück gehen und auch nichts auf das Band schreiben. Sie kann aber in Abhängigkeit vom eingelesenen Zeichen ihren inneren Zustand wechseln. Ist die Maschine am Ende des Bandes in einem Zustand, der als akzeptierend ausgezeichet wurde, so sagt man, die Maschine habe die Zeichenkette akzeptiert. Die Maschine hat erkannt, dass das Wort auf dem Band zu einer Sprache gehört.
     
    Natürlich existiert dieser Automat nicht physisch sondern als Konzept. Man beschreibt ihn mathematisch. Mit der Menge von Zeichen, die er verarbeiten kann. Mit der Menge der Zustände, die er einnehmen kann. Mit dem Startzustand. Mit der Menge der Zustände, die als akzeptierend gelten. Und vor allem mit den Regeln für Übergänge von einem Zustand in den anderen in Abhängigkeit vom eingelesenen Zeichen. Deterministisch heißt der Automat, weil die Zustandsübergangsfunktion total ist. In jedem Zustand ist bei jedem eingelesenen Zeichen eindeutig, in welchen neuen Zustand der Automat wechselt. Durch die mathematische Form der Darstellung, kann man so einen Automaten in wenigen Zeilen exakt notieren.
     
    Verständlicher wird ein Automat, wenn man ihn graphisch darstellt. Er wird als Graph mit gerichteten Kanten gezeichnet. Die Kanten stehen für Zustandsübergänge, die Knoten für die Zustände.
     
    Hier ist ein Beispiel für einen deterministischen endlichen Automaten, der Wörter aus den Buchstaben "a" und "b" akzeptiert, die mindestens 1x die Zeichenkette "aab" enthalten. Das kleine Dreieck links markiert den Startzustand. Die Kreise stehen für die Zustände, die Pfeile für Zustandsübergänge, wenn im jeweiligen Zustand das Zeichen auf dem Pfeil eingelesen wird. Der Doppelkreis rechts steht für den einzigen akzeptierenden Zustand. Wie man sieht, gibt es auch reflexive Kanten. Sie bedeuten, dass der Automat im aktuellen Zustand bleibt. Der Automat ist deterministisch, weil von jedem Zustand aus für jedes mögliche Zeichen genau ein Zustandsübergang existiert.

     
    Nach dem DFA wird der NFA eingeführt. Er ist indeterministisch, weil der Folgezustand nicht mehr eindeutig definiert sein muss. Es kann mehrere Folgezustände geben. Der Automat wählt aber nicht zufällig einen davon aus. Vielmehr geht er in JEDEN möglichen Folgezustand. Man kann zeigen, dass ein NFA in einen DFA überführt werden kann. Dafür gibt es sogar ein mechanisches Verfahren. Für viele Probleme ermöglicht der NFA eine kompaktere Darstellung. Aber er kann nicht mehr als der DFA.
     
    Die Beschäftigung mit endlichen Automaten ist nützlich, z.B. weil man damit in der Softwaretechnik manche dynamische Systeme gut modellieren kann.
     
    Der DFA und der NFA sind in ihren Möglichkeiten begrenzt, weil sie sich nur durch ihren inneren Zustand etwas merken können. Soll ein Automat z.B. 100 Zeichen zählen, braucht er 100 innere Zustände. Aus diesem Grund wird der Kellerautomat eingeführt. Er hat einen Speicher, den Keller, auf den er Zeichen legen kann. Dieser Speicher ist ein Stack. Die Zeichen werden gestapelt und man kann immer nur das oberste Zeichen lesen. Der Kellerautomat kann z.B. vergleichen, ob die Anzahl A's zu Beginn eines Wortes gleich der Anzahl B's am Ende des gleichen Wortes ist. Er kann somit etwas zählen.
     
    Die von Kellerautomaten akzeptieren Sprachen lassen sich mit kontextfreien Grammatiken beschreiben. Diese sind nützlich, weil sich die Syntax der meisten Programmiersprachen ebenfalls mit kontextfreien Grammatiken beschreiben lässt.
     
    Weil es Sprachen gibt, die nicht kontextfrei sind, braucht man einen mächtigeren Automaten als den Kellerautomaten: Die Turingmaschine. Die Turingmaschine ist deterministisch. Sie liest ein endloses Band ein. Einen Kellerspeicher hat sie nicht. Dafür kann sie auf dem Band schrittweise nach rechts und nach links gehen oder stehen bleiben. Sie kann Zeichen lesen und schreiben. Das Band ist also ihr Speicher. Es enthält eine Folge von Zeichen, einen String. Die Turingmaschine verarbeitet den String, d.h. sie transformiert ihn in einen neuen String. Wenn der String z.B. aus zwei natürlichen Zahlen besteht und die Maschine am Ende die Summe dieser beiden Zahlen auf das Band schreibt, dann kann man sagen, die Maschine hat eine Summe berechnet.
     
    Die Turingmaschine ist ein einfaches Computermodell. Interessant ist, dass sie zugleich das mächtigste bislang bekannte Computermodell ist. Mächtigkeit bezieht sich hier nicht auf die Verarbeitungsgeschwindigkeit sondern auf das, was prinzipiell mit einer Maschine dieses Typs berechnet werden kann. Jeder Computer kann im Prinzip nur berechnen, was auch auf einer Turingmaschine berechnet werden könnte. Darum ist es interessant, sich mit diesem Automaten zu beschäftigen.
     
    TI ist ein FH-Modul. Der Schwerpunkt liegt also hier nicht auf dem Führen von Beweisen. Die Übungsaufgaben laufen meist darauf hinaus, Automaten zu konstruieren, die ein bestimmtes Problem lösen. Mit der Software JFLAP kann man seine Automaten testen, mit verschiedenen Strings füttern und schauen, wie sie diese Schritt für Schritt verarbeiten. Das hat mir sehr viel Spaß gemacht. Und es hat auch schon eine Menge mit Programmierung zu tun. Der erste Schritt zur Lösung ist meist, sich eine Strategie zu überlegen, wie ein Automat ein Problem lösen könnte, eine Art Algorithmus. Dann muss man sich mit den Details der Implementierung rumschlagen, wozu oft auch eine geschickte Behandlung von Sonderfällen gehört.
     
    Logik
     
    Das Kapitel zur Logik beschäftigt sich nur mit Aussagenlogik. Die mächtigere Prädikatenlogik spielt keine Rolle. Hier hatte ich Vorkenntnisse aus den Modulen "Mathe1" und "Rechnerstrukturen und Betriebssysteme". Trotzdem hat mir dieses Kapitel viel gebracht. Nachdem knapp einführt wird, wie man Aussagen formalisiert, mit Operatoren verknüpft und mit Umformungsregeln umformt, wird die konjunktive- und die disjunktive Normalenform eingeführt. Sie ist eine Art standardisierte Darstellung komplex verknüpfter Aussagen. So weit kannte ich den Stoff.
     
    Der nächste und für mich neue Schritt bestand nun darin, die konjunktiv verknüpften Ausdrücke sehr kompakt als Mengen zu schreiben. Die nennt man Klauseln. Aus Klauseln kann man mit einer einfachen Umformung - der Resolution - neue Klauseln erzeugen. Man kann so Widerspruchsbeweise führen. Die Gültigkeit einer Schlussfolgerung kann man prüfen, indem man sie in negierter Form den bisherigen Klauseln hinzufügt und dann einen Widerspruch findet.
     
    All dies könnte man auch auf anderem Wege tun, z.B. mit Wahrheitstabellen oder mit Umformungen. Das interessante an Klauseln und am Resolutionsbeweis ist, dass man...
    1. effizient mit sehr großen Mengen von Aussagen umgehen kann, was bei Wahrheitstabellen schnell unübersichtlich wird.
    2. Resolutionsbeweise gut automatisiert per Software führen kann.
     
    Gerade der letzte Punkt ist entscheidend: Man hält das mathematisch-logische Werkzeug in den Händen, um einen automatischen Beweiser zu bauen. Der Stoff dieses Kapitels ist Grundlage für logische Programmiersprachen wie Prolog. Ich vermute, genau aus diesem Grund hat mir Herr Cleve dieses Modul als Grundlage für KI empfohlen. Dieses Kapitel hat mich positiv überrascht, weil ich hier wirklich etwas nützliches und neues gelernt habe, obwohl ich der Ansicht war, über Aussagenlogik schon eine Menge zu wissen.
     
    Komplexität
     
    Im Kapitel über Komplexität geht es Aufwandsabschätzungen. Platt ausgedrückt, schätzen wir Aufwand, indem wir zählen, wieviele Zuständsübergänge ein Automat durchlaufen muss, um ein bestimmtes Problem zu lösen. Wir zählen die Übergänge in der Regel nicht genau. Vielmehr ordnen wir sie einer Klasse zu. Der Aufwand wächst z.B. linear mit der Größe des Problems oder vielleicht auch quadratisch mit der Größe des Problems. Manches davon war mir aus dem Modul Algorithmen und Datenstrukturen (GdI4) bekannt. Hier wird das Thema Komplexität aber mathematischer und formaler behandelt.
     
    Eine für mich schöne Übung war die Aufgabe, die Komplexität eines Sortieralgorithmus zu analysieren. Den durfte man sich frei aussuchen. Aus GdI4 kannte ich schon die Komplexitätsklassen vieler einfacher und komplexerer Sortierverfahren. Es wäre somit eine langweilige Aufgabe geworden. Allerdings war dort kurz ein Algorithmus namens Bucketsort erwähnt, der unter bestimmten Voraussetzungen ein Feld in linearer Laufzeit sortieren kann. Es hatte mich schon länger interessiert, wie das funktioniert, denn man kann ja mathematisch beweisen, dass ein Sortierverfahren, dass auf Vergleich basiert, im besten Fall logarithmische Komplexität hat. Wie kann man ohne Vergleiche schneller sortieren? Ja wie kann man überhaupt ohne Vergleiche sortieren? Die Übungsaufgabe war für mich also Anlass, mich mit dem mir bis dahin unbekannten Bucketsort-Algorithmus zu beschäftigen. Das hat wirklich Spaß gemacht.
     
    Berechenbarkeit
     
    In diesem letzten Kapitel werden die LOOP und die WHILE-Sprache eingeführt. Die LOOP-Sprache hat nur ganz wenige Konstrukte. Sie kann Variablen einen Wert zuweisen, sie um 1 erhöhen oder vermindern. Vor allem kann sie mit dem Befehl LOOP eine Schleife genau n-mal durchlaufen, wobei n zu Beginn festsehen muss. Die Sprache hat also nicht mal ein IF. Man kann es aber mit einem LOOP geschickt simulieren. Trotz der primitiven Möglichkeiten kann diese Sprache schon viel berechnen. Hilbert vermutete sogar, dass die LOOP-Sprache jede Funktion berechnen kann. Widerlegt wurde seine Vermutung durch die Ackermann-Funktion, die nicht mehr LOOP-berechenbar ist.
     
    Darum brauchte man die WHILE-Sprache. Sie hat zusätzlich die WHILE-Schleife, die wiederholt eine Bedingung prüfen kann. Mit der WHILE-Sprache kann man nun genau die Probleme lösen, die auch eine Turingmaschine lösen kann.
     
    Knapp gesagt geht es in dem Kapitel darum, was gemeint ist, wenn wir sagen, etwas sei berechenbar oder nicht berechenbar. Es gibt verschiedene Konzepte von Berechenbarkeit. Dieses Kapitel wird ein wenig philosophisch. Es geht hier letztlich darum, die Grenzen dessen auszuloten, was mit Computern gerechnet werden kann.
     
    Präsenztag und Klausur
     
    Module an der WINGS enden mit einem Präsenztag, an dem in der Regel auch die Abschlussklausur geschrieben wird. Anders als bei Springer Campus gibt es an der WINGS keine Möglichkeit, schon in der Bearbeitung eines Moduls ein paar Punkte für die Klausur zu sammeln. Die Note spiegelt allein die Performance in den 2 Stunden der Klausur wieder.
     
    Die Präsenzveranstaltung vor der Klausur war bei TI eher eine Art Repetitorium, bei dem viele Übungsaufgaben bearbeitet wurden. Die Lehrform war sehr interaktiv. Automatentheorie nahm etwa die Hälfte der Zeit in Anspruch. Die Ideen der Teilnehmer wurden vom Dozenten direkt in JFLAP eingegeben und mit dem Beamer projeziert. So konnte man sofort sehen, was die Automaten machen und welche Fehler man noch verbessern muss. Die Übungen ließen darauf schließen, dass in der Klausur weniger Wissen abgefragt werden würde. Es schien darum zu gehen, Wissen anzuwenden, indem man Probleme löst. Dazu braucht man ein bisschen Kreatitivät.
     
    Die intensive Wiederholung des Stoffes in der Gruppe unmittelbar vor der Prüfung ist eine tolle Vorbereitung. Das finde ich an der WINGS sehr gut gelöst. Die Klausur deckte den Stoff gut ab. Schwerpunkt war Automatentheorie, aber auch Grammatiken, Komplexität und der Resolutionsbeweis kamen dran.
     
    Das Klausurergebnis kam nach knapp 2 Wochen. Schlecht war es nicht, aber ganz zufrieden war ich am Ende auch nicht. Das lag aber keinesfalls am Modul oder an der Klausur sondern daran, dass ich der Meinung war, bei dieser Prüfung ein bisschen hinter meinen Möglichkeiten zurückgeblieben zu sein.
     
    Fazit
     
    Das Modul "Theoretische Informatik" hat mir sehr viel Spaß gemacht. Die von Herrn Cleve gewählte Form der Darstellung, bei der es weniger ums Beweisen sondern vor allem um das Lösen von Problemen mit Automaten geht, finde ich für ein FH-Modul genau richtig. Das Skript ist verständlich geschrieben und lässt meiner Meinung nach auch solchen Studierenden eine faire Chance, die sich mit dem eher trockenen Stoff der TI nicht anfreunden können.
     
    Sehr gut war auch das Feedback zu den Aufgaben durch Herrn Cleve. Oft hat er Rückfragen gestellt, Einwände formuliert, meine Aufmerksamkeit auf Spezialfälle gelenkt. Auf die Weise hat er mich angeregt, neu über meine Lösung nachzudenken. Das war viel besser als einfach nur Punkte zu verteilen. Es hat etwas für sich, dass die Übungsaufgaben NUR Übungsaufgaben sind und weder für die Note noch für die Zulassung zur Prüfung eine Rolle spielen. Das führt zu einem freieren Umgang mit der Übung. Statt auf Punkte zu zielen, geht es allein um den Stoff. Das hat mir gut gefallen.
     
    Ich studiere gerne bei Springer Campus. Aber das Konzept der WINGS ist auch nicht schlecht. Diejenigen unter euch, die Wirtschaftsinformatik studieren möchten, mit etwas weniger zeitlicher Flexibilität bei Prüfungen zurecht kommen und BWL etwas stärker gewichten wollen, sollten sich das Angebot der WINGS einmal anschauen.
  13. kurtchen
    Am Freitag war endlich die lange erwartete Urkunde im Briefkasten. Vom Kolloquium bis ihrem Eintreffen hat es immerhin fast 13 Wochen gedauert. Ich nenne diese Zahl mal als Anhaltspunkt für andere Studierende, die ihr Studium bald abschließen wollen. Es passt auch ganz gut zu dem, was mir Kommilitonen berichtet haben, die ein bisschen schneller waren als ich.
     
    Natürlich war ich ein wenig ungeduldig, die Urkunde irgendwann in den Händen zu halten. Das Studium hat mir Spaß gemacht und es war toll, ständig etwas neues zu lernen, aber natürlich hat mich auch die Aussicht auf ein greifbares Ergebnis meiner Mühen angetrieben. Wobei die eigentliche Hoffnung ja war, durch das Studium einen Einstieg in ein neues Arbeitsfeld zu finden. Das hat nun sogar schon knapp vor dem Abschluss geklappt. Insofern war die Urkunde keine Eintrittskarte sondern vor allem das Ende eines langen Weges.
     


    Ich finde, sie sieht recht chic aus, und bin ganz froh, dass meine noch von der FH Dortmund ausgestellt wurde.
     
    Mein neues Leben sieht nun so aus, dass ich Montags bis Mittwochs im Biozentrum der Uni Würzburg arbeite. Dort programmiere ich Steuersoftware für biologische Experimente. Mir gefällt zum Beispiel, dass ich in der schönen und für mich neuen Sprache Go programmieren darf.
     
    Donnerstags und Freitags arbeite ich weiterhin im Kindergarten. Meine Stundenzahl dort wurde jüngst wieder etwas erhöht, so dass ich insgesamt nun fast wieder Vollzeit arbeite. Der Gegensatz zwischen meinen beiden Arbeitswelten ist natürlich enorm. Ich erlebe inzwischen ziemlich bewusst, wie anstrengend die Arbeit in einem Kindergarten ist, nicht nur nervlich sondern auch körperlich, was mir vorher gar nicht so klar war. Trotzdem freue ich mich jeden Mittwoch aufs Neue auf die Kinder. Aktuell sieht es so aus, als würde ich noch bis zum Ende des Kindergartenjahres zweigleisig fahren. Mal sehen, wie es danach weitergeht, denn die Stelle am Biozentrum ist befristet.
     
    Doch unterm Strich bin ich bislang ganz zufrieden, wie der Übergang vom Studium in eine neue Berufspraxis sich anlässt.
     
    Allmählich nehme ich mir auch wieder Zeit für andere Interessen. Ich hatte ja wegen einer Handverletzung mein Instrument - die klassische Gitarre - aufgeben müssen. Noch während des Studiums hatte ich es mit einem Digitalpiano versucht. Das ist mit der Bachelorarbeit aber wieder eingeschlafen. Inzwischen habe ich mir eingestehen müssen, dass es nicht nur am Zeitmangel lag. Das Piano war als Ausgleich zum Informatikstudium keine so gute Idee. Wenn man ohnehin schon viel sitzt und Tasten drückt, dann ist es nicht sehr reizvoll, in der knappen Freizeit schon wieder zu sitzen und Tasten zu drücken. Inzwischen habe ich ein neues Instrument gefunden, das mir sogar noch mehr Spaß macht als damals die Gitarre. Auch lese ich endlich mal wieder Bücher, die nichts mit Informatik zu tun haben.
     
    Abgesehen von der Urkunde gab es noch zwei nette Details, die ich gerne im Blog erwähnen wollte. Das erste ist die sogenannte AbsolvEnte, die in meinem Studiengang seit langem mit der Urkunde überreicht wird. Diese Tradition hat bereits den Wechsel von der W3L zu Springer Campus überlebt. Ich habe keine Ahnung, ob auch die SRH Riedlingen eine AbsolvEnte überreichen wird, aber ich schätze mich glücklich, dass ich meine noch bekommen habe. Das Studienbüro hat sie mir schon in der Adventszeit zugeschickt, darum sieht das Photo so weihnachtlich aus.
     

     
    Außerdem bekam ich dieser Tage noch sehr nette Glückwünsche von Springer Campus übermittelt. Nicht nur irgendein Formschreiben sondern wirklich individuell bezogen auf meine neue berufliche Situation. Darüber habe ich mich wirklich sehr gefreut.
     
    Mein Fernstudium B.Sc. Web- und Medieninformatik ist nun allerdings in jeder denkbaren Hinsicht beendet. Insofern schließe ich heute diesen Blog. Ich hoffe, er hat dem einen oder anderen Mut gemacht, sich für ein Fernstudium zu entscheiden. Es ist toll, sich durch Bildung und Lernen weiterentwickeln zu können.
     
    Macht's gut und Danke für Euer Interesse!
     
     
     
  14. kurtchen
    Welche Bedeutung hat das Modul XML im Studiengang?
     
    Das Modul XML ist Pflicht für Studierende im Studiengang Web- und Medieninformatik. Es ist zugleich Baustein für die Hochschulzertifikate "Web-Entwickler" und "Software-Architekt" und wird als sinnvolle Vorbereitung für das Modul "Aktuelle Webtechniken" genannt, bei dem es um Java Server Faces geht. Die inhaltlichen Voraussetzungen für XML sind überschaubar; lediglich "Grundlagen der Informatik 1" sollte man belegt haben. Im Prinzip könnte man XML also schon im ersten Semester belegen.
     
    Für Studierende der Wirtschaftsinformatik ist dieses Modul nicht vorgesehen. Sie erwerben Grundkenntnisse in XML im Pflichtmodul "Web-Programmierung". Dort ist XML aber nur ein Thema unter vielen.
     
    Grundlage für das Modul ist das Lehrbuch "XML - DTD, XML-Schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM" von Margit Becher. Die Autorin war zugleich auch meine Tutorin, was bei Fragen zum Lehrtext immer praktisch ist. Das Lehrbuch hat an die 300 Seiten; der Umfang ist also für Springer Campus leicht unterdurchschnittlich. Die Stofffülle ist dennoch nicht zu unterschätzen.
     
    Was ist XML?
     
    Worum geht es nun? XML ist eine Auszeichnungssprache, d.h. Text oder andere Inhalte werden mit sogenannten Tags eingeschlossen. Die Tags spezifizieren z.B., um was für eine Art Inhalt es sich handelt, etwa einen Namen, ein Datum oder auch einen komplexen, zusammengesetzten Inhalt wie eine Adresse oder eine komplette Bestellung. Die Auszeichnung erleichtert es Maschinen, die Inhalte zu verarbeiten.
     
    Im Gegensatz zu HTML sind in XML die Tags nicht vordefiniert. Der Autor eines XML-Dokumentes kann selbst nach Bedarf Tags definieren und verwenden. XML ist also erweiterbar - engl. extensible - und das Kürzel XML steht für Extensible Markup Language. Zu beachten ist lediglich, dass geöffnete Tags wieder geschlossen werden und dass Tags sich nicht überlappen dürfen. Sie können lediglich ineinander geschachtelt werden. Dies nennt man Wohlgeformtheit. Tags können auch Attribute aufweisen. Man kann sich vorstellen, dass dem Element Eigenschaften hinzugefügt werden.
     
    Ein XML-Dokument kann man als Baumstruktur visualisieren. XML-Dateien sind maschinenlesbar und zugleich menschenlesbar. Aus diesem Grund eignen sie sich z.B. gut für Konfigurationsdateien. Man kann XML aber auch gut verwenden, um strukturierte Daten systemübergreifend oder über das Internet auszutauschen. 
    XML-Dateien können mit CSS-Stylesheets verknüpft werden. Die Tags stehen dann für die Struktur der Daten, innerhalb der Tags stehen die eigentlichen Daten und das Stylesheet gibt an, wie die Daten darzustellen oder zu präsentieren sind.
     
    Mit DTD oder XML-Schema definiert man die Struktur einer XML-Datei
     
    Interessant ist zunächst die Möglichkeit, die Struktur der Daten in einer XML-Datei in allgemeiner Form zu beschreiben. Man kann z.B. festlegen, dass eine Adresskartei aus Adressen besteht, die wiederum aus Name, Straße, Hausnummer, Postleitzahl und Ort in genau dieser Reihenfolge bestehen müssen. Ein XML-Dokument ist dann eine Instanz oder eine konkrete Ausprägung dieser allgemeinen Struktur. XML-Dateien können gegen eine solche Strukturdefinition gecheckt werden, d.h. ein Algorithmus prüft, ob die Datei der festgelegten Struktur entspricht. Ist dies der Fall, sagt man, die Datei sei valide. Das ist nützlich für Software, die Daten in XML-Form automatisiert verarbeiten soll. Man kann so Fehler in der Verarbeitung der Datei vermeiden.
     
    Es gibt 2 Möglichkeiten, die Struktur einer XML-Datei zu definieren. Die ältere ist die DTD (Document Type Definition). Die neuere ist XML-Schema. Letzteres ist komplexer, hat aber viele Vorteile. Besonders nützlich ist die Möglichkeit, viele verschiedene Datentypen zu unterscheiden, z.B. nummerische Werte, Datumswerte, Uhrzeiten und dergleichen. Man kann auch eigene Datentypen definieren, z.B. durch Werteinschränkung oder Kombination vordefinierter Typen. So kann die Struktur der zu verarbeitenden Daten viel präziser beschreiben als mit der DTD. Im Kurs werden beide Möglichkeiten ausführlich behandelt. Im Gegensatz zum Modul "Web-Programmierung" werden auch viele Detailfragen geklärt und seltener auftretende Anwendungsfälle vorgestellt. Einsendeaufgaben hier bestehen üblicherweise darin, in natürlicher Sprache spezifizierte Anforderungen an eine Datenstruktur als DTD oder XML-Schema präzise zu beschreiben.
     
    Wir können nun strukturierte Daten in einer Textdatei ablegen, die für Maschine wie Mensch zu lesen ist. Wir können die Struktur der Daten präzise beschreiben und eine Maschine prüfen lassen, ob Daten die für eine automatisierte Verarbeitung nötige Struktur haben.
     
    Mit XPath und XQuery extrahiert man Informationen aus einer XML-Datei
     
    XML-Dokumente können sehr lang und umfangreich werden. Nun gibt es Anwendungsfälle, bei denen man bestimmte Informationen aus einem XML-Dokument extrahieren möchte. Dazu werden im Kurs 2 Möglichkeiten behandelt: XPath und XQuery. XPath bietet die Möglichkeit, durch die Baumstruktur des Dokumentes zu navigieren und Elementeinhalte und Attribute zu testen, um bestimmte Elemente und Attribute herauszufiltern. Aus einer umfangreichen Vorlesungsliste in XML-Form kann man so z.B. alle Lehrveranstaltungen eines bestimmten Professors im Sommersemester eines bestimmten Jahres mit mehr als 2 SWS herausfiltern. XQuery bietet noch weitergehende Möglichkeiten, z.B. durch Schleifen. XQuery wird manchmal auch "SQL des 21. Jahrhunderts" genannt. Ganz so elegant und deklarativ wie SQL ist es aber - zumindest in der im Kurs behandelten Version - noch nicht. So müssen z.B. Joins noch von Hand ausprogrammiert werden. Bei Einsendeaufgaben in diesem Kursabschnitt geht es in der Regel darum, aus einer gegebenen XML-Datei bestimmte Informationen per XPath oder XQuery zu extrahieren.
     
    Mit XSLT kann man XML-Dokumente automatisch in andere Dokumente transformieren
     
    Im nächsten großen Kursabschnitt geht es um XSLT. Diese Technik ermöglicht, ein XML-Dokument in ein anderes Dokument zu transformieren, z.B. ein neues XML-Dokument aber auch in eine HTML-Datei. In XSLT können XPath-Ausdrücke verwendet werden. Man kann XSLT also z.B. benutzen, um aus einer XML-Datenbasis bestimmte Informationen zu extrahieren und daraus automatisch HTML-Seiten oder Fragmente von HTML-Seiten zu bauen. Dazu werden Schablonen definiert, die auf bestimmte Elemente des XML-Dokumentes angewendet werden. Bei Einsendeaufgaben in diesem Kursabschnitt ist üblicherweise ein XML-Dokument vorgegeben, das per XSLT in HTML-Dokument transformiert werden soll, das ausgewählte Inhalte des ursprünglichen Dokumentes in bestimmter Form präsentiert. In einem eigenen Kapitel wird noch XSL-FO vorgestellt. Das kann z.B. benutzen, um aus XML-Dateien automatisch PDFs zu erzeugen.
     
    Der Abschluss des Kurses bildet ein Kapitel über die Verarbeitung von XML in Java mit SAX und DOM. Dieses durchaus interessante Kapitel ist allerdings nicht mehr prüfungsrelevant.
     
    Ein gutes Modul, wenn man die richtigen Werkzeuge nutzt
     
    Der Lehrtext ist gut strukturiert und die Aufgaben sinnvoll darauf abgestimmt. Die Rückmeldungen durch meine Tutorin waren präzise, hilfreich und kamen meist schnell. Zu Beginn des Kurses habe ich leider viel Zeit vergeudet, indem ich versucht habe, ohne den empfohlenen XML-Editor OxygenXML auszukommen. Der ist proprietär und leider nicht billig. Studierende können ihn allerdings für 30 Tage kostenlos testen, nachdem sie sich registriert haben. 30 Tage erschienen mir etwas knapp für die Bearbeitung des Kurses. Darum hatte ich zunächst versucht, mit OpenSource-Tools auszukommen. Den Kursteil zur DTD und zu XML-Schema konnte ich so noch gut bearbeiten, auch wenn es müsam voran ging. Spätestens für XPath ist es von enormem Vorteil, einen professionellen XML-Editor zu Verfügung zu haben. Als ich mich schließlich doch wiederwillig für OxygenXML registrierte, musste ich nach wenigen Minuten einsehen, dass das besser von Anfang an hätte machen sollen. Man kann damit viel komfortabler und vor allem schneller arbeiten. Eiert also nicht rum wie ich sondern besorgt euch von Anfang an das richtige Werkzeug.
     
    Online- und Präsenz-Klausur
     
    Online-Klausur und Präsenzklausur fand ich vom Schwierigkeitsgrad vergleichbar. Der Zeitdruck in der Online-Klausur erschien mir höher. Möglicherweise wurde hier in Anschlag gebracht, dass man in der Präsenzklausur keine Entwicklungsumgebung zur Verfügung hat, während der Online-Klausur aber schon.
     
    In der Präsenzklausur war EIN XML-Dokument gegeben. Auf der Grundlage dieses Dokumentes wurden ALLE wesentlichen Themen des Kurses abgeprüft: DTD, XML-Schema, XPath, XQuery und XSLT. Das erscheint mir vernünftig. Indem sich alle Aufgaben auf EIN Dokument  beziehen, muss man sich nicht ständig neu einlesen und die Prüfer können den Stoff breiter abdecken. Mein Eindruck war, dass die Aufgabenstellungen sich auf häufig verwendete Anwendungsfälle konzentrieren, hier also nicht die exotischsten Spezialfälle abgefragt werden. Ein Klausurergebnis liegt mir aber noch nicht vor.
     
    Fazit
     
    XML hat mir Spaß gemacht. Man braucht nicht viel Phantasie, um sich vorzustellen, welchen Nutzen diese Sprache für einen Web-Informatiker haben könnte. Wünsche, was ich gerne NOCH gelernt hätte, sind bei mir diesmal nicht offen geblieben; das Modul ist aus meiner Sicht inhaltlich vollständig.
     
    Es würde mich nun reizen, auch noch das Modul "Aktuelle Webtechniken" im Wahlbereich zu belegen, bei dem es um Java Server Faces geht. XML wird dafür als inhaltliche Voraussetzung genannt. Kommilitonen, dieses Modul schon belegt haben, berichten mir, dass XML hierfür durchaus sehr nützlich ist. Da ich diese Voraussetzung nun erfülle und mir die Kurse zur serverseitigen Programmierung mit Java gut gefallen haben, bin ich schon sehr gespannt auf diese Einführung in JSF. Allerdings wird es wohl Herbst werden, bevor ich dazu komme. Das größte Chaos meines Umzuges ist zwar überstanden und ich habe nun wieder einen Arbeitsplatz und einen Internetanschluss; trotzdem hängt am Umzug ein Rattenschwanz zu Kleinigkeiten, die noch erledigt werden müssen; und die mir Tag für Tag Zeit rauben, die eigentlich gerne ins Studium stecken würde. Mal sehen, wie lange dieses Stadium noch dauert.
  15. kurtchen
    Einordnung und Voraussetzungen
     
    Das Modul "nichtsequentielle Programmierung" (NSP) ist für Studierende im Studiengang "Web- und Medieninformatik" das letzte im Fachgebiet "Grundlagen der Informatik und Programmierung". Springer Campus empfiehlt, es im 5. Semester zu belegen. Die Module "Grundlagen der Informatik 1 & 2" werden als inhaltliche Voraussetzung genannt. Konkret heißt das, dass man Grundkenntnisse in strukturierter, prozeduraler und objektorientierter Programmierung in Java braucht. Auch Kenntnisse der generischen Programmierung, wie sie GdI2 vermittelt, sind unbedingt nötig.
     
    Meiner Meinung nach reicht das aber nicht. Ich möchte ergänzen, dass das Modul "Rechnerstrukturen und Betriebssysteme" eine nötige Vorbereitung ist, weil man hier einiges an Hintergrundwissen über Speicher- und Prozessverwaltung lernt. Auch GdI3 sollte man meiner Meinung nach belegt haben, weil die Kursteile zu Nebenläufigkeit und GUIs eigentlich voraussetzen, dass man sich ein bisschen mit Swing und dem AWT auskennt. Schließlich halte ich auch GdI4 "Algorithmen und Datenstrukturen" für zumindest sinnvoll, weil es bei der nichtsequentiellen Programmierung auch um den nebenläufigen Zugriff auf verschiedene Datenstrukturen geht. Es ist sinnvoll, wenn man diese kennt und versteht.
     
    Studierende im Studiengang Wirtschaftsinformatik müssen NSP nicht absolvieren, können es aber als Vertiefung belegen. Außerdem ist NSP ein Pflichtmodul der wissenschaftlichen Weiterbildung "Anwendungsprogrammierer". Das könnte für manche Studierende interessant sein, die sich unsicher sind, ob ihre Ausdauer für ein komplettes Bachelorstudium reicht.
     
    Das Lehrbuch
     
    Grundlage für den Kurs ist das Lehrbuch "Java: Nebenläufige und verteilte Programmierung" von Peter Ziesche und Doga Arinir. Es hat an die 360 Seiten, aber wegen recht umfangreicher Anhänge kommt der reine Kurstext auf nur ca. 330 Seiten, was für einen Springer Campus Kurs eher im unteren Mittelfeld liegt. Diese 330 Seiten haben es allerdings in sich. Ich empfinde NSP als das herausfordernste der Java-Module.
     
    Der Titel ist Programm. Nebenläufige Programmierung heißt, dass es mehr als einen Kontrollfluss gibt. Verteilte Programmierung heißt, dass Teile einer Anwendung auf verschiedenen Rechnern ausgeführt werden, sozusagen Nebenläufigkeit plus Entfernung. Wichtig ist zunächst die grundlegende Unterscheidung zwischen Prozessen und Threads. Prozesses laufen in je eigenen Speicherbereichen, während sich Threads als leichtgewichtige Prozesse einen Speicherbereich teilen. Die Möglichkeit, so auf gemeinsamen Daten zu arbeiten, erleichtert einerseits die Kommunikation und Kooperation zwischen den Threads. Andererseits schafft das viele Probleme, die erst zur Laufzeit auftreten und schwer reproduzierbar sind.
     
    Warum ist nebenläufige Programmierung schwierig?
     
    Als Programmierer kann man sich vorstellen, dass nebenläufige Programmteile auf verschiedenen CPUs zur Ausführung kommen. In modernen Multicore-Systemen kann und wird das auch tatsächlich so sein. Da in modernen Betriebssystemen stets Dutzende von Prozessen laufen, werden nebenläufige Programmteile de facto häufig auf einer CPU oder einem Kern ausgeführt werden, der zwischen verschiedenen Threads umschaltet. Es ist nicht vorhersehbar, in welcher Reihenfolge die Threads zur Ausführung kommen werden. Wenn Threads eine gemeinsame Datenstruktur manipulieren, kann man also nicht vorhersagen, was in welcher Reihenfolge passieren wird. Genau hier liegt eine der großen Herausforderungen. Als Programmierer gewöhnt man sich nämlich zunächst an das schön planbare Nacheinander eines Programmablaufs. Man trainiert sich an, in Sequenzen zu denken, Abläufe in Arbeitsschritte und Zustandsabfolgen zu zerlegen. Der Programmzustand ist so zu jedem Zeitpunkt das Ergebnis dessen, was zuvor passiert ist. Bei nebenläufigen Programmen ist das im Prinzip auch so, aber es gibt Ungewissheit, was in welcher Reihenfolge passieren wird. Man ist gezwungen, viel darüber nachzudenken, welche Ausführungsreihenfolgen möglich sind und welche Folgen das haben könnte. Auch wird das Testen eines Programmes schwieriger. Ein Programm kann bei Tests hervorragend laufen und im Dauerbetrieb kommt es zu bizarren Bugs, mit denen man nie gerechnet hätte. Nebenläufige Programmierung ist leider komplex.
     
    Theoretische Konzepte
     
    Kommen wir zum Aufbau des Kurses. Die ersten 60 Seiten sind eine Einführung in die nebenläufige Programmierung. Es beginnt mit grundlegenden Konzepten:
    - Anwendungen und Prozesse
    - Threads und Scheduling
    - Speicherverwaltung mit Stapel und Halde, zunächst sequentiell
    - und Speicherverwaltung bei mehreren Threads
    - Vorteile von Nebenläufigkeit: Bessere Performance und bessere Reaktionszeiten, vor allen in Multicore-Umgebungen
    - Probleme nebenläufiger Programme
    - Synchronisation und kritische Abschnitte
    - Monitore
    - Lebendigkeit
    - Verklemmungen
     
    Insbesondere bei den Ausführungen zur Speicherverwaltung musste ich schon sehr konzentriert lesen, um nachvollziehen zu können, was genau auf Stapel und Halde z.B. bei der Initialisierung eines GUIs passiert. Auch wenn hier Codebeispiele in Java gegeben werden, geht es in diesem Kursteil nicht um die Programmiersprache Java sondern um Konzepte.
     
    Die Umsetzung in Java
     
    Diese Konzepte werden in den folgenden 60 Seiten mit Leben erfüllt, denn nun geht es um die Realisierung in Java. Man lernt:
    - Threads zu erzeugen, indem man von Thread abgeleitete Klassen programmiert.
    - Die Schnittstelle Runnable zu nutzen, um Aufträge einem Thread zur Ausführung zu übergeben.
    - Gegenseitigen Ausschluss zu realisieren, indem man Methoden oder Codeabschnitte als synchronized kennzeichnet.
    - Monitore in Java zu implementieren, in denen Threads schlafen gelegt werden, die auf Ressourcen warten müssen.
    - Erste Strategien, um Verklemmungen zu vermeiden.
     
    Das Kapitel endet mit einem Fallbeispiel "Generisches Suchsystem", an dem die neuen Konzepte in einer Anwendungssituation gezeigt werden sollen. Dieses Fallbeispiel, dass sich durch den Kurs zieht, ist einer meiner wenigen Kritikpunkte. Während das Fallbeispiel Auftragsverwaltung aus GdI3 komplett und ausführbar vorlag und ausprobiert werden konnte, ist das generische Suchsystem nicht lauffähig, weil nicht komplett ausprogrammiert. Man kann die Klassen compilieren, aber man kann es nicht in Aktion erleben. So hat man nur eine statische Sicht auf den Code: Das hat didaktisch zwar auch einen hohen Wert, aber mir hätte es geholfen, mit dem Fallbeispiel herumspielen zu können, den Code in der Ausführung zu erleben. Dieser Aspekt hat mir bei diesem Kurs gefehlt. Zum Glück gibt es viele andere Codebeispiele im Kurs, die ausführbar sind und zum Experimentieren einladen.
     
    Modellierung von Nebenläufigkeit in UML
     
    Es folgt ein kurzes Kapitel über die Modellierung von Nebenläufigkeit in der UML. In den sonst so wichtigen Klassendiagrammen ist sie nicht so gut darstellbar. Nebenläufigkeit ist etwas, dass sich zur Laufzeit entfaltet. Sie kann daher besser mit Aktivitätsdiagrammen, Sequenzdiagrammen und Zustandsautomaten dargestellt werden. Hier wird auch auf den Anhang verwiesen, bei dem noch einmal die Petri-Netze knapp wiederholt werden, die ich ja schon aus Softwaretechnik 1 kannte. Die Markenwanderung im Petri-Netz hilft nämlich, Aktivitätsdiagramme besser zu verstehen. Hier sieht man, dass die Module oft schön untereinander vernetzt sind. Dieses Kapitel ist kurz, aber für die Präsenzklausur sollte man sich das gut anschauen.
     
    Vertiefende Kapitel zur Nebenläufigkeit in Java
     
    Nun kommt ein Kapitel zum Entwurf nebenläufiger Anwendungen in Java. Dieses Kapitel ist eine Sammlung verschiedener Klassen, die beim Entwurf nebenläufiger Anwendungen hilfreich sein können. Sie stammen meist aus java.util.concurrent.

    Man lernt hier vieles über:
    - den Unterschied zwischen threadsicheren und nebenläufigen Klassen
    - verschiedene Arten von Warteschlangen und Puffern
    - Container mit copy-on-write-Semantik, deren Iteratoren bei nebenläufigen Schreibzugriffen weiter laufen können.
    - verschiedene nebenläufige Container
    - Auftragsdienste und Threadpools, die eine Anzahl von Threads zum Abarbeiten von Auftragen bereithalten.
    - Aufträge mit Ergebnis, die etwas komplizierter zu handhaben sind.
    - Flexible selbst implementierte Monitore mit eigenen Lock-Objekten und Conditions
    - Leser-Schreiber-Synchronisation
    - Atomare Operationen
     
    Als Anwendungsbeispiele dienen hier nebenläufige Matrizenmultiplikation und ein nebenläufiger Quicksort. Diese Beispiele eigenen sich gut für eigene Experimente.
     
    Ein Problem mit diesem Kursteil ist: Die einzelnen Klassen werden recht knapp vorgestellt. Die Codebeispiele sind ausreichend aber oft nur Skizzen. Es fehlt häufig die Einbettung in einen Anwendungskontext, wie sie z.B. bei der Matrizenmultiplikation gegeben ist. Oft wird auf die API-Dokumentation verwiesen, die man tatsächlich auch braucht, will man das alles verstehen. Das Kapitel ist eher eine Sammlung von Methoden und hat für mich keinen richtigen roten Faden.
     
    Dafür ist hier die Abstimmung mit den Einsendeaufgaben sehr gut. Die laufen meist darauf hinaus, etwas zu programmieren, bei dem die vorgestellten Klassen zum Einsatz kommen. Oft reicht am Ende wenig Code. Trotzdem habe ich hier regelmäßig gemerkt, was ich eben noch nicht verstanden hatte. Ich musste mich regelmäßig durch die API-Dokumentation wühlen, um Erfolg zu haben. Rückblickend meine ich, dass das mehr gebracht hat als ein Text, der von vorneherein alle Eventualitäten erklärt. Das Lehrbuch lässt genug offen, um in den Aufgaben Spielraum für eigene Erkundungen und Aha-Erlebnisse zu haben. Im Zusammenspiel mit den Aufgaben funktioniert das Buch sehr gut.
     
    Im nächsten Kapitel geht es um fortgeschrittene Konzepte von Nebenläufigkeit in Java. Hier geht es z.B. um:
    - das kontrollierte Beenden von Threads
    - Swing-GUIs und Nebenläufigkeit: Fallbeispiel ist hier die Fortschrittsanzeige eines nebenläufigen Auftrages. Eine alltägliche Situation, die komplizierter ist als man zunächst denkt.
    - Caches und Synchronisation
     
    Ans Eingemachte geht es mit den Abschnitten über Caches und Synchronisation. In modernen PCs haben die CPUs ja mehrstufige Caches, in denen sie oft benötige Daten ablegen. Arbeiten mehrere CPUs parallel, stehen im Cache eventuell Daten, die im RAM schon längst geändert wurden. Eine gemeinsam genutzte Variable kann so aus Sicht verschiedener CPUs oder Kerne zugleich verschiedene Werte haben, was dem intuitiven Verständnis von Speicherinhalt widerspricht. So etwas kann zu bizarren und schwer nachvollziehbaren Bugs führen. Java bietet Sprachkonstrukte, mit denen man einen Refresh oder Flush des Caches erzwingen kann. Diese sollte man aber nicht ständig einsetzen, weil so die Zugriffszeiten auf Speicherinhalte steigen und das Programm langsamer wird. Man kommt also nicht umhin, sich zu überlegen, was man tut. Auch in diesem Kapitel war die Verzahnung mit den Einsendeaufgaben sehr gut.
     
    Verteilte Programmierung
     
    Im letzten Kapitel geht es dann um verteilte Anwendungen mit RMI (Remote Methode Invocation). Eine Java-Anwendung kann auf mehrere Rechner verteilt sein, z.B. auf einen Client und einen Server. Ein Client kann Methoden auf dem Server aufrufen. Dazu erhält er über das Netz sogenannte Stummel-Objekte, die sozusagen nur die Schnittstelle und keine Implementierung enthalten. Arbeitet man mit RMI, so implementiert man viele Dinge etwas anders als bei einer Anwendung, die lokal läuft. Entfernte Methodenaufrufe dauern relativ lange. Darum bieten sich Methoden an, die z.B. mehrere Attribute eines Objektes auf einmal abfragen oder verändern.
     
    Es war  schwierig, zum Thema RMI gute und aktuelle Quellen neben dem Kursmaterial zu finden. Manche Codebeispiele liefen nicht mehr so wie im Buch beschrieben, weil inzwischen verschärfte Sicherheitskonzepte gelten. Ich habe hier nicht alles ausprobieren können. Verteilte Programmierung ist komplex. Dies gilt auch für die Verteilung und Installation von Anwendungen. Ich fand es gut, dass dieses Thema behandelt wurde, merkte aber an dem Punkt auch, dass es Grenzen gibt, wie viel Stoff ich für eine Modulprüfung verdauen kann.
     
    Zum Glück wies mein Tutor mich darauf hin, dass dieses letzte Kapitel nicht klausurrelevant ist. Für den Online-Test und die Online-Klausur ist es aber wichtig, also sollte man sich gut damit beschäftigen.
     
    Online-Tests und Online-Klausur
     
    Bei den Tests gab es in diesem Kurs eine Besonderheit. Es waren vergleichweise wenige und zu mehreren Kapiteln gab es gar keine. Der Abschluss-Test deckte aber auch diese Kapitel ab. Hier musste man also direkt liefern ohne zuvor an Fragen zum gleichen Stoff sein Verständnis überprüfen zu können. Es ist mein Eindruck, dass hier bewusst noch eine kleine Hürde vor den ersehnten Bonuspunkten eingezogen wurde. Tatsächlich habe ich bei diesem Kurs nur vergleichsweise wenige Bonuspunkte erringen können, sowohl im Online-Test als auch in der Online-Klausur, die ich ebenfalls als herausfordernd empfand. Der eigentliche Nutzen der Online-Klausur war denn auch das Feedback meines Tutors, das mir ermöglicht hat, die Aufgaben noch einmal zu überarbeiten und dabei noch einige Einsichten zu erlangen. Auch in der Online-Klausur kann Stoff aus dem gesamten Kurs drankommen, auch zu dem Kapitel über RMI.
     
    Präsenzklausur
     
    Für die Präsenzklausur habe ich das Lehrbuch insgesamt 3 mal durchgearbeitet und mit vielen Anmerkungen versehen. Außerdem habe ich mir zum Thema viel Sekundärliteratur aus der Unibibliothek besorgt. Einen konkreten Titel nennen möchte ich aber nicht, weil ich in den meisten Büchern immer nur kurze hilfreiche Abschnitte gefunden habe. Das Lehrbuch von Ziesche und Arinir ist schon sehr gut zusammengestellt und behandelt sehr viele Konzepte, die man anderswo weit verstreut zusammensuchen muss. So kam ich letztlich doch immer wieder darauf zurück. Ich würde für die Klausur empfehlen, die Kapitel 2 bis 5 gründlich zu wiederholen.
     
    Die Präsenzklausur war breit angelegt. Ein Mix aus Wissensfragen, Code analysieren, Code schreiben, UML-Diagramme zeichnen. Inhaltlich wurden eher die Grundkonzepte abgeprüft und nicht so sehr ausgefallene Klassen aus java.util.concurrent. Ich würde empfehlen, die theoretischen Grundlagen und die Kapitel zur UML gut zu wiederholen. Und die grundlegenden Kapitel zu Threads in Java. Damit hat man schon mal einen guten Teil abgedeckt. Strategisch würde ich bei dieser Klausur dazu raten, erst die leichteren Aufgaben mit weniger Punkten zu machen und erst dann die umfangreicheren. Ich habe es umgekehrt gemacht, aber das war hier klar die falsche Strategie, weil ich an irgendeinem Punkt abbrechen musste und später nur schwer wieder reinkam. Eine Aufgabe war etwas anspruchsvoller, weil ein Thema, dass im Kurs nur recht knapp vorgestellt wurde, nun in einer Anwendungssituation ausprogrammiert werden sollte. Mein Tipp: Wenn im Kurstext die Rede davon ist, sich gewisse Dinge noch einmal in der API anzuschauen, dann macht das. Kann auch nicht schaden, die knappen Codebeispiele abzutippen, auszuführen und selbst ein bisschen damit zu experimentieren. Das bezieht sich vor allem auf Kapitel 5.
     
    Fazit
     
    Insgesamt wieder ein schöner Kurs. Leider ist damit die Serie der Java-Module nun vorbei. Schade, denn gerade die haben mir besonders viel Spaß gemacht. Es wird noch ein Wiedersehen mit Java geben, weil auf mich noch der Kurs "Java Server Pages" aus dem Fachgebiet "Web- und Medieninformatik" wartet. Da geht es dann um serverseitige Anwendungen, die dynamisch HTML erzeugen. Das macht man meistens mit PHP aber bei Springer Campus eben mit Java.
     
    Nachtrag (08.12.2016)
     
    Heute kam das Ergebnis der Präsenzklausur. Ich hatte Glück und habe ziemlich gut abgeschnitten. Hier konnte ich wieder einmal lernen, dass ich mich nicht entmutigen lassen sollte, auch wenn der Stoff eines Moduls am Anfang schwer zu fassen ist. Nichtsequentielle Programmierung habe ich als das schwierigste der Java-Module empfunden. Ich habe hier ein paar Anläufe mehr gebraucht, um die Konzepte wirklich zu verstehen. Gerade die Online-Klausur, bei der noch vieles schief gelaufen ist, hat mir hier noch einmal wertvolle Rückmeldungen gebracht. Auch weil mein Tutor sich nicht damit begnügt hat, meine Arbeit nur mit Punkten zu bewerten sondern differenzierte inhaltliche Rückmeldungen gegeben hat, wo genau die Mängel meiner vorgelegten Lösungen waren. Das hat mir erlaubt, mich "auf den letzten Metern vor dem Ziel" noch einmal zu steigern.
     
    Ich denke, dass das ganze auch ein bisschen mit seelischer Reife zu tun hat. Wenn ich an mein Erststudium zurückdenke, so meine ich, dass ich mich damals von Schwierigkeiten viel schneller habe verunsichern lassen. Ich bin jetzt ein paar Jahre älter und habe in meinem Leben auch den einen oder anderen Misserfolg wegstecken müssen, privat wie beruflich. Da erlebt man, dass man nach einen Sturz auch wieder aufstehen kann. Dass Fehler vor allem den aktuellen Lernstand wiederspiegeln, aber eben längst nicht das eigene Potential für die Zukunft. Natürlich hatte ich das auch mit 19 Jahren schon einmal gehört. Aber jetzt ist das eigene Erfahrung und nicht der gute Rat anderer. Es macht viel mehr Spaß als früher, mit dieser veränderten Perspektive zu studieren.
  16. kurtchen
    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. kurtchen
    Es ist soweit: Am Mittwoch habe ich meine Bachelorarbeit zur Post gebracht. Das war zwei Tage vor dem Abgabetermin. DHL hat die Sache dann noch ein bisschen spannend gemacht. Am nächsten Abend war mein Paket nämlich gerade einmal 10 km weit "gekrochen". Aber am übernächsten Tag kam es doch noch fristgerecht in Dortmund an.
     
    Natürlich sind mir schon am Tag nach der Abgabe Fehler aufgefallen, die ich auch beim x-ten Korrekturlesen nicht gesehen hatte. Ebenfalls typisch für mich: Sofort nach der Abgabe ist eine Erkältung ausgebrochen. Die hätte ich mir vorher nicht "gegönnt".
     
    Eigentlich hatte ich zur Entstehung der Bachelorarbeit ja mehrere Blogbeiträge schreiben wollen. Aber letztlich musste ich die knapp werdende Zeit in die Bachelorarbeit investieren. Mein Fernstudien-Blog war leider nicht das einzige Hobby, das in den letzten Monaten auf der Strecke blieb.
     
    Trotzdem nun ein paar Worte, die wie Sache nun eigentlich gelaufen ist.
     
    Inhaltliches
     
    Die Grundidee meiner Arbeit war ja ein Vergleich objektorientierter und funktionaler Programmierung an einem Fallbeispiel. Das Fallbeispiel war eine Variante des klassischen Travelling Salesman Problems: In eine Platine sollen von einem Roboter Löcher gebohrt werden. Ein Optimierer solle ein möglichst effiziente Abfolge der Löcher finden. Was genau effizient ist, bestimmt eine Bewertungsfunktion. Hier gab es als einfachste Funktion die euklidische Distanz. Eine Variante nahm an, dass ein Motor des Roboters defekt ist, und daher vertikale Bewegungen nur halb so schnell möglich sind wie horizontale. Eine andere Variante sah vor, dass der Bohrer für einen Bohrerwechsel zurück zum Ursprung kehren muss, falls der Durchmesser aufeinander folgender Löcher sich unterscheidet. Das hatte natürlich große Auswirkungen auf die gefundenen Routen. Die Routen wurden ja auch visualisiert und das war visuell z.T. ganz attraktiv, wie die Anmutung der Routen sich änderte, wenn eine andere Bewertungsfunktion gewählt wurde.
     
    Die Routen wurden mit drei verschiedenen Heuristiken optimiert:
    mit der einfachen und schnellen Nearest-Neighbour-Heuristik mit dem Sintflut-Algorithmus und mit einer Evolutionsstrategie  
    Die beiden letzten Heuristiken ahmen einen Evolutionsprozess nach. Der Sinflut-Algorithmus erzeugt dabei Routenvarianten allein durch Mutation. Außerdem arbeitet er mit einer minimalen Population von nur zwei Individuen: Der bisherigen Lösung und einer neuen Lösung, die akzeptiert oder verworfen wird. Die Evolutionsstrategie simuliert eine größere Population. Sie erzeugt Routenvarianten nicht nur durch Mutation sondern auch durch Rekombination. Sie ahmt also "sexuelle Fortpflanzung" nach. Interessant war dann z.B. die Frage, was geeignete Mutations- und Rekombinationsoperatoren für ein Travelling Salesman Problem sind.
     
    Die beiden Heuristiken unterscheiden sich auch beim Selektionsmechanismus. Sintflut arbeitet mit der Metapher eines steigenden Wasserspiegels. Eine Routenvariante wird akzeptiert, solange ihre "Fitness" nur besser als der momentane Wasserspiegel ist. Auch dann, wenn sie gegenüber der letzten Routenvariante schlechter ist. Das ist entscheidend, damit der Algorithmus ein lokales Optimum überwinden kann. Mit steigendem Wasserspiegel wird die Selektion immer härter, so dass gegen Ende der Optimierung nur noch Verbesserungen akzeptiert werden. Sintflut geht also nach und nach in einen sogenannten Bergsteiger-Algorithmus über. Meine Fallstudie arbeitete mit einer variablen Regenrate. Wenn die Optimierung stagnierte, regnete es gar nicht. Wenn sie voran schritt, regnete es umso stärker, je größer die Differenz zwischen momentaner Fitness und Wasserspiegel war.
     
    Bei der Evolutionsstrategie wurde die Selektion durch den Wettbewerb innerhalb eine Population bestimmt. Meine Implementierung arbeitete mit einer (µ+λ)-Selektion. Dabei steht µ für die Elterngeneration und λ für die durch Rekombination von Genen und Mutation entstandenen Kinder. Die Kinder geraten also in Wettbewerb mit der Generation ihrer Eltern. Theoretisch könnte man dieser Form der Selektion ein Individuum beliebig viele Generationen überlegen, wenn seine Fitness nur hoch genug ist. Es gibt viele mögliche Selektionsoperatoren. Individuen mit hoher Fitness haben eine höhere Chance, die Selektion zu überleben, aber wie bei der natürlichen Selektion spielt i.d.R. auch der Zufall eine Rolle.
     
    Am besten funktionierte der noch vergleichsweise einfache Sintflut-Algorithmus. Die Evolutionsstrategie war nicht nur langsamer sondern brachte auch etwas schlechtere Ergebnisse. Ich vermute, dass lag am früh einsetzenden Selektionsdruck durch Wettbewerb innerhalb der Population. Der führte dazu, dass die Optimierung früher als bei Sintflut in einem lokalen Optimum hängenblieb. Es wäre spannend gewesen, mehr mit den Selektionskriterien zu spielen, um zu schauen, ob man Sinflut so nicht doch einholen kann. Auch weiß ich inzwischen, dass es bessere Rekombinationsoperatoren gegeben hätte. Leider fehlte mir die Zeit, diese noch zu implementieren und auszuprobieren. Aber es war schon faszinierend anzusehen, wie das Duo aus Mutation und Selektion eine Route optimiert. Die Software hatte ein einfaches GUI, das periodisch Momentaufnahmen der laufenden Optimierung zeigte. Der Moment, in dem es erstmals klappte, und man zuschauen konnte, wie die Routenlängen fielen, war schon sehr befriedigend.
     
    Allerdings war heuristische Optimierung ja nur das Fallbeispiel für einen Vergleich der Programmierparadigmen. Darum habe ich die gleichen Heuristiken in Java, Scala und Clojure implementiert.
     
    Meine persönliche Motivation für dieses Thema war, dass ich eine empfundene fachliche Lücke meines Studiums schließen wollte. Ich wollte funktionale Programmierung und funktionale Programmiersprachen besser kennenlernen, als das im Curriculum meines Studiums vorgesehen war. Dieser Wunsch ging für mich in Erfüllung. Bei der Implementierung der Optimierer in Scala und Clojure konnte ich viele Aspekte funktionaler Programmierung erleben und anwenden: Funktionen höherer Ordnung, (End-)Rekursion, Verwendung persistenter Datenstrukturen, Closures, partielle Funktionen, Lazy Evaluation und Lazy Sequences und einiges mehr. Wie erwartet, war es so in vielen Fällen möglich, kompakteren und dennoch gut lesbaren Code zu schreiben. Vor allem war der funktionale Code oft deklarativer als der imperative. Er war also eher eine Beschreibung der Problemlösung als eine kleinschrittige Handlungsanweisung für den Computer. Im Vergleich zur objektorientierten Programmierung war es schon faszinierend, sich als Programmierer so gegenüber der Maschine ausdrücken zu können.
     
    Leider hatte insbesondere die Verwendung persistenter Datenstrukturen ihren Preis. Die in Scala implementierten Optimierer liefen deutlich langsamer als ihre Gegenstücke in Java. Die Performance ließ sich verbessern, indem man (zumindest vorrübergehend) doch veränderliche Datenstrukturen verwendete. Leider fiel der Code dann nicht mehr so elegant und deklarativ aus. Er ähnelte wieder stärker den imperativen Lösungen. Auf einem höheren Abstraktionsniveau mit dem Computer zu kommunizieren hat also einen Preis.
     
    Obwohl Scala Java syntaktisch viel ähnlicher ist als Clojure, dauerte es länger, eine Heuristik von Java nach Scala zu portieren. Die Portierung von Scala nach Clojure war dagegen meist sehr schnell erledigt, obwohl die lispoide Syntax für mich anfangs sehr fremdartig war. An dieser Stelle war spürbar, was es heißt, sich innerhalb eines Programmierparadigmas oder eben zwischen verschiedenen Programmierparadigmen zu bewegen. Bleibt man innerhalb eines Paradigmas, hat man das Gefühl, alle Sprachen sind gleich. Wechselt man zwischen den Paradigmen, merkt man, dass jede Sprache ihr Paket an impliziten Denkweisen und Lösungsstrategien mit sich trägt.
     
    Clojure war als dynamisch typisierte Sprache natürlich noch einmal deutlich langsamer als Scala. Bei Clojure bedauere ich, dass die Zeit nicht reichte, um Metaprogrammierung mit Makros auszuprobieren.
     
    Scala gefällt mir als Programmiersprache gut. Ich finde es z.B. toll, dass man es einerseits als funktionale aber andererseits auch als objektorientierte Sprache verwenden kann. Auch wenn man objektorientiert programmiert, erlaubt es an vielen Stellen kompakteren und zugleich besser lesbareren Code als Java. Ich glaube, es gibt in meiner Region sogar ein Softwareunternehmen, das diese Sprache produktiv einsetzt. Inzwischen wäre ich auch neugierig, mit Kotlin eine weitere multi-paradigmatische Sprache auf der JVM kennenzulernen.
     
    Betreuung
     
    Meinen Erstbetreuer kannte ich schon von der Projektarbeit. Er bekam fortlaufend Textbausteine geschickt. Wie in Aussicht gestellt, kamen anfangs mehr Rückmeldungen und mit fortschreitender Arbeit wurde es knapper. Das fand ich genau richtig. Ich habe mich gut begleitet gefühlt, hatte aber auch den Eindruck, selbst für meine Bachelorarbeit zuständig zu sein. Toll war für mich, dass mir das Studienbüro einen Betreuer vermitteln konnte, der für mein Wunschthema offen war.
     
    Ich bin ein bisschen gespannt, was mein Zweitbetreuer zu meiner Arbeit sagen wird. Er bekam sie erst am Schluss, als sie fertig war, so dass ich ihn noch nicht richtig kennenlernen konnte. Aber beim Kolloquium muss ich mich ja den Fragen beider Betreuer stellen.
     
    Mal schauen, wie lange es nun dauert, bis eine Rückmeldung kommt. Ich werde im Blog berichten.
     
    Tools und Werkzeuge
     
    Lohnend war in jedem Fall, dass ich mir schon letztes Jahr die Mühe gemacht hatte, eine brauchbare LaTeX-Vorlage zu erstellen. Für eine Arbeit mit vielen Abbildungen, Fußnoten, Querverweisen, Verzeichnissen und Quellenangaben ist es sehr angenehm, sich Dank LaTeX aufs Schreiben konzentrieren zu können und sich nicht mit dem Layout herumschlagen zu müssen.
     
    Meine Quellen habe ich als einfache Textdatei mit einem Texteditor erfasst. Ich war anfangs der Ansicht, für eine Bachelorarbeit würden es ja wohl nicht so viele Quellen werden, so dass eine Literaturverwaltung mir übertrieben vorkam. Am Ende wurden es doch mehr Quellen als ich gedacht hätte. Stünde ich noch einmal am Anfang, würde ich eine Literaturverwaltung verwenden.
     
    Als IDE habe ich IntelliJ verwendet. Die hat eine gute Unterstützung für Scala. Man kann sie auch für Clojure verwenden. Allerdings hat es sich als etwas schwierig erwiesen, Scala und Clojure im gleichen Projekt zu verwenden. (Dazu nur ein Beispiel: Scala-Projekte nutzen als Build Tool bevorzugt das SBT. Clojure-Projekte verwenden meist Leinigen. Prinzipiell müsste es möglich sein, mit dem SBT auch Clojure oder mit Leiningen auch Scala zu compilieren, aber ein entsprechendes Setup habe ich nicht hinbekommen.)
     
    Für die Erstellung von UML-Diagrammen habe ich UMLet verwendet. Es ist ein bisschen "spartanisch", aber dafür ist es auch schlank und erschlägt einen nicht mit der Vielfalt seiner Features.
     
    Zeitmanagement
     
    Im Großen und Ganzen hat meine Zeiteinteilung funktioniert. Inzwischen bin ich alt genug, um begriffen zu haben, dass ein noch so guter Plan nie hinhaut und man daher stets Puffer für Unerwartetes einplanen muss.
     
    Die hätten allerdings noch ein bisschen üppiger ausfallen dürfen. Insgesamt habe ich mir doch mehr vorgenommen, als im Rahmen einer Bachelorarbeit realistisch war. So musste ich gegen Ende auf ein paar Themen und Aspekte verzichten, die ich gerne noch erkundet hätte. Zum Beispiel bietet Scala nebenläufige Programmierung auf einem höheren Abstraktionsniveau mit Aktoren. Die hätte ich gerne für die Evolutionsstrategie verwendet, aber dafür reichte die Zeit nicht mehr.
     
    Es wäre auch gut gewesen, am Ende mehr Zeit für Korrekturen zu haben. Eigentlich hatte ich dafür eine ganze Woche eingeplant, aber dann musste es doch schneller gehen. Zwar hatte ich zwischendurch immer wieder Kapitel gelesen und überarbeitet, aber ich war doch jedes Mal wieder erstaunt, dass man auch nach dem x-ten Durchgang wieder etwas findet.
    Das Drucken und Binden war diesmal stressfrei, weil ich schon eine ganze Weile vorher im Copyshop vorstellig geworden war und vorgefühlt hatte, wie ausgelastet die Mitarbeiter waren. So konnte ich eine klare Vereinbarung treffen und das lief dann auch genau so.
     
    Ausblick
     
    Nun heißt es, loslassen und abwarten, was meine Betreuer sagen. Somit habe ich, eigentlich zum ersten Mal seit Beginn meines Studium, so etwas wie "Leerlauf". Das kann ich inzwischen aber auch gut gebrachen. In den letzten Monaten ist einiges auf der Strecke geblieben; Hobbies zum Beispiel. Gestern habe ich zum ersten Mal wieder ein bisschen Klavier geübt. Das möchte ich nun wieder regelmäßiger machen.
     
    Ich hoffe ein bisschen, dass es noch vor Jahresende zum Kolloquium kommt. Wäre schön, wenn ich das Studium mit dem alten Jahr abschließen könnte.
     
    Auch aus einem praktischen Grund wäre das gut. Der Kindergarten, in dem ich während meines gesamten Studiums gearbeitet habe, kann mich ab Januar nicht mehr beschäftigen. Es sind Zuschüsse weggefallen, die für die Finanzierung meiner Stelle wesentlich waren. Darum stehen zwingend berufliche Veränderungen an.
     
    Meine Idee bei Aufnahme des Studiums war ja, einen Branchenwechsel hinzulegen: Von der Frühpädagogik zur IT. Das Problem dürfte dabei mein Alter werden. Man liest zwar beinahe täglich in der Zeitung, dass Informatiker gesucht werden. Aber bald werde ich erleben, ob das auch gilt, wenn sie Berufseinsteiger im mittleren Alter sind.
     
    Sorgen muss ich mir eigentlich nicht machen, denn in meiner Region kann man als Kindergärtner kaum arbeitslos werden. In den letzten Wochen habe ich neue Kinder eingewöhnt und wieder einmal gemerkt, wie identitätsstiftend diese Arbeit in der ersten Hälfte meines Berufslebens für mich war. Eigentlich bin ich immer noch stolz, dass ich mich als junger Erwachsener für diesen Beruf entschieden habe; zu einer Zeit, als es noch absolut unüblich war, dass Männer in Kindergärten arbeiteten. Insofern mache ich mich nicht verrückt. Falls die Arbeitgeber mir nicht zutrauen, in meinem Alter noch ein guter Informatiker zu werden, bleibe ich eben Kindergärtner. Das kann ich immer noch ganz gut.
     
    Wenn die Bachelorarbeit bestanden ist, bleibt als letzter Baustein des Studiums tatsächlich nur noch das Kolloquium. Darüber mache ich mir im Moment aber noch keine Gedanken. Aktuell versuche ich, nach den intensiven letzten Monaten ein bisschen Abstand zu meiner Bachelorarbeit zu gewinnen.
     
    Für diesen Blog heißt das, dass es wohl nicht mehr allzu viele Beiträge werden. Ich möchte noch über das Kolloquium berichten. Und danach noch einmal rückblickend, den Studiengang als Ganzes betrachten. Aber möglicherweise besuche ich vorher noch einmal einen Präsenztag in Dortmund, so dass es vielleicht auch noch drei Beiträge werden könnten.
     
    Bildergalerie
     

     
    Das erste Bild zeigt den implementierten Optimierer vor einem Lauf. Geladen ist das sogenannte 442-Problem, eine Platine mit 442 Bohrlöchern, die im Zusammenhang mit dem TSP gerne als Testfall benutzt wird. Die Koordinaten der Löcher wurden mir freundlicherweise von Dr. Johannes Josef Schneider von der ZHAW Winterthur zur Verfügung gestellt. Das Bild zeigt eine zufällig generierte - also noch nicht optimierte - Route. Das schöne am 442-Problem ist, dass dafür eine optimale Lösung bestimmt werden konnte. Gelbe Kanten zeigen an, dass aufeinander folgende Löcher den gleichen Durchmesser haben. Hellrote Kanten zeigen dagegen, dass die Lochdurchmesser sich unterscheiden, was einen Bohrerwechsel nötig macht. (Das originale 442-Problem kennt keine Lochdurchmesser. Das ist eine Variation, die ich eingebaut habe, weil ich mit verschiedenen Bewertungsfunktionen experimentieren wollte.)
     

     
    Das zweite Bild zeigt die Anordnung der Löcher des 442-Problems. Eine optimale Lösung konnte im Jahr 1987 gefunden werden, weil viele Löcher in horizontalen oder vertikalen Linien angeordnet sind. Dies ließ sich mathematisch verwerten, um viele mögliche Routen auszuschließen. Wie genau das funktioniert, verstehe ich freilich nicht; ich bin leider nur Informatiker, kein Mathematiker. Relevant für mich war, dass eine optimale Rundreise nachweislich eine Länge von ca. 5078 mm hat. Das liefert einen Anhaltspunkt dafür, wie gut die Optimierung - z.B. mit dem Sintflut-Algorithmus -  funktioniert.
     

     
    Das dritte Bild zeigt eine mit dem Sintflut-Algorithmus optimierte Tour. Hier wurde die Route in ca. 8 Sekunden auf 5321 mm verkürzt. Sie ist somit lediglich 4,7% länger als die optimale Route. Lässt man es langsamer regnen, so braucht die Optimierung etwas länger, aber der Algorithmus findet kürzere Routen, die nur noch ca. 2,5% länger sind als die optimale Route.
  18. kurtchen
    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.
  19. kurtchen
    Welche Rolle spielt das Modul im Studium?
     
    Das Modul "Web-Engineering" ist eines der möglichen Vertiefungsmodule im Studiengang "Web- und Medieninformatik". Es ist außerdem ein Pflichtmodul für die Weiterbildungszertifikate "Web-Frontend-Programmierer" und "Web-Entwickler". Laut Studienplan sollte es ab dem 5. Semester belegt werden. Das Modul "Web-Programmierung" gilt als inhaltliche Voraussetzung, weil man Grundkenntnisse in HTML, Javascript und am besten auch in XML benötigt. Überraschen könnte, dass auch Grundlagen der Informatik 1 und 2 als Voraussetzung genannt werden. Das liegt daran, dass die Programmierung mit serverseitigen Frameworks wie dem GWT oder dem ZK Framework eine große Rolle spielt, und dafür braucht man solide Java-Kenntnisse. Doch davon später mehr. Empfohlen wird auch, das Modul "Skripsprachen" vorher zu belegen. Dieses Modul bietet eine umfangreichere Einführung in Javascript als "Web-Programmierung". Leider wird es nicht mehr angeboten und laut Studienbüro ist auch kein Ersatz in Sicht. Ich finde das recht ärgerlich, denn beim Durcharbeiten von "Web-Engineering" habe ich oft gemerkt, dass vertiefte JavaScript-Kenntnisse nützlich gewesen wären.
     
    Die Streichung von "Skriptsprachen" wurde mir gegenüber damit begründet, dass viele Studierende sich beklagt hatten, das Modul sei veraltet gewesen. Mir liegt die letzte Auflage des verwendeten Lehrbuches vor. Mein Eindruck ist, dass ich dieses Modul immer noch sehr gerne belegt hätte, und dass es eine sehr gute Vorbereitung für "Web-Engineering" gewesen wäre. Schade, aber nicht zu ändern.
     
    Das Lehrbuch
     
    Der Kurs basiert auf dem Lehrbuch "Web 2.0-Anwendungen mit AJAX" von Jürgen Priemer. Herr Priemer ist auch einer der Autoren des Lehrbuches von "Grundlagen der Informatik 3", wo es unter anderem um GUI-Programmierung in Java am Beispiel von Swing geht. Ich meine, seinen Stil wiedererkannt zu haben. Mit GdI3 kam ich gut zurecht und auch dieses Lehrbuch hat mir wieder gut gefallen. Mit ca. 350 Seiten ist der Umfang leicht unterdurchschnittlich. Das heißt aber nicht, dass man dieses Modul überdurchschnittlich schnell durcharbeiten kann. Die Themenvielfalt ist groß und jeder Themenwechsel geht zu Lasten des Arbeitstempos.
     
    Worum geht es?
     
    Worum geht es nun inhaltlich? Springer hat ja ein verpflichtendes Modul "Web-Anwendungen 2", bei dem es um die Programmierung von Web-Anwendungen mit Java-Server-Pages (JSP) geht. Hier ist das GUI eine HTML-Seite, die von einem Servlet erzeugt wurde. Der Nutzer macht Eingaben in ein Formular und sendet es ab. Das Servlet empfängt einen HTTP-Request, dem Nutzereingaben als Parameter angehängt sind. Das Servlet verarbeitet diese Anfrage, interagiert zu diesem Zweck mit Fachkonzept-Klassen und eventuell auch einer Datenbank und baut eine neue HTML-Datei als Antwort auf die Nutzeranfrage. Diese empfängt der Browser des Nutzers und rendert daraus eine Darstellung, die der Nutzer dann sieht. So weit der klassische Ablauf. Eine grundlegende Beschränkung ist, dass die Serverantwort als neue Seite empfangen wird. Es wird also nach jeder Nutzeranfrage eine komplett neue Seite geladen und gerendert.
     
    Wenn man möchte, dass Web-Anwendungen reaktiver und interaktiver sind, hilft die Technik des XML-HTTP-Requests. Dazu braucht man Code, der clientseitig ausgeführt wird. Der kleinste gemeinsame Nenner auf der Clientseite ist Javascript, das in allen modernen Browsern zur Verfügung steht. Wir haben also clientseitig ein Event-Handling in Javascript, das bestimmte Nutzeraktionen registriert, z.B. dass der Nutzer gerade das Postleitzahlen-Eingabefeld verlassen hat. Der clientseitige Code schickt nun dem Server einen sogenannten XML-HTTP-Request, der z.B. die gerade eingegebene Postleitzahl enthält. Der Server verarbeitet diesen Request, z.B. in dem er bei einem Web-Service den zur Postleitzahl passenden Ort nachschlägt. Nun kommt der entscheidende Punkt: Der Server antwortet nicht mit einer neuen Seite sondern schickt eine Response im XML- oder JSON-Format. Diese Response wird von clientseitigem JavaScript-Code in einer Callback-Funktion ausgewertet. Diese Callback-Funktion verändert oder löscht Elemente der dargestellten Seite oder fügt ihr neue Elemente hinzu. Dies geschieht durch Manipulation des Document Object Models (DOM), dass der Browser auf Grundlage der zuvor empfangenen HTML-Datei erzeugt hat. Zum Beispiel kann die Callback-Funktion nun den Ortsnamen in das Eingabefeld Ort einfügen oder eine Fehlermeldung anzeigen, dass die eingegebene Postleitzahl nicht existiert und den Absenden-Knopf des Formulars deaktivieren, bis der Nutzer diesen Fehler behoben hat.
     
    Der oben beschriebene, grundlegende Prozess steht im Mittelpunkt des Moduls. Durch ihn können Web-Anwendungen reaktiver werden. Seiteninhalte können sich dynamisch ändern, ohne das eine Seite komplett neu geladen werden muss. Web-Anwendungen können mit GUIs ausgestattet werden, die denen von Desktop-Anwendungen ähneln. Sie können komplexere Funktionalität und ein insgesamt flüssigeres Nutzungserlebnis bieten.
     
    Der Preis dafür: Wir müssen nicht nur serverseitigen Code in einer serverseitigen Sprache programmieren (wie z.B. PHP oder Java), sondern auch clientseitigen Code in JavaScript. Wir müssen ein bisschen Hirnschmalz darauf verwenden, die Interaktion zwischen client- und serverseitigem Code hinzubekommen. Und das ganze wird eventuell noch dadurch verkompliziert, dass wir Inhalte von unterschiedlichen Servern oder Web-Services einbinden.
     
    Es gibt nun im wesentlichen drei Möglichkeiten, Web-Anwendungen dieser Art zu implementieren:
    1. Wir programmieren den clientseitigen Code von Hand in JavaScript aus. Dann müssen wir uns damit auseinander setzen, dass es Unterschiede zwischen den Browsern gibt. Wir müssen also bedingte Verzweigungen in unseren Code einbauen und Fallbacks schreiben.
    2. Wir verwenden ein clientseitiges JavaScript-Framework, dass uns die Arbeit vereinfacht. Bibliotheken verbergen die Unterschiede zwischen den Browsern hinter einheitlichen Funktionsaufrufen und vereinfachen den Umgang mit dem XML-HTTP-Request und der Response. Als Bonus bekommen wir in der Regel Funktionen zur einfachen DOM-Manipulation und fertige GUI-Elemente, zum Bau interaktiver Oberflächen. Im Kurs werden 2 derartige Frameworks vorgestellt: Prototype und das sehr verbreitete JQuery.
    3. Wir verwenden ein serverseitiges Framework, das uns erlaubt, den gesamten Code, auch für das was auf dem Client passieren soll, in EINER serverseitigen Sprache zu schreiben. Im Kurs behandelt wird zunächst das Google Web Toolkit (GWT). Hier übersetzt ein Compiler clientseitigen Code von Java nach JavaScript. Auch das ZK Framework wird vorgestellt. Dort programmiert man ebenfalls alles in Java. Der Java-Code wird aber nicht zu JavaScript übersetzt. Stattdessen gibt es zu GUI-Klassen in Java korrespondierende fertige Pendants in JavaScript, die automatisch clientseitig eingebunden werden und mit den serverseitigen Klassen per Remote Procedure Call kommunizieren. Der Vorteil für den Entwickler: Er kann eine (verteilte) Web-Anwendung rein in Java schreiben. Das fühlt sich dann fast an, als würde man eine Desktop-Anwendungen programmieren.
     
    Diese Inhalte bilden den Kern des Moduls. Die verschiedenen Ansätze werden immer wieder am Beispiel eines Heimwerker-Portals demonstriert, dass schrittweise um verschiedene Funktionalitäten erweitert wird. Im Kurs gibt es viele praktische Programmieraufgaben, was natürlich Spaß macht.
     
    Herausforderungen speziell bei diesem Modul
     
    Schwierig ist der häufige Wechsel der Frameworks. Man ist ständig mit neuer Syntax konfrontiert und wird nie richtig sicher im Umgang mit einem Framework. Eine weitere Schwierigkeit ist, dass sich Frameworks schnell weiterentwickeln. Ich hatte zum Teil Mühe, Codebeispiele aus dem Kurs zum Laufen zu bekommen. Oft war hier zusätzliche Zeit für Recherche nötig, um herauszufinden, wie bestimmte Dinge inzwischen gehandhabt werden. Und das, obwohl der Kurs noch gar nicht so alt ist. Das scheint der Preis dafür zu sein, wenn man aktuelle Themen in Module aufnimmt.
     
    Der Umgang mit dieser Schwierigkeit wurde mir erleichtert durch die guten Hilfestellungen und Tipps meines Tutors, der immer wieder Ideen beisteuerte, woran es liegen könnte, dass etwas nicht (mehr) läuft.
     
    Als - durchaus klausurrelevanten - Bonus gibt es noch Kapitel über neue Funktionen in HTML5, wie z.B. das Canvas-Element oder Local Storage. Außerdem gibt es Kapitel über Mashups, also Möglichkeiten, Inhalte aus Web-Diensten in eigene Seiten einzubinden, z.B. Kartendienste, RSS-Feeds, Photo-Dienste, Suchmaschinen und dergleichen. Den Abschluss bildet ein Kapitel über die Google-App-Engine.
     
    Mir hat das Modul viel Spaß gemacht, weil es sehr praktisch war und es viele Einsendeaufgaben gab, bei denen es um Problemlösen ging. Es war schwerpunktmäßig ein Programmiermodul.
     
    Die Präsenzklausur
     
    Was mir im Hinblick auf die Klausur Sorge gemacht hatte: In der Präsenzklausur darf man keinerlei Hilfsmittel verwenden. Ich stellte mir die Frage, wie ich mir die syntaktischen Feinheiten mehrer Frameworks einprägen sollte. Und wie ich vermeiden sollte, diese in der Klausur durcheinander zu bringen.
    Diese Sorge war aber unbegründet: Im Gegensatz zum Kurs selbst spielt in der Klausur das Schreiben von Code eine untergeordnete Rolle. Hier geht es vor allem darum, die grundlegenden Abläufe im Zusammenspiel von client- und serverseitigem Code zu verstehen. Auch geht es darum, die Architektur und die konzeptionellen Unterschiede zwischen den verschiedenen Frameworks zu begreifen.
     
    Die Klausur deckt Inhalte aus allen Teilen des Moduls ab. Das ist möglich, weil es auch kleinere Aufgaben mit Wissensfragen gibt, so dass man mit wenig Zeit abchecken kann, ob der Studierende wirklich alle Kapitel durchgearbeitet hat. Das wechselt sich dann wieder ab mit problemlösenden Aufgaben, bei denen man eine eigene intellektuelle Leistung erbringen muss. Eine gut gestellte Klausur, muss ich sagen.
     
    Das heißt leider nicht, dass ich da unbedingt gut abgeschnitten habe. Ein Ergebnis liegt mir noch nicht vor, aber ich weiß inzwischen, dass ich einige "Böcke geschossen" und auch ein paar Sachen verwechselt habe. Die nächsten Wochen werden zeigen, wie stark sich das auf meine Note auswirken wird. Falls sie nicht so gut ausfällt, muss ich mir das aber selbst zuschreiben. Fair gestellt war die Klausur in jedem Fall.
     
    Für wen ist es geeignet?
     
    Web-Engineering ist ein Modul, dass niemand belegen muss. Darum stellt sich am Ende die Frage, wem ich es empfehlen möchte:
    - Leute, die praktische Module mit Programmieraufgaben mögen.
    - Leute, die Spaß daran haben, in rascher Folge neue Frameworks auszuprobieren.
    - Leute, die damit zurechtkommen, auch mal selbst zu recherchieren, weil sich Inhalte schon wieder weiterentwickelt haben.
    - Leute, die es nicht darauf anlegen, den Wahlpflichtbereich mit möglichst wenig Arbeitsaufwand hinter sich zu bringen.
    - Leute, die auch eine schlechtere Note riskieren möchten, wenn dafür die Modul-Inhalte spannend sind.
  20. kurtchen
    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.
  21. kurtchen
    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.
     
  22. kurtchen
    Mit diesem Blog möchte ich Leser informieren, die sich für ein Fernstudium der Informatik interessieren. Ich studiere seit September 2015 für einen Bachelor in Web- und Medieninformatik an der W3L in Dortmund. Bislang gefällt mir das Studium ziemlich gut. Leider ist der Studiengang wenig bekannt, weswegen ich in meiner Region nur wenige Studierende kenne, die in etwa so weit sind wie ich. Das erschwert natürlich den Erfahrungsaustausch im Studium. Anlass für den Blog ist darum auch mein Wunsch, das Studium an der W3L ein wenig bekannter zu machen, in der Hoffnung, dass künftige Studierende es ein wenig leichter haben mögen als ich.
     
    Ich bin berufstätig, habe eine Familie und muss nun auch noch Zeit zum Lernen finden. Darum habe ich mir vorgenommen, nicht zu viel Zeit in den Blog zu stecken. Tägliche Berichte, wie es mir gerade geht oder wie sich meine Studienmotivation entwickelt, möchte ich hier nicht einstellen.
     
    Geplant sind Berichte über Module des Studienganges, die ich abgeschlossen habe. Die Modulberichte werden also alle in der Rückschau sein.
     
    Kurz zu den Rahmenbedingungen des Studiums:
    - Der Studienvertrag wird geschlossen mit der W3L. Zugleich schreibt man sich an der FH-Dortmund ein. Man bucht Module über die W3L und nutzt deren Lernplattform. Der Bachelor wird am Ende von der FH-Dortmund verliehen. Das ist vielleicht interessant für Leute, die wert auf einen Abschluss einer staatlichen FH legen.
    - Ich zahle eine monatliche Rate von 332 Euro über 36 Monate. Dazu musste ich mich vertraglich binden. Man kann auch flexibel studieren. Dann zahlt man nur die Module, die man gerade bucht, ohne irgendeine weitere Verpflichtung einzugehen. Diese Flexibilität erkauft man aber mit höheren Kosten. Ich habe die ersten Monate flexibel studiert und bin dann in den Vertrag gewechselt, als ich gemerkt habe, dass ich gut zurechtkomme. Soweit ich informiert bin, ist im Vertrag eine Probezeit vorgesehen, so dass man auch von Anfang an von den günstigen Bedingungen eines Studienvertrages profitieren könnte.
    - An der W3L gibt es auch die Möglichkeit, durch Abschluss bestimmter Modulkombinationen ein Zertifikat über wissenschaftliche Weiterbildung zu erhalten. Das wird ebenfalls verliehen von der FH Dortmund. Für mich war das ein wichtiger Grund, mich für das Studium bei diesem Anbieter zu entscheiden. Ich war mir anfangs nicht sicher, ob ich die Ausdauer für ein ganzes Studium haben würde. Inzwischen bin ich recht zuversichtlich, dass meine Puste für die ganze Strecke reichen kann. Trotzdem finde ich den Gedanken beruhigend, dass ich nicht mit leeren Händen aussteigen muss, sollten sich meine Lebensumstände ändern.
    - Die Module schließen mit einer schriftlichen Prüfung ab. Prüfungstermine gibt es etwa alle 6-7 Wochen. Leider gibt es bislang nur 3 Prüfungsstandorte: Dortmund, München, Wien. In München fällt eine Gebühr von 50 Euro pro Prüfungstermin an, egal wie viele Klausuren man an dem Termin schreibt. Das ist für mich ärgerlich, weil München für mich am besten zu erreichen ist und ich die meisten Klausuren dort schreibe. Die schriftlichen Prüfungen dauern in der Regel 2 Stunden.
    - In manchen  Modulen gibt es zusätzlich eine mündliche Prüfung, z.B. wenn man "Präsentation" oder "Rhetorik" belegt.
    - Zwei Mal pro Jahr gibt es einen Präsenztag mit Vorträgen und Workshops zu verschiedenen Themen mit Informatik-Bezug. Die Teilnahme ist nicht verpflichtend. Ich mache das aber gerne, denn es ist eine gute Möglichkeit, einmal andere Kommilitonen zu treffen und sich über Belange des Studiums auszutauschen. Das hilft bei der Auswahl der nächsten Module, der Zeiteinteilung im Studium, auch bei der Klausurvorbereitung. Ich nehme an, auch für die Wahl der Wahlpflichtmodule wird dieser Austausch wertvoll sein. Beim Präsenztag gibt es auch Workshops zur Zeiteinteilung im Studium oder Mathe-Tutorien. Insbesondere letzteres ist für viele Kommilitonen nützlich. Da man an der W3L auch Wirtschaftsinformatik studieren kann, gibt es am Präsenztag auch Vorträge zu solchen Themen.
    - In jedem Kurs hat man einen Tutor, der einen betreut, Aufgaben korrigiert und Fragen zum Stoff beantwortet. Hier habe ich überwiegend sehr positive Erfahrungen gemacht. Bei manchen Tutoren ist die Reaktionszeit etwas länger. Das ist unpraktisch, wenn man auf einen Prüfungstermin hinarbeitet und mit einem Problem alleine nicht weiterkommt. Zum Glück hatte ich dieses Problem bislang nur selten.
    - Zu jedem Kurs gehören Tests und Aufgaben. Tests löst man am Computer. Es sind meist Multiple-Choice-Tests, manchmal Zordnungstests oder Lückentexte. Test werden automatisch ausgewertet. Man kann sie beliebig oft wiederholen. Der Sinn der Tests ist, den Lernstoff zu festigen, sich aktiv damit auseinander zu setzen und beim Durcharbeiten ein Feedback zu haben, ob man alles gut verstanden hat. Die Anzahl der Tests kann unterschiedlich sein. Oft sind es so um die 80 Tests.
    - Aufgaben werden an den Tutor geschickt und von diesem bewertet. Im Gegensatz zu den Tests erfordern Aufgaben eine aktivere Auseinandersetzung mit dem Stoff. Hier muss man z.B. etwas programmieren, UML-Diagramme zeichnen, Skizzen für Web-Oberflächen zeichnen, den Einsatz verschiedener Techniken argumentativ gegeneinander abwägen. In den Aufgaben muss man 50% der möglichen Punkte holen, um zur Abschlussklausur zugelassen zu werden.
    -  In jedem Modul gibt es einen Abschlusstest, den man bei Nichtbestehen zwei mal wiederholen darf. Die Aufgabentypen sind ähnlich wie in den Tests. Der Abschlusstest muss bestanden werden, um zur Klausur zugelassen zu werden. Für besonders gutes Abschneiden bekommt man Bonuspunkte, mit denen man die Klausurnote ein wenig verbessern kann.
    - Außerdem kann man freiwillig eine Online-Klausur schreiben. Hier sind unter Zeitdruck mehrere Aufgaben zu bearbeiten, die vom Tutor korrigiert werden. Die Online-Klausur ist eine Art Probelauf für die Präsenzklausur, weil man einen Eindruck von der Art der Aufgaben und auch vom Zeitdruck in der Klausur bekommt. Auch hier kann man für gutes Abschneiden Bonuspunkte bekommen, mit denen man das Klausurergebnis noch einmal ein bisschen verbessern kann. Der Vorzug ist, dass man etwas gelassener in die Präsenzprüfung gehen kann, weil man sich zumindest ein paar kleinere Ungenauigkeiten erlauben kann. Eine fehlgeschlagene Online-Klausur darf man nicht wiederholen.
    - Zu jedem Modul erhält man ein Lehrbuch. Man kann, muss aber nicht am Bildschirm lernen. In vielen Modulen finde ich es praktischer, mit dem Buch zu arbeiten, z.B. in Mathematik. In anderen Modulen arbeite ich eher in der Lernplattform, z.B. bei den Programmiermodulen, weil ich da schnell zwischen IDE und Lernplattform wechseln kann. Es gefällt mir, hier die freie Wahl zu haben. Videos spielen auf der Lernplattform eine recht geringe Rolle. Man lernt vorwiegend durch Text und Bild.
    - Mit der Betreuung durch das Studienbüro bei organisatorischen Fragen und Problemen habe ich bislang sehr positive Erfahrungen gemacht. Man merkt, dass die W3L ein recht kleiner Anbieter ist. Das gefällt mir aber gut, denn ich habe ich der Regel die gleichen Ansprechpartner am Telefon und lande nicht in einem Callcenter.
    - Die vorherrschende Programmiersprache ist bislang Java. Serverseitige Webprogrammierung läuft mit JSP. Das ärgert manche Kommilitonen, die beruflich meist PHP einsetzen. Mein Eindruck ist, dass die W3L im Bereich Softwaretechnik stark ist. An den Mathemodulen gefällt mir, die gute tutorielle Betreuung. Das ist für viele Kommilitonen eine Hürde und ich habe den Eindruck, dass man hier gute Lehrkräfte gefunden hat, die helfen können, diese Herausforderung zu meistern. Bislang nicht so ganz so gut finde ich die Module zu Webtechnologien. Das ist für mich ein wenig enttäuschend, weil der Studiengang ja "Web- und Medieninformatik" heißt. Hier hat sich in den letzten Jahren mit dem Siegeszug des mobilen Internets viel getan, was sich noch nicht in den Modulen wiederspiegelt.
    - Man kann die Module in beliebiger Reihenfolge belegen, auch wenn für viele Module empfohlen wird, bestimmte Module zuvor abgeschlossen zu haben. Im flexiblen Studienmodell kann man buchen was man will und wann man will. Im Vertragsmodell kann man jeden Monat ein Modul freischalten lassen. Wie lange man für ein Modul braucht, entscheidet man selbst. Man kann sich zu jedem Modul an jedem beliebigen Prüfungstermin zur Klausur anmelden, solange man sich rechtzeitig - also ca. 10 Tage vorher - meldet.
    - Die Lernplattform bietet technisch Möglichkeiten, sich mit Kommilitonen auszutauschen. Foren, Chats und solche Sachen. Da ist aber nie jemand unterwegs, so dass einem das rein gar nichts nützt. Wer auf so etwas wert legt, nimmt bei den Klausurterminen oder Präsenztagen Kontakt zu Kommilitonen auf und organisiert einen direkten Austausch, per Mail, WhatsApp, Facebook oder was es sonst so gibt.
     
    Ich hoffe auf interessierte Leser.
     
    Kurtchen
     
  23. kurtchen
    Wie üblich war vor dem Präsenztag - also am Freitag, den 28.09.2018 - auch ein Prüfungstag mit der Möglichkeit, bis zu drei schriftliche Prüfungen zu schreiben. Ich selbst konnte leider erst am Freitagabend anreisen. Darum musste ich meine Prüfung Samstags um 08:30 Uhr schreiben. Der Raum war gut gefüllt; es scheint also noch andere Studierende zu geben, die am Freitag nicht ohne weiteres für eine Prüfung freinehmen können. Bei mir stand das Modul "Business Intelligence" auf dem Plan. Darüber habe ich anderer Stelle berichtet.
     
    Ein Prüfungstermin ist natürlich immer eine gute Gelegenheit, mit anderen Studierenden ins Gespräch zu kommen, z.B. über zurückliegende oder bevorstehende Module. Dies hat mir oft geholfen, Module sinnvoll miteinander zu kombinieren. Da nun nicht mehr so viele Module vor mir liegen, erfahre ich hier natürlich nicht mehr so viel relevantes.
     
    Im September 2015 war ich zum ersten Mal in Dortmund, um "Grundlagen der Informatik 1" zu schreiben, also die Klausur zum einführenden Java-Kurs. Ich weiß noch gut, wie aufregend das damals alles war. Um mich herum lauter "alte Hasen", die in ihrem Studium schon weit fortgeschritten und sich lebhaft austauschten. Jetzt bin ich einer von denen, die vor dem Endspurt stehen. Wie schnell die Zeit vergangen ist.
     
    Nach der Prüfung gab es wie üblich ein Frühstücksbuffet. Dann begann der offizielle Teil.
     
    11-12:30 Uhr - Aktuelles für Studierende
     
    Diesen Teil übernahmen Frau Arens aus dem Studienbüro und Prof. Dr. Sven Jörges, der sich uns bei dieser Gelegenheit vorstellte. Herr Jörges hat seit dem 01.03.2018 eine Professur für Web-Engineering und Softwaretechnik am Fachbereich Informatik. Insbesondere ist er unser neue Studiengangsleiter.
     
    Infos aus dem Studienbüro
     
    1. Reakkreditierung
     
    Herr Jörges informierte über den laufen Reakkreditierungsprozess für die beiden Studiengänge WMI und WI. Die zuständige Akkreditierungsagentur ist die AQAS. Die von ihr erstellen Gutachten lassen sich online abrufen unter:
    www.aquas.de -> Programmakkreditierung -> Ergebnisse Akkreditierungsverfahren BA/MA
     
    Hier findet man also auch die Ergebnisse der letzten Akkreditierung unserer Studiengänge. Und eines Tages hoffentlich das Ergebnis der Reakkreditierung.
     
    Der Antrag ist inzwischen abgegeben. Nächster Schritt wäre eine Begehung durch eine Gutachtergruppe. Diese besteht aus Professoren anderer Hochschulen, Vertretern aus der Industrie, aber auch aus Absolventen und Studierenden. In diesem Zusammenhang sucht die FH Dortmund Studierende, die bereit wären, an der Begehung teilzunehmen. Ein genauer Termin steht noch nicht fest, wird uns aber bekannt gegeben. Interessierte Studierende dürfen sich beim Studienbüro melden. Laut Herrn Jörges kann es gut sein, dass die Gutachter den Studierenden ziemlich konkrete Fragen stellen: "Können Sie im Beruf brauchen, was sie hier lernen?" - "Wie gut können Sie das Online-Studium mit ihrer Berufstätigkeit verbinden?"
     
    Die Evaluierung im März diesen Jahres war ein wichtiger Baustein zur Reakkreditierung. Die Ergebnisse lagen aus und konnten eingesehen werden.
     
    Prüfungstermine und Prüfungsmodalitäten
     
    Hierüber informierte Frau Arens. Die Prüfungstermine für 2018 stehen in der Lernplattform im virtuellen WMI-Café. Die Termine für 2019 folgen noch.
     
    Auf mehrfache Nachfrage sollen ab März 2019 parallel zum Präsenztag in Dortmund auch Prüfungen in München angeboten werden. Bislang war es so, dass man an den Präsenztagen nur Prüfungen in Dortmund ablegen konnte. Studierende aus dem Raum München, die nicht nach Dortmund anreisen konnten, verpassten so zwei Mal im Jahr eine Prüfungsmöglichkeit. Dieses Problem soll nun der Vergangenheit angehören.
     
    Eigentlich sollte es längst bekannt sein, aber Frau Arens wies wegen gelegentlicher Nachfragen noch einmal ausdrücklich darauf hin: Die in der Einladung zu den Prüfungen genannte Deadline für die spätestmögliche Anmeldung gilt!
     
    Mündliche Prüfungen können nach wie vor ausschließlich in Dortmund abgenommen werden. Sie finden grundsätzlich am Freitag statt. Es gibt drei Slots am Vormittag. Bei der Vergabe gilt: "Wer zuerst kommt, mahlt zuerst." Zu beachten ist auch: Die Anmeldefrist für mündliche Prüfungen ist knapper als für schriftliche. Dafür muss nämlich ein Prüfer der Uni Dortmund eingeplant werden, während bei schriftlichen Prüfungen eine Klausuraufsicht genügt. Frau Arens empfiehlt daher, sich zügig an Studienbüro zu wenden, wenn eine mündliche Prüfung ansteht.
     
    Klausuren sollen innerhalb von 6 Wochen korrigiert werden. Oft geht es schneller. (Im Schnitt dauerte es bei mir so um die 3 Wochen.) Das Studienbüro leitet Ergebnisse umgehend an die Studierenden weiter. Wenn man nach 6 Wochen noch nichts gehört hat, darf man sich an Studienbüro melden.
     
    Bescheinigungen
     
    Einen Notenspiegel oder eine Leistungsübersicht kann man kurzfristig im Studienbüro anfordern. Unmittelbar vor Präsenz- oder Prüfungstagen kann es ein bisschen länger dauern.
     
    Studienbescheinigungen stellt nicht das Studienbüro aus sondern die FH. Man beantragt sie über die ODS (Online Dienste für Studierende).
     
    Absolventen
     
    An diesem Präsenztag waren fünf Absolventen zu feiern. Leider konnten nur zwei von ihnen nach Dortmund anreisen und uns über ihre Erfahrungen berichten.
     
    Unsere erste Absolventin ist in der Wasserwirtschaft tätig und hatte ihre Bachelorarbeit in diesem beruflichen Umfeld verfasst. Leider durfte sie nicht über Inhalte ihrer Arbeit sprechen. Gleichwohl sprach sie über den Prozess der Anfertigung einer Bachelorarbeit und die damit verbundenen Herausforderungen und Strategien zur Bewältigung. Hier sind einige ihrer Tipps:
    Frühzeitig nach einem Thema Ausschau halten. Ein Jahr Vorlauf schadet nicht. Intrinsische Motivation ist wichtig. Den roten Faden nicht aus dem Auge verlieren. In der Recherchephase Quellen sofort erfassen. Sonst weiß man nachher nicht mehr, woher man was weiß. Dann hat man doppelte Arbeit, die Quelle wieder zu finden. Ein geringer zeitlicher Abstand zwischen Projekt- und Bachelorarbeit ist günstig. Man ist im Flow. Insbesondere ist man im wissenschaftlichen Arbeiten. Außerdem gab sie allgemeine Tipps zum Fernstudium:
    Sich Ziele setzen. Sich feste Lernzeiten vornehmen, z.B. an 5 Tagen pro Woche lernen. Sich zu jedem Prüfungstermin für mindestens eine Prüfung anmelden. So hat man stets das Gefühl, dass es voran geht. Sich Belohnungssystem ausdenken, z.B. nach jeder Prüfung einen Tag frei nehmen, um etwas Schönes zu machen. Direkt nach der Modulbuchung einen Zeitplan für das Modul machen. Der Kontakt zu anderen Studierenden ist wichtig. Unsere zweite Absolventin hatte eine Web-Anwendung zur Eignungsprüfung von Winterfahrzeugen erstellt. Auch sie berichtete nicht über ihre Bachelorarbeit. Stattdessen reflektierte sie den Verlauf ihres gesamten Studiums. Da sie eine Studierende "der ersten Stunde" war, hatte sie noch den Gründer unseres Studienganges - Professor Helmut Balzert - erlebt. Sie berichtete vom Start des Studienganges mit ca. 20 Studierenden in damals noch sehr familiärer Atmosphäre. Neue Module entstanden. Während anfangs nur Prüfungen in Dortmund möglich waren, kamen später weitere Prüfungszentren hinzu. Damals waren Präsenztage noch Pflicht! Der Studiengang wuchs und irgendwann kannte nicht mehr jeder jeden. Die familiäre Atmosphäre blieb allerdings erhalten, nicht zuletzt durch die Arbeit des Studienbüros.
     
    Zuletzt berichtete sie, was aus dem Studium neben fachlichem Input für ihre Persönlichkeitsentwicklung mitgenommen hatte:
    Keine Angst vor Neuem. Schritt für Schritt Schwieriges schaffen. Herausforderungen leben. Auch mal über den Tellerrand schauen. Infos zu Projekt- und Bachelorarbeit
     
    Es ist üblich, dass an Präsenztagen auch das Thema Projekt- und Bachelorarbeit aus verschiedenen Blickwinkeln beleuchtet wird. Herr Jörges beschäftigte sich diesmal insbesondere mit den Unterschieden zwischen Projekt- und Bachelorarbeit. Beiden gemeinsam ist, dass innerhalb einer zeitlichen Frist ein bestimmtes Thema selbstständig bearbeitet wird. Die Projektarbeit soll dabei eine konstruktive und problembezogene Arbeit sein. Sie ist also eher ingenieursmäßig, auch wenn bei der Problemlösung wissenschaftliche Erkenntnis und wissenschaftliche Methoden der Recherche eine große Rolle spielen. Im Vergleich dazu ist die Bachelorarbeit in erster Linie eine wissenschaftliche Arbeit, auch wenn sie eine konstruktive Arbeit sein kann, bei der ein praktisches Problem gelöst wird. Mehr noch als bei der Projektarbeit spielen die Methoden wissenschaftlichen Arbeitens und der wissenschaftlichen Recherche die tragende Rolle.
     
    An der FH Dortmund hat man überwiegend positive Erfahrungen mit Bachelorarbeit, die auf einer Projektarbeit aufbauen. Dabei muss aber klar sein: Die Bachelorarbeit ist eine eigenständige Arbeit, kann also die Projektarbeit nicht beinhalten. Gelegentlich gibt es Studierende, die erwarten, mit ihrer Projektarbeit schon einen Baustein für ihre Bachelorarbeit in der Hand zu halten. Das geht natürlich nicht. Die Bachelorarbeit trägt ja ihren eigenen Workload und wird eigenständig bewertet. Möglich ist freilich, in der Bachelorarbeit die eigene Projektarbeit zu referenzieren, um die dort geleistete Arbeit inhaltlich weiter zu entwickeln.
     
    Zur Themenfindung berichtete Herr Jörges, dass diese lange dauern könne. Auch Recherche und Einlesen ins Thema gehören dazu. Letztlich geht es in dieser Phase darum, den Kern der Fragestellung zu identifizieren. Themen für die Projektarbeit kann man oft im eigenen Betrieb finden, selbst wenn man gar nicht im IT-Bereich arbeitet. Auch Herr Jörges betonte die Bedeutung eines eigenen Interesses am Thema. Dies hilft als innere Antriebsquelle durch schwierige Phasen der Arbeit. Ein Vorteil einer Arbeit im Betrieb ist, dass man häufig noch einen kompetenten Ansprechpartner für Ort findet, der den Prozess begleiten kann.
     
    Für die Bachelorarbeit ist die wissenschaftliche Fragestellung noch viel wichtiger. Hierzu gehört auch eine Recherche zum Stand der Forschung. Manchmal wird man dabei leider feststellen, dass die eigene Forschungsfrage schon beantwortet wurde. Man könnte aber die eigene Frage weiter zuspitzen und zum Beispiel einen neuen Gesichtspunkt untersuchen, der bislang noch nicht beachtet wurde.
     
    Beim Finden eines Betreuers kann das Studienbüro finden. Oft geht es nach der Vermittlung eines Betreuers noch nicht los. Es gibt meist eine Startphase, die sich hinziehen kann, weil klar wird, dass das Thema doch noch nicht eingrenzt und geschärft ist. In dieser Phase entstehen oft eine Art Abstract, eine vorläufige Gliederung der Arbeit, eine Auflistung von Zielen, eine Erklärung der eigenen Motivation und Vorgehensweise. Erst wenn das geklärt ist, wird "die tickende Uhr" in Bewegung gesetzt. Manche Betreuer wünschen sich auch Exposé von ca. 4 Seiten. Die Startphase ist wichtig, damit sich nicht mitten in der Bachelorarbeit herausstellt, dass Problemstellung und Struktur der Arbeit unklar oder gar untauglich sind.
     
    Für die Erstellungsphase liefert das Modul "Wissenschaftliches Arbeiten" die nötigen Grundlagen. Die sind sehr wichtig, denn für die meisten Studierenden ist die Erstellung einer wissenschaftlichen Arbeit eine ein- bis zweimalige Erfahrung in ihren Leben. Sehr wichtig ist in diesem Zusammenhang das korrekte Referenzieren von Quellen.
     
    Essentiell ist außerdem, Kontakt zum Betreuer zu halten. Es klingt trivial, aber es kommt immer wieder vor, dass Studierende ihre Arbeit anmelden und abgeben, ohne Kontakt zu ihren Betreuer gesucht zu haben. Das geht fast nie gut. Üblich sind Draft-Versionen, zu denen der Betreuer Feedback gibt. Von Studierenden wird erwartet, dass sie den Kontakt zu ihrem Betreuer aktiv suchen und aufrecht erhalten. Viele Professoren sind sehr beschäftigt, darum ist es empfehlenswert, als Studierender selbst aktiv zu werden.
     
    Hochschulzertifikate
     
    Wie an Präsenztagen üblich, wurden die erreichten Hochschulzertifikate ausgeteilt.
     
    Question & Answers
     
    Hier wurde zunächst eine Frage an die Absolventen gerichtet.
     
    Womit soll man seine Bachelorarbeit schreiben? Mit LaTeX? Oder mit Word?
    LaTeX ist ein tolles Werkzeug und kann einem viel Arbeit ersparen. Allerdings ist die Einarbeitung aufwendig. Wer LaTeX kann, soll es nutzen. Wer es zu Beginn der Bachelorarbeit noch nicht kann, soll Word benutzen. Sich zeitgleich zur Bachelorarbeit in LaTeX einarbeiten ist nicht realistisch.
     
    Die weiteren Fragen betrafen Module und Studienorganisation.
     
    Das Modul "Multimedia" ist inhaltlich veraltet? Wann kommt eine neue Version?
    Ein neuer Kursautor wird derzeit gesucht. Die Aktualität der Module ist Thema bei der Akkreditierung und bei manchen Modulen ist klar, dass die aktualisiert werden müssen. Leider ist es nicht immer einfach, Autoren zu finden. Auch unterschätzen Autoren selbst oft den Zeitaufwand für das Schreiben eines Buches.
     
    Das Modul "Web-Anwendungen 1" ist in Bearbeitung. Kann man es buchen?
    Man kann es buchen, erhält aber dann die bisherige Version des Moduls.
     
    Was machen Studierende der Wirtschaftsinformatik, wenn sie für ein Hochschulzertifikat ein Modul buchen wollen, dass im Curriculum ihres Studienganges nicht vorgesehen ist?
    Solche Module kann man über das Studienbüro als Zusatzmodule buchen. Solche Module können auf der Bachelor-Urkunde aufgeführt werden.
     
    Kritik: Aufgrund der Modulkombinationen ist es für Studierende der "Web- und Medieninformatik" relativ leicht, schon während ihres Studiums Hochschulzertifikate zu erlangen. Für die Wirtschaftsinformatiker ist das schwieriger.
     
    Hiermit endete der Teil "Aktuelles für Studierende".
     
    Parallel fand in einem angrenzenden Hörsaal ein Tutorium zu den Inhalten des Moduls "Mathe2" statt. Hier ging es im Lineare Algebra und Analysis. Erfahrungsgemäß macht dieses Mathemodul Studierenden am meisten Sorgen, weshalb Tutorien dazu an fast jedem Präsenztag stattfinden. Da ich es schon hinter mir habe, habe ich es nicht besucht und kann auch nichts näheres dazu sagen.
     
    Im weiteren Verlauf des Tages gab es zwei Vorträge über Web-Entwicklung und Digitale Transformation. Darüber werde ich in folgenden Beiträgen berichten.
  24. kurtchen
    Bislang habe ich folgende Module abgeschlossen:
     
    3. Semester - Wintersemester 2016/2017
    - Mathematik 3
    - Softwaretechnik 1
    - Nicht-sequentielle Programmierung
    - Statistik
    - IT-Sicherheit
    - Mobile Computing
     
    2. Semester - Sommersemester 2016
    - Grundlagen der Informatik 3
    - Grundlagen der Informatik 4
    - Web-Anwendungen 1
    - Web-Ergonomie und Web-Design
    - Computernetze
    - Mathematik 2
     
    1. Semester - Wintersemester 2015/2016
    - Grundlagen der Informatik 1
    - Grundlagen der Informatik 2
    - Rechnerstrukturen und Betriebssysteme
    - Datenbanken und SQL
    - Mathematik 1
    - Web-Programmierung
     
    Aktuell in Bearbeitung
    - Web-Anwendungen 2
    - Softwaretechnik 2
  25. kurtchen
    Das Modul "Wissenschaftliches Arbeiten" gehört zum Studienbereich "Basiskompetenz Beruf", in dem man verschiedene "Soft Skill" Module belegen kann. Die anderen Module dieses Bereichs sind "Soziale Kompetenz", "Selbst- und Zeitmanagement", "Rhetorik", "Präsentieren" und "Kreativitätstechniken". "Wissenschaftliches Arbeiten" nimmt unter diesen Modulen eine besondere Stellung ein. Es kann als einziges auch als Wahlpflichtmodul belegt werden. Wer also zu Beginn seines Studiums lieber "Rhetorik" belegen möchte, kann "Wissenschaftliches Arbeiten" noch kurz vor der Projekt- und Bachelorarbeit nachholen. Wichtiger ist allerdings, dass dieses Modul auf die Anfertigung der Bachelorarbeit vorbereitet.
     
    Früher war die Belegung freiwillig aber dringend empfohlen. Soweit ich informiert bin, ist das Modul inzwischen Pflicht für neu eingeschriebene Studenten, weil es in Einzelfällen Probleme bei der Anfertigung der Bachelorarbeiten gab. Das ist fatal, weil bei einer nicht bestandenen Bachelorarbeit ja schon die komplette Studienzeit investiert wurde. Auch eine schlechte Note ist hier besonders ärgerlich. Zum einen, weil die Bachelorarbeit stärker in die Endnote eingeht als andere Module, zum anderen, weil die Bachelorarbeit als eigenständige Leistung in einem (oft) selbstgewählten Themengebiet auch in der Außenwahrnehmung durch Arbeitgeber eine höhere Bedeutung hat als andere Module.
    Anscheinend hat sich an der FH Dortmund gezeigt, dass Studierende, die eine Einführung ins wissenschaftliche Arbeiten belegt haben, die formalen Anforderungen einer Bachelorarbeit besser bewältigen. Und das ist ja auch nicht überraschend. Die Methoden wissenschaftlichen Arbeitens kann und muss man lernen.
     
    Lehrbuch und Themen
     
    Professor Balzert ist einer der Autoren des Lehrbuches "Wissenschaftliches Arbeiten". Ich meine, den Stil und den sauberen Aufbau seiner Lehrbücher zur Softwaretechnik auch in diesem Buch wiederzuerkennen. Weitere Autoren sind Marion Schröder und Christian Schäfer. Frau Schröder kennen manche Studierende auch als Autorin des Lehrbuches "Heureka, ich hab's gefunden! Kreativitätstechniken, Problemlösung & Ideenfindung".
     
    Der reine Textteil hat über 400 Seiten. Ich kenne andere Einführungen ins wissenschaftliche Arbeiten und finde diese klar formuliert und gründlich. Wie schon in anderen Büchern von Herrn Balzert, klärt er zu Beginn wichtige Begriffe. Insbesondere behandelt er Qualitätskriterien wissenschaftlichen Arbeitens: Ehrlichkeit, Objektivität, Überprüfbarkeit, Reliabilität, Validität, Verständlichkeit, Relevanz, Logische Argumentation, Orginalität, Nachvollziehbarkeit, Fairness und Verantwortung. Diese Begriffe werden analysiert und durch konkrete Beispiele lebendig und verständlich gemacht. Diese Kapitel haben mir besonders gefallen. Eine so trennscharfe Analyse der Begriffe kenne ich eher aus geisteswissenschaftlichen Texten. Allein deswegen hat mir dieses Modul viel Freude gemacht.
     
    Im weitern Verlauf geht es dann um Techniken und Konventionen wissenschaftlichen Arbeitens. Zunächst geht es um den inhaltlichen Aufbau verschiedener Arten von wissenschaftlichen Arbeiten. Eine empirische Arbeit hat zwar im Prinzip einen ähnlichen Aufbau wie eine konstruktive Arbeit, aber Umfang und Gewichtung der verschiedenen Abschnitte unterscheiden sich deutlich. Darum ist es wichtig, sich darüber klar zu werden, was für eine Art wissenschaftlicher Arbeit man schreiben möchte. Unterschieden werden hier:
    Literaturarbeit empirische Arbeit konstruktive Arbeit theoretische Arbeit  
    Insbesondere die konstruktive Arbeit ist für Informatiker relevant. Hier geht es darum, durch systematisches Vorgehen ein technisches Erzeugnis zu erstellen, also z.B. ein Software-System. Die Projektarbeit im Studiengang Web- und Medieninformatik ist eine konstruktive Arbeit. Soweit ich informiert bin, kann die Bachelorarbeit auch einen anderen Charakter haben.
     
    In verschiedenen Studienabschnitten sind unterschiedliche Arten wissenschaftlicher Arbeiten zu erstellen. Es ist ein Unterschied, ob man eine Hausarbeit, eine Bachelorarbeit, eine Masterarbeit, einen wissenschaftlichen Artikel oder eine Dissertation schreibt. Mich haben natürlich zunächst einmal die Anforderungen an eine Bachelorarbeit interessiert, aber es ist schon interessant zu wissen, auf welche Höhen das Niveau noch steigen kann. Ich habe zwar momentan keine konkreten Pläne für einen Master, aber das könnte ja irgendwann noch einmal Thema werden.
     
    Schließlich geht es um den formalen Aufbau wissenschaftlicher Arbeiten, also um Dinge wie Satzspiegel, Textgestaltung, Seitennummerierung, Fußnoten, Anhänge und insbesondere Verzeichnisse. Hier erhält man viele wertvolle Tipps, wie man sich eine geeignete Dokumentenvorlage erstellt, um dann auch zügig arbeiten zu können. Im Modul sind Dokumentvorlagen für Word, LibreOffice und LaTEX enthalten, die man sich herunterladen kann. Ich habe ein wenig mit der LaTEX-Vorlage experimentiert. Leider hätte ich hier noch einige Anpassungen an die deutsche Sprache vornehmen müssen, weil insbesondere das Erstellen von Verzeichnissen noch unbefriedigend funktionierte. Für meinen mündlichen Vortrag habe ich aus Zeitdruck mit der LibreOffice-Vorlage gearbeitet, die ich für meine Zwecke etwas angepasst habe.
     
    Das Thema Formatierung ist nicht aufregend, aber für solche formalen Dinge kann später viel Zeit draufgehen. Die kann sich sparen, wenn man sich vorher die Mühe macht, eine gescheite Vorlage zu bauen. Literaturverzeichnissysteme können einem die Arbeit erleichtern, erfordern aber natürlich auch eine gewisse Einarbeitung. Darum ist es gut, sich schon vor Anmeldung einer Bachelorarbeit mit so etwas zu beschäftigen. LaTEX möchte ich mir noch einmal genauer anschauen. Ich habe den Eindruck, dass man damit viel Zeit sparen kann, wenn man die anfänglichen Hürden nimmt.
     
    Eine wichtige Rolle nimmt im Modul natürlich das korrekte Zitieren von Quellen ein. Hier geht es zunächst einmal darum, zu verstehen, was für Quellen zitierfähig und zitierwürdig sind. Dann geht es darum, sich in Absprache mit der Hochschule bzw. dem Betreuer für eine der verschiedenen Zitierweisen zu entscheiden und diese auch konsequent durchzuhalten. Dabei hilft wieder eine gute Dokumentenvorlage. Unterschiedliche Arten von Veröffentlichungen müssen im Literaturverzeichnis auch unterschiedlich behandelt werden. Insbesondere Quellen aus dem Internet sind nicht einfach zu referenzieren, weil eine Quelle unter einem Link nicht unbedingt dauerhaft zu finden ist. Es gibt verschiedene Möglichkeiten, damit umzugehen, die im Modul thematisiert werden.
     
    Es folgt ein Kapitel über wissenschaftlichen Schreibstil, verständliches Schreiben und die Visualisierung von Inhalten.
     
    Ein weiteres Kapitel behandelt unterschiedliche Forschungsmethoden mit ihren Stärken und Schwächen. Unterschieden werden hier:
    schriftliche Befragung Fragebögen und Interview-Leitfäden Experiment Interview Gruppendiskussion Beobachtung Inhaltsanalyse  
    Je nach Gegenstand und Forschungsschwerpunkt sind unterschiedliche Methoden angemessen. Auch dieses Kapitel hat eine erkenntnistheoretische Komponente.
    Ein wichtiger Teil des Kurses beschäftigt sich damit, wie man sich seine Arbeitszeit gut einteilt, um seine Arbeit auch rechtzeitig abschließen zu können. Hier fällt der Begriff Projektmanagement, den ich etwas übertrieben finde, weil für mich dazu gehört, dass zumindest ein kleines Team koordiniert wird. Selbst- und Zeitmanagement hielte ich für die passendere Bezeichnung. Gleichwohl erhält man hier wertvolle Tipps, wie man die Arbeit an einer Bachelorarbeit in überschaubare Teilschritte gliedern und Meilensteine definieren kann. Gezeigt wird auch die Arbeit mit Software-Tools zum Projektmanagement. Ich habe die Arbeit damit ausprobiert, hatte aber den Eindruck, dass hier das Verhältnis zwischen Einarbeitungsaufwand und Nutzen nicht stimmt. Wenn man ein Projekt mit vielen Beteiligten zu managen hat, mag das freilich ganz anders aussehen. In diesem Abschnitt wird auch behandelt, wann und wie oft man sich mit seinem Betreuer austauschen sollte.
     
    Der letzte Kursabschnitt handelt von der Präsenation der Ergebnisse in einem mündlichen Vortrag, denn eine Bachelorarbeit muss ja in den meisten Fällen auch verteidigt werden. Die Inhalte dieses Abschnittes überlappen sich zum Teil mit dem Modul "Präsentieren".
     
    Einsendeaufgaben
     
    Die Einsendeaufgaben sind zahlreich und vielfältig und beziehen sich auf alle Kursteile. Spaß gemacht haben mir zum Beispiel die Aufgaben zur Stilverbesserung. Am besten gefallen haben die Aufgaben zu den Qualitätskriterien wissenschaftlichen Arbeitens, weil sie oft eine kreative Komponente hatten. Die Korrekturen durch meine Tutoren kamen sehr zügig. Gut gefallen hat mir, dass sie Informatikerin ist und das Thema "Wissenschaftliches Arbeiten" aus dieser Perspektive betreut. Auch die Tests waren zahlreich und deckten den Stoff engmaschig ab.
     
    Prüfung
     
    Eine Besonderheit dieses Moduls ist, dass die Klausur nur eine Stunde dauert, dafür aber eine mündliche Prüfung zum Modul gehört. Diese muss ein bisschen früher anmeldet werden als eine Klausurteilnahme, weil der organisatorische Aufwand höher ist. Mündliche Prüfungen finden nur in Dortmund statt, üblicherweise am Freitag Vormittag.
    Die mündliche Prüfung besteht aus einem Vortrag von 20 Minuten. Anschließend beantwortet man noch Fragen zum Thema. Man reicht drei Themenvorschläge ein:
    ein allgemeines Informatikthema ein spezielles Informatikthema ein allgemeines Thema (das also nichts mit Informatik zu tun hat)  
    Ich hätte am liebsten ein Thema aus der Entwicklungspsychologie vorgetragen, aber ausgewählt wurde mein Vorschlag "Grundlegende Merkmale und Muster funktionaler Programmierung". Dieses Thema war auch gut, weil es schon einen gewissen Bezug zu dem hat, was ich in meiner Bachelorarbeit gerne machen würde. Insofern war die mündliche Prüfung auch eine Gelegenheit, sich hier schon mal ein bisschen einzulesen.
     
    Welches Thema ausgewählt wurde, erfährt man übrigens erst zwei Wochen vor dem Prüfungstag. Es geht nun darum, die im Modul gelernten Techniken im kleineren Maßstab anzuwenden. Erwartet wird z.B. die Recherche und Auswahl relevanter Literatur. Die Art des Vortrages ist nicht genau vorgegeben, aber Beamervorträge sind heute üblich. Ein Handout ist nicht zwingend, es kostet aber Punkte, wenn es fehlt. Außerdem ist das Handout eine Möglichkeit, das Verfassen einer schriftlichen Arbeit zu üben und auch Feedback dazu zu erhalten. Darum meine ich, es lohnt sich, hier zumindest etwas in der Art einer Hausarbeit abzuliefern. Zwei Wochen sind durchaus wenig Zeit für eine saubere Arbeitsweise im Sinne der vermittelten Techniken und Qualitätskriterien. Es macht viel Spaß, ein selbst gewähltes Thema zu recherchieren und zu bearbeiten, aber es ist auch viel Arbeit, insbesondere, wenn man eigentlich erst nach seinem Job Zeit hat, sich mit seinem Thema zu befassen. Die mündliche Prüfung erhöht den Bearbeitungsaufwand des Moduls erheblich. Ich vermute, dass das auch für andere Module mit mündlicher Prüfung gilt.
     
    Ein kritischer Punkt bei meinem Vortrag war die Einhaltung der Redezeit, was auch zu Punktabzug geführt hat. Auch beim Punkt Einbeziehung des Publikums habe ich noch einiges zu lernen. Fachlich war es zu meiner Überraschung in Ordnung. Ich war nämlich die ganze Zeit der Ansicht, viel zu wenig Stoff behandelt zu haben, und habe mir den Kopf zerbrochen, wie ich noch mehr Themen in die 20 Minuten quetschen kann. Für das nächste Mal werde ich lernen müssen, stärker Wesentliches vom Unwesentlichen zu trennen.
     
    In den Klausuraufgaben geht es unter anderem um Qualitätskriterien wissenschaftlichen Arbeitens. Es werden etwa Vorgehensweisen, Aussagen oder Schlussfolgerungen präsentiert und man soll dann erklären, warum das keine saubere wissenschaftliche Arbeitsweise ist und was man besser machen müsste. Für die Endnote werden die Punkte aus mündlicher und schriftlicher Prüfung addiert.
     
    Mit meinem Prüfungsergebnis war ich zufrieden, auch wenn die mündliche Prüfung gezeigt hat, dass es noch Punkte gibt, an denen ich arbeiten muss.
     
    Fazit
     
    Ich hätte erwartet, dass dieses Modul zwar nützlich für die Bachelorarbeit aber nicht besonders spannend ist. Zu meiner Überraschung hat die Bearbeitung mir unheimlich viel Spaß gemacht.
     
    Thematisch war es eine echte Abwechslung. Es hat eben nicht nur und nicht mal schwerpunktmäßig mit Informatik zu tun. Tatsächlich ist das Lehrbuch eine allgemeine Einführung ins wissenschaftliche Arbeiten. Die Beispiele stammen darum nicht nur aus der Informatik sondern z.B. auch den Sozialwissenschaften oder ganz anderen Disziplinen. Das Modul ist im Gegensatz zu den meisten anderen Modulen meines fachbezogenen Studiums allgemeinbildend. Was hier vermittelt wird, entwickelt auch die Fähigkeit zu kritischem Denken. Bei den Einsendeaufgaben und auch bei den Themenvorschlägen für die mündliche Prüfung hat man größere Entscheidungsspielräume als bei anderen Aufgaben im Informatik-Studium. Rückblickend betrachte ich das Modul "Wissenschaftliches Arbeiten" als eines der schönsten in meinem Studium.
×
×
  • Neu erstellen...