• Einträge
    40
  • Kommentare
    122
  • Aufrufe
    2.232

Über diesen Blog

Seit September 2015 studiere ich berufsbegleitend Web- und Medieninformatik bei Springer Campus. Mein Ziel ist der Bachelor of Science in Web- und Medieninformatik. In diesem Blog möchte ich rückblickend über von mir abgeschlossene Module des Studiums berichten.

Einträge in diesem Blog

kurtchen

Modul: BWL1

Das Modul BWL1 ist Pflichtmodul sowohl für die Studierenden der Wirtschaftsinformatik als auch für die der Web- und Medieninformatik. Die Wirtschaftsinformatiker belegen zuvor noch das Modul "Grundlagen der BWL", über das ich leider nichts sagen kann. Möglicherweise hätte mir die Belegung dieses Moduls die Bearbeitung von BWL1 erleichtert. Web- und Medieninformatiker müssen im weiteren Studienverlauf mindestens noch BWL2 belegen. Für die Wirtschaftinformatiker folgen noch einige weitere BWL-Module:
- strategisches Management und Controlling
- Electronic Business
- Human Ressource Management

 

Für angehende Web-Informatiker wie mich ist BWL1 schon im 1. Semester vorgesehen. Ich hatte dieses Modul jedoch lange vor mir hergeschoben. Inzwischen hat sich das zu einem Bremsklotz meines Studiums entwickelt. BWL1 ist Voraussetzung für das Modul "Geschäftsprozess-Management" und für BWL2. Letzteres ist wiederrum Voraussetzung für weitere Module, die ich gerne belegen möchte, z.B. für "Business Intelligence". Es half also alles nichts. Ich musste dieses Thema endlich angehen.

 

BWL habe ich lange vor mir hergeschoben

 

Grund für meine "Aufschieberitis" war meine Vermutung, dass mir dieses Modul nicht so leicht fallen würde. Ich war Schüler eines katholischen Gymnasiums, das sich durchaus bemüht hat, mir eine solide Allgemeinbildung zu vermitteln. Betriebswirtschaftliche oder volkswirtschaftliche Grundkenntnisse gehörten damals aber nicht zum Kanon. Es wird ja in letzter Zeit immer häufiger beklagt, dass solche Themen in den Lehrplänen vieler allgemeinbildender Schulen nicht vorgesehen sind. Ich kann sowohl das FÜR als auch das WIDER der laufenden Diskussion nachvollziehen und möchte mich diesbezüglich auch gar nicht positionieren. Festzuhalten bleibt einfach, dass ich ohne nennenswerte Vorkenntnisse in dieses Modul gestolpert bin. Auch meine beruflichen Erfahrungen haben mir hier nichts genutzt. Als Beschäftigter in einem sozialpädagogischen Beruf genieße ich den Vorteil, einen vergleichsweise abwechslungsreichen Berufsalltag zu haben und innerhalb meines Berufes ganz unterschiedliche Kompetenzen entwickeln zu können. Betriebswirtschaftliche Kenntnisse gehörten in meinem Fall aber nicht dazu. Hier hatte ich immer das Glück, dass in unserer Verwaltung kompetente Kollegen saßen, die die abrechnungstechnischen Probleme für mich lösten. Das ist schön, weil es mir den Rücken für meine eigentlichen Aufgaben frei hält. Ich habe aber auch gemerkt, dass Kommilitonen, die in einem betrieblichen Umfeld arbeiten oder gar selbstständig sind, die Themen des Modules zugänglicher finden.

 

Kursaufbau

 

Der Kurs besteht aus 2 Lehrbüchern von 2 verschiedenen Autoren: "Basiswissen Externes Rechnungswesen" von Frank Wischmann und "Basiswissen Internes Rechnungswesen" von Rainer Ostermann. Zusammen kommt man auf an die 500 Seiten Lehrtext, so dass der Kursumfang für ein Modul bei Springer Campus als leicht überdurchschnittlich gelten kann.

 

Teil 1: Externes Rechnungswesen

 

Insbesondere mit dem Kursteil zum externen Rechnungswesen habe ich mich sehr schwer getan. Inhalte dieses Kurses sind:
- Bilanz ziehen, Bilanzaufbau, Inventar und Inventur, Kapitalarten
- die Buchhaltung als Teilgebiet des Rechnungswesens
- die rechtlichen Grundlagen der Buchführungspflicht
- Darstellung von Grundgeschäftsfällen mit T-Konten
- Buchungssätze
- Erfolgsbuchungen
- das System der Umsatzbesteuerung
- besondere Geschäftsfälle wie Beschaffung, Handelswaren, fertige und unfertige Erzeugnisse, Bezugskosten und Wertreduzierung, Grundlagen der Anlagenwirtschaft und der Personalwirtschaft
- private Vorgänge wie Privatentnahmen und -einlagen
- Bilanzierungsgrundsätze und -maßstäbe
- Gewinn- und Verlustrechnung
- aktive und passive Rechnungsabgrenzungsposten
- Rückstellungen
- Bewertung des Anlagevermögens, des Umlaufvermögens, der Forderungen und der Verbindlichkeiten
- Bilanzpolitik und Bilanzkennzahlen

 

Die meisten dieser Begriffe waren mir zu Beginn des Kurses völlig unbekannt. Das externe Rechnungswesen richtet sich nicht allein an Akteure innerhalb des Unternehmens sondern vor allem an solche außerhalb des Unternehmens. Zum Beispiel ist die Bilanz Grundlage für die Besteuerung des Unternehmen; insofern werden die Bücher z.B. auch für das Finanzamt geführt. Aber auch Kapitalgeber haben ein legitimes Interesse an den Büchern. Ihnen gegenüber muss man nachweisen, dass man ordentlich gewirtschaftet hat, um sich nicht etwa der Insolvenzverschleppung schuldig zu machen. Aus diesem Grund wird das externe Rechnungswesen stark durch gesetzliche Vorgaben und durch Konventionen bestimmt. Im Kurstext wird regelmäßig auf Paragraphen verwiesen, z.B. aus dem Handelsgesetzbuch oder auf Steuergesetze. Es empfiehlt sich, diese Texte als Sekundärliteratur zu besorgen und dort nachzuschlagen, wovon im Kurs die Rede ist. Schon allein, um sich an die spezielle juristische Sprache zu gewöhnen, die dort verwendet wird, was zumindest für mich im Laufe des Kurses immer eine zusätzliche Hürde blieb.

 

Herausforderung doppelte Buchführung

 

Große Schwierigkeiten hatte ich auch damit, die innere Logik der doppelten Buchführung zu verstehen. Jeder Vorgang wird grundsätzlich auf 2 Konten gebucht, einmal im Soll und einmal im Haben. Vieles davon war für mich kontraintuitiv und ich habe oft zurückblättern müssen, um Themen und Begriffe erneut zu erarbeiten, von denen ich eigentlich glaubte, sie endlich verstanden zu haben. Ein Beispiel für meine Schwierigkeiten: Gewinne werden im Eigenkapital als Haben gebucht, also im Prinzip als Schulden oder Verbindlichkeiten des Unternehmens. Das liegt daran, dass ein Unternehmen das Eigenkapital den Kapitalgebern schuldet, die es aus dem Unternehmen entnehmen könnten. Macht ein Unternehmen Verluste, so werden diese - für mich zunächst überraschend - im Eigenkapital ins Soll gebucht. Die Schuld gegenüber den Kapitalgebern schrumpft und diese können nun weniger Geld aus dem Unternehmen entnehmen. Wenn man einmal begriffen hat, warum das so gehandhabt wird, ist es in sich schlüssig, aber ich musste mir das sehr mühsam erarbeiten und hatte auch große Schwierigkeiten, mir solche Sachverhalte und Zusammenhänge zu merken.

 

Online-Tests und Einsendeaufgaben

 

Die Online-Tests konnte ich selten im ersten Anlauf lösen. Oft habe ich erst durch Rumprobieren die richtige Lösung gefunden. Dann begann meine eigentliche Arbeit: Anhand des Lehrbuches nachvollziehen, warum nun gerade DAS die richtige Lösung war. Das sorgte dann doch für gelegentliche Aha-Erlebnisse, die ich mir aber mühsam erkämpfen musste.

 

Dabei glaube ich nicht, dass meine Schwierigkeiten dem Lehrtext geschuldet sind. Ich habe mir aus der Bibliothek Sekundärliteratur besorgt, hatte damit aber die gleichen Schwierigkeiten. Letztlich bin ich immer wieder auf den Lehrtext zurück gekommen, der immerhin den Vorteil einer kompakten, auf den Punkt kommenden Darstellung hatte. Nachdem ich mit den meisten Modulen meines Studiums recht gut zurecht gekommen bin, so z.B. auch mit den allgemein gefürchteten Mathematik-Modulen, ist mit dem externen Rechnungswesen meine Achillesferse gefunden. Dieses Thema wollte mir einfach nicht ins Hirn.

 

So überrascht es nicht, dass ich auch bei den Einsendeaufgaben selten die volle Punktzahl erzielen konnte. Auch wenn ich meist viel mehr Zeit investiert hatte, als eigentlich vorgesehen war, und mir auch gelegentlich Rat von Kommilitonen eingeholt hatte: Irgendetwas war doch meistens falsch. Natürlich war es kein Problem, die Zulassung zur Online-Klausur zu bekommen. Aber im Hinblick auf die Präsenzklausur machte ich mir schon Sorgen, wie ich vergleichbare Aufgaben unter Zeitdruck und ohne die Möglichkeit, im Lehrbuch nachzuschlagen, lösen sollte. Nicht ganz zu unrecht, wie sich herausstellen sollte.

 

Gleichwohl kann ich mich über den Lehrtext und die tutorielle Betreuung nicht beklagen. Aus Gesprächen mit BWL-affineren Leuten weiß ich, dass von uns nichts unmögliches verlangt wurde. Der Kurs behandelt recht grundlegende Themen und die Anforderungen der Klausur sind nicht zu hoch. Meine Schwierigkeiten haben wohl eher etwas mit meinem persönlichen Begabungsprofil zu tun.

 

Teil 2: Internes Rechnungswesen

 

Zum Glück fiel mir der zweite Kursteil zum internen Rechnungswesen leichter. Das interne Rechnungswesen richtet sich an Akteure innerhalb des Unternehmens. Seine Ergebnisse dienen z.B. der Preisfindung. Sie sind aber auch Grundlage für unternehmerische Entscheidungen, z.B. zwischen eigener Fertigung oder Fremdbezug einer Komponente. Hier geht es darum, Kosten zu ermitteln und auf Kostenstellen umzulegen, um für Produkte und Dienste Preise zu finden, die einerseits wettbewerbsfähig und andererseits kostendeckend sind.

 

Dazu ein Beispiel: Wegen meines Umzuges war ich in den letzten Wochen häufiger bei IKEA. In der Markthalle stehen Einkaufswagen, die die Kunden mit ihren Möbelkartons beladen. Auf dem Parkplatz lassen sie die Wagen stehen. Nun muss jemand regelmäßig Wagen zurück in die Markthalle schieben und das verursacht der Filiale Kosten. Diese müssen in irgendeiner Weise auf die Produkte umgelegt werden. Wenn ich mein neues Billy-Regal mit nach Hause nehme, ist im Preis auch das Zurückschieben meines Einkaufswagens enthalten. Aber woher weiß man, wie viel man auf den Preis eines Regals aufschlagen muss, damit solche Kosten gedeckt sind? Und was ist mit anderen Kosten, die sich nur schwer einem einzelnen Artikel zurechnen lassen? Die Kundentoiletten mit ihrem Wasserverbrauch, die Handwerker, die das Gebäude instand halten, die Kosten für die Aktualisierung der Homepage, für die Kataloge, die Verwaltung...

 

Nach dem Kurs zum internen Rechnungswesen versteht man etwas besser, wie so etwas abläuft. Die grobe Gliederung des Kurses ist:
- Kostenartenrechnung
- Kostenstellenrechnung
- Kostenträgerrechnung
- Weiterentwicklung der Kostenrechnung, z.B. mit Normalkostenrechnung oder Plankostenrechnung.

 

Die Einsendeaufgaben waren für mich nachvollziehbarer als im externen Rechnungswesen. Nach meiner Empfindung ist das interne Rechnungswesen ein bisschen mehr "common sense" während das externe Rechnungswesen ein bisschen mehr "Konvention" ist. Im internen Rechnungswesen geht es oft darum, Gemeinkosten Kostenträgern und Kostenstellen zuzuordnen. Da das Rechnungswesen selbst Kosten verursacht, muss man immer wieder abwägen zwischen möglichst präziser Zuordnung der Kosten einerseits und dem Aufwand für diese Zuordnung andererseits, der natürlich vertretbar bleiben muss. Interessant ist, dass sich viele kleine und mittelständische Unternehmen diesen Aufwand komplett sparen und gar kein internes Rechnungswesen haben. Verpflichtet sind sie dazu auch nicht. Die entsprechenden Aufschläge und Umlagen auf Produkte und Dienstleistungen werden dann eher intuitiv oder nach Erfahrung festgelegt. So kann es aber leicht passieren, dass ausufernde Kosten in bestimmten Bereichen lange unbemerkt bleiben, was dann Gewinne aufzehrt. Oder dass ungünstige unternehmerische Entscheidungen getroffen werden. Manche Ergebnisse der Kostenrechnung können nämlich durchaus kontraintuitiv sein. So kann es manchmal den Gewinn eines Unternehmens mehren, Produkte z.T. zu einem Preis anzubieten, der unter den Selbstkosten liegt, weil sich so Gemeinkosten auf eine größere Stückzahl verteilen und die Gewinnmarge für andere Teile der Produktion so größer wird. Ich war oft überrascht, was bei meinen Rechnungen heraus kam.

 

Das interne Rechnungswesen war für mich jedenfalls interessant und hat auch Spaß gemacht.

 

Was kann man am Ende des Moduls?

 

Mir gefallen am Modul auch die realistisch formulierten Ziele: Natürlich wissen wir am Ende nicht genug, um im internen oder externen Rechnungswesen tätig zu werden. Es geht eher darum, dass wir mit Menschen zu tun bekommen werden, die im Rechnungswesen tätig sind. Mit denen sollen wir besser kommunizieren können. Wenn wir Entscheidungen mittragen oder umsetzen müssen, die vom Rechnungswesen informiert sind, können wir damit vielleicht besser umgehen, weil wir zumindest ein erstes Verständnis für die Notwendigkeiten und Zwänge des Rechnungswesens haben. Dass ich hier ein paar Fortschritte gemacht habe, bemerke ich bereits, auch wenn ich befürchte, das sich das nicht in meiner Klausurnote bemerkbar machen wird.

 

Online-Klausuren

 

In der Online-Klausur konnte ich mir ein paar Bonuspunkte sichern. Eine Besonderheit in diesem Kurs ist, dass man zwei Online-Klausuren schreiben kann, eine für jeden Kursteil. Das bedeutet natürlich auch doppelten Zeitaufwand. Gleichzeitig kann man pro Klausur nur die Hälfte der sonst üblichen Bonuspunkte erlangen. Ich glaube, meine Bonuspunkte werde ich diesmal gut gebrauchen können. In der Online-Klausur konnte ich mich natürlich an den bislang gelösten Einsendeaufgaben orientieren und in den Lehrbüchern nachschlagen. Das darf man in der Präsenzklausur nicht. Dies ist also ein Kurs, bei dem auch ein bisschen Auswendiglernen gefragt ist. Beim internen Rechnungswesen war das nicht so nötig, weil ich hier vieles plausibel fand, so dass ich mir vergessene Details wieder erschließen konnte. Beim externen Rechnungswesen hingegen, das stark durch gesetzliche Vorgaben bestimmt wird, muss man mehr WISSEN. Für die Online-Klausur im externen Rechnungswesen kann ich anderen Studierenden den Hinweis geben, dass bei vielen anwendungsbezogenen Aufgaben auch nach den Paragraphen gefragt wird, die das Vorgehen bestimmen. Beim internen Rechnungswesen ist es nützlich zu wissen, dass auch Stoff aus dem letzten Kapitel "Die Weiterentwicklung der Kostenrechnung" abgeprüft wird.

 

Präsenzklausur

 

Kommen wir zur Präsenzklausur: Sie dauert 2 Stunden. Die Punkte verteilen sich genau gleichmäßig auf internes und externes Rechnungswesen. Beim externen Rechnungswesen gab es einige Wissensfragen zu grundlegenden Konzepten und Begriffen. Hier sollte man sich mit gründlicher Vorbereitung und fleißigem Lernen Punkte sichern können. Genau das habe ich neben meinem Umzug leider nicht geschafft. Bei vielen Aufgaben wurden Geschäftsvorgänge geschildert und man sollte zeigen, welche Buchungen das auf welchen Konten auslöst. Meine grundlegenden Schwierigkeiten mit diesem Thema zeigten sich auch in der Klausur. Es gibt keine Aufgabe, bei der ich mir sicher bin, das richtige Ergebnis geliefert zu haben. So blieb mir nur, bei möglichst jeder Aufgabe eine Lösung zu versuchen. Unterm Strich meine ich aber, dass die Klausur durchaus gutmütig gestellt war. Es ist schon meine eigene Verantwortung, falls ich diesmal nicht bestehen sollte.

 

Die Aufgaben zum internen Rechnungswesen erschienen mir anwendungsbezogen und praktisch. Bearbeitungsschritte, an die ich mich nicht mehr erinnern konnte, glaubte ich mir erschließen zu können. Was diesen Teil der Klausur angeht, bin ich optimistischer. Anderen Studierenden würde ich empfehlen, zur Vorbereitung vor allem die Einsendeaufgaben und die Aufgaben der Online-Klausur zu wiederholen.

 

Ein Ergebnis liegt mir noch nicht vor. Ich erwarte aber diesmal nicht, gut abzuschneiden. Angesichts der vielen Aufgaben in Beruf und Privatleben und der knappen Vorbereitungszeit wäre ich diesmal zufrieden damit, die Klausur nicht wiederholen zu müssen; auch wenn das zu Lasten meines Notendurchschnitts gehen sollte. Ich wäre einfach froh, dieses Modul hinter mir lassen zu können.

 

Trotzdem war es sicher gut, sich einmal mit dem Thema Rechnungswesen auseinander zu setzen. Mein Respekt und meine Wertschätzung für Leute, die solche Aufgaben tagtäglich für mich erfüllen, hat durch das Modul jedenfalls zugenommen.

 

Wie geht es weiter?

 

Als nächstes möchte ich nun BWL2 und Geschäftsprozess-Management bearbeiten; beides Module, denen ich nicht unbedingt entgegen gefiebert habe. Beim Geschäftsprozess-Management habe ich inzwischen einen Teil des Lehrbuches gelesen. Es ist interessanter als ich dachte und ich sehe mehr Bezüge und Analogien zur Informatik als ich vermutet hätte. Das könnte eigentlich noch richtig Spaß machen.

 

In BWL2 soll es um Ökonomie und Unternehmensführung gehen. Insbesondere beim Kursteil Ökonomie hoffe ich, dass ich daraus etwas mitnehmen kann. In der täglichen Berichterstattung der Medien spielt ja das wirtschaftliche Geschehen eine große Rolle und es ist auch politisch relevant. Oft habe ich das Gefühl, dass meine Allgemeinbildung nicht ausreicht, um hier folgen zu können. Vielleicht wird meine Zeitungslektüre nach diesem Modul ja etwas aufschlussreicher als bislang.

kurtchen

Modul: XML

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.

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.

kurtchen

Modul: CMS

Das Modul "Content-Management-Systeme" (CMS) ist ein Pflichtmodul im Studiengang "Wirtschaftsinformatik" und wird dort auch dem Studienbereich Wirtschaftsinformatik zugerechnet. Springer Campus empfiehlt, es im 3. Semester zu belegen. Aber auch Studierende im Studiengang "Web- und Medieninformatik" dürfen es als Wahlpflichtmodul im Vertiefungsbereich belegen. Als inhaltliche Voraussetzungen werden genannt:
- Web-Programmierung
- Web-Anwendungen 1
- XML

 

Ich glaube, dass man dieses Modul auch ohne diese Grundlagen belegen kann. Tatsächlich kommt im Studienplan für Wirtschaftsinformatik "Web-Programmierung" nach dem Modul CMS und weder "Web-Anwendungen 1" noch "XML" sind für Wirtschaftsinformatiker verpflichtend. Richtig durchdacht wirken die Empfehlungen zu den inhaltlichen Voraussetzungen auf mich deshalb nicht.

 

Ich habe das Modul belegt, weil ich fand, als Studierender der Web-Informatik müsse man auch Ahnung von CMS haben. Erwartet hatte ich eine Einführung in ein gängiges Web-CMS, z.B. in TYPO3, also ein Modul mit vielen praktischen Übungen. Wie schon bei anderen Wirtschaftsinformatik-Modulen war ich auch hier auf dem Holzweg, denn eine praktische Einführung in ein WCMS will dieses Modul nicht sein. Allerdings lernt man hier einige grundlegende Konzepte, die es einem erleichtern sollten, sich schnell in ein x-beliebiges WCMS einzuarbeiten.

 

Mein erster Irrtum war die Gleichsetzung von CMS und WCMS. Content Management Systeme dienen dazu, Content für eine Website zu managen, wozu sonst? Nein, denn es gibt Dokumenten-Management-Systeme (DMS), Electronic Record Management Systeme (ERMS), Medienbibliotheken, mobile Content Management Systeme (mCMS), semantische Content Management Systeme (SCMS) und Component Content Management Systeme (CCMS) und außerdem verschiedene Mischformen. Näher beleuchtet werden im Kurs das WCMS, das DMS und das SCMS.

 

Im Grundlagen-Kapitel geht es um Themen und Konzepte, die alle Arten von Systemen betreffen: Content-Modellierung, Metadaten, Standardisierung, Dokumenten-Management-Standards und Metadaten-Standards. Und um die grundlegenden Fragen:
- Was ist Content?
- Wie unterscheidet sich Content von Daten oder Information?
- Was ist ein Dokument?
- Was ist Content Management?

 

Im Kapitel zu WCMS geht es um grundlegende Konzepte wie:
- Benutzer und Berechtigungsstrukturen und ihre Bedeutung für den Workflow
- Customizing, das Arbeiten mit Themes, Plugins, Templates
- strukturierte Texte, Multimediaelemente
- Inhaltsbearbeitung, -organisation und -darstellung

 

Dieses Kapitel war für mich enttäuschend, weil ich eben etwas ganz anderes erwartet hatte, nämlich eine praktische Einführung in ein exemplarisches CMS. Ganz umsonst war die investierte Zeit am Ende aber nicht.

 

Das Kapitel über DMS war schon spannender. Dokumenten-Management-Systeme werden oft in einem behördlichen Umfeld eingesetzt. Hier geht es i.d.R. darum, gesetzliche Aufbewahrungsfristen einzuhalten. Im Vergleich zum WCMS ist hier die Versionierung besonders wichtig. Es muss stets nachvollziehbar bleiben, wer, wann, was geändert hat. Vorherige Versionen eines Dokumentes sollen sich wieder herstellen lassen. Langfristige Archivierung spielt oft eine große Rolle. Dem Metadaten-Management kommt eine besondere Rolle zu, weil Content über die Metadaten schneller gefunden werden kann als über eine aufwendige Volltext-Suche. Oft ist nicht leicht zu beurteilen, was relevante Metadaten sind. Wenn Dokumente über lange Zeiträume aufbewahrt werden, können andere inhaltliche Kriterien für das Retrieval relevant werden, als man zum Zeitpunkt der Erfassung für plausibel hielt. Mit dem DIRKS-Modell wird ein allgemeines Vorgehensmodell vorgestellt, um ein Dokumenten-Management-System in einem institutionellen Kontext zu etablieren.

 

Wirklich interessant war für mich das Kapitel über semantische Content-Management-Systeme (SCMS). Um für den Nutzer navigierbar zu sein, sollte Content mit anderem Content anhand von inhaltlichen Bezügen verknüpft werden. SCMS nutzen semantische Information, mit der Content angereichert ist, um solche Bezüge, die implizit enthalten aber nicht explizit bekannt sind, zu entdecken. So kann ein SCMS Metadaten automatisiert hinzufügen und Nutzern Inhalte anbieten, die inhaltlich zu denen passen, nach denen sie suchen. Ein SCMS kann zum Beispiel unterscheiden, ob ein Nutzer, über die UNO als Organisation oder über UNO als Kartenspiel recherchiert. Und je nachdem Information über andere internationale Institutionen oder über andere Kartenspiele anbieten.

 

Zur Anreicherung von Content mit semantischer Information dient der Resource Description Framework (RDF). Mit ihm beschreibt man, dass eine Ressource, z.B. ein Content-Objekt im Web, eine bestimmte Eigenschaft mit einem bestimmten Wert hat. Man erhält so eine Aussage mit Subjekt (Ressource), Prädikat (Eigenschaft) und Objekt (Wert bzw. Belegung der Eigenschaft), die man auch als Triplet bezeichnet. Man kann zum Beispiel behaupten, dass ein Affe Bananen frisst. Das erinnert ein wenig an die Art und Weise, wie in logischen Programmiersprachen (etwa Prolog) Fakten beschrieben werden. RDF ist XML-basiert. Das ist wahrscheinlich der Grund, dass das Modul "XML" als sinnvolle Vorbereitung genannt wird. Vertiefte XML-Kenntnisse braucht man aber nur, wenn man das Thema Semantic Web auf eigene Faust weiter erkunden möchte.

 

Mit dem Resource Description Framework Schema (RDFS), kann man solche Aussagen semantisch strukturieren. Man kann zum Beispiel festlegen, dass Affen Tiere sind oder das Tiere Nahrung essen. Mit dem Rule Interchange Format (RIF) beschreibt man Regeln, die von regelbasierten Systemen interpretiert und verarbeitet werden können. Man kann zum Beispiel Bedingungen formulieren, unter denen ein Tier Bananen als Nahrung nutzen würde, etwa, wenn es ein Affe ist und einer Umgebung lebt, in der Bananen wachsen. Ähnlich wie in einem Prolog-System kann dann ein regelbasiertes System aus bekannten Fakten und Regeln neue Fakten ableiten, die logisch implizit vorhanden aber bislang nicht explizit bekannt waren. Auf diese Weise kann ein solches System Wissen entdecken. Über solche Mechanismen kann neuer Content mit altem Content inhaltlich verknüpft werden. Logische Aussagen, die Triplets, können in speziellen Datenbanken, sogenannten Triplestores, gespeichert werden. Mit der Abfragesprache SPARQL kann man in diesen Wissensbeständen nach bestimmten Mustern suchen, ähnlich wie mit SQL in einer relationalen Datenbank. Als Fallbeispiel für ein semantisches CMS dient Apache Stanbol.

 

Dieses Kapitel war für mich das Beste am Kurs. Leider fehlt im Kursangebot von Springer Campus ein Modul "Klassische KI", das nötig wäre, um die hier vorgestellten Konzepte wirklich en detail zu verstehen. (Klassische KI ist ja ein Thema, mit dem ich mich gerne noch beschäftigen möchte.) Die spannende Idee hier scheint zu sein, dass Web-Content mit Fakten und Regeln angereichert wird, so dass ein wissens- und regelbasierte Systeme damit arbeiten können.

 

Es folgten 2 Kapitel über "Dokumenten-Management-Systeme in der Praxis" und über ein Fallbeispiel zur Erstellung einer Unternehmenswebseite mit einem CMS. Bei letzterem ging es weniger um Technik als um die einzelnen Phasen des Projektablaufs und die daran beteiligten Akteure.

 

Mit Ausnahme des Kapitels über SCMS hat dieses Modul keine ausgesprochen technische Perspektive. Es geht eher um die Einbettung von CMS in organisatorische und institutionelle Kontexte, um Vorgehensweisen im Projektverlauf, um die Ermittlung von Anforderungen, die Formulierung von Projektzielen und Erfolgskriterien. Schon nachvollziehbar, dass das ein Modul für die Wirtschaftsinformatiker ist.

 

Eine Besonderheit in diesem Modul ist, dass es hier mal kein gedrucktes Lehrbuch sondern nur ein Skript gibt. Das hatte ich bei Springer Campus noch nicht erlebt, obwohl ich vom Hörensagen weiß, dass das vereinzelt auch noch in anderen Modulen vorkommt. Ein Buch ist natürlich schöner und lässt sich besser mitnehmen, aber das Skript ist völlig in Orndung. Die Einsendeaufgaben fand ich in diesem Modul vergleichsweise einfach. Das gleiche galt für Abschlusstest und Abschlussklausur.

 

Die Präsenzklausur fand ich im Vergleich etwas schwerer. Ich hatte mich aber auch nicht gut vorbereitet. Da ich am Prüfungswochenende 4 Klausuren schreiben wollte, musste ich Prioritäten setzen. Softwaretechnik 3 und Web-Engineering waren mir am wichtigsten. Darum hatte ich dort am meisten Zeit investiert. Für CMS hatte ich vor allem die Inhalte aus dem Kapitel über SCMS wiederholt, denn die fand ich am anspruchsvollsten. Außerdem war ich der Meinung, dass das guter Stoff für Prüfungsfragen sei. Leider spielte ausgerechnet dieser Kursteil in der Klausur eine geringe Rolle. Die Aufgaben deckten ansonsten alle Kursteile recht breit ab, so dass ich hier nur den Tipp geben kann, bei der Wiederholung des Stoffes auf möglichst gleichmäßige Abdeckung zu setzen und sich nicht in Details zu verlieren. Die Aufgaben fragen in erster Linie Wissen ab, indem man Konzepte und Begriffe erklärt. Solche Klausuren mag ich nicht besonders, aber es passt zum Kurskonzept.

 

Nicht ganz zu unrecht hatte ich damit gerechnet, dass die Klausur zu CMS die leichteste an jenem Prüfungswochenende sein würde. Darauf hatte ich mich leider ein bisschen zu sehr verlassen, und so erzielte ich insgesamt nur 75 von 100 Punkten. Da diese Klausur wirklich nicht zu schwierig war, war ich mit meiner Leistung nicht zufrieden. Dank der Bonuspunkte aus Online-Test und Online-Klausur war die Note dann trotzdem ganz gut.

 

CMS ist ein Modul für Wirtschaftsinformatiker. Es geht um Anwendung im institutionellen Kontext, um Vorgehensweisen, Projektplanung, Standards. Wie die Technik funktioniert, spielt eine untergeordnete Rolle. Man lernt nicht, mit einem bestimmten CMS umzugehen. Insgesamt habe ich schon einige neue Erkenntnisse aus dem Modul mitgenommen, vor allem aus den Kapiteln über Dokumenten-Management-Systeme. Aber nochmal würde ich es nicht belegen, weil es mir zu sehr auf die Wirtschaftsinformatiker zugeschnitten ist.

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.

kurtchen

Modul: Web-Engineering

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.

kurtchen

Seit neuestem ist es möglich, auch in Heidelberg Klausuren zu schreiben. Das liegt daran, dass der Springer Verlag eine Zweigniederlassung in Heidelberg hat. Der Klausurort ist darum auch das große Gebäude in der Tiergartenstraße 17.

 

Klausuren in Heidelberg sind bis auf weiteres Freitags von 10 bis 12 und bei Bedarf von 13 bis 15 Uhr möglich. Samstags kann man in Heidelberg keine Klausuren schreiben.

 

Wenn man mit dem Auto anreist, sollte man bedenken, dass der Verkehr sich morgens im Berufsverkehr stadteinwärts staut. Das kennt man auch von anderen Städten. Die Parksituation vor Ort ist gut. Springer hat einen großen Firmenparkplatz, den ich aber gar nicht nutzen musste, weil ich einen der zahlreichen öffentlichen und gebührenfreien Parkplätze einer nahe gelegenen Sportanlage nutzen konnte. Auch die Anreise mit öffentlichen Verkehrsmitteln scheint nach Auskunft eines Kommilitonen kein Problem zu sein.

 

Beim Betreten des Gebäudes muss man sich am Empfang in eine Besucherliste eintragen und beim Verlassen des Gebäudes auch wieder abmelden. Das dauert einen Moment. Dafür ist der Klausurraum im Erdgeschoss nahe beim Eingang und nicht schwer zu finden. Wie an anderen Klausurorten üblich, werden Getränke und ein paar Süßigkeiten zur Verfügung gestellt.

 

Ein großes Plus in Heidelberg ist die hervorragende Betriebskantine von Springer. Ob süß oder herzhaft, üppig oder gesundheitsorientiert, mit oder ohne Fleisch, hier ist für jeden etwas geboten. Ich hatte bei meinem ersten Besuch am Ende mehr auf dem Tablett, als ich mir vorgenommen hatte, weil so viele leckere Dinge lockten. So konnte ich gut gestärkt in meine zweite Klausur gehen.

 

Schön am Standort Heidelberg ist auch, dass man dort Mitarbeiter von Springer Campus trifft, die unseren aber auch weitere Fernstudiengänge organisatorisch betreuen. Das ist eine schöne Gelegenheit zum informellen Austausch, über die aktuelle und künftige Situation unseres Studienganges. Es ist durchaus interessant zu erfahren, wie bestimmte Aspekte unseres Fernstudiums aus Anbietersicht wahrgenommen werden.

 

Bislang nutzen nur wenige Studierende den  Klausurstandort Heidelberg. Allerdings weiß ich von Kommilitonen, dass trotz eindeutiger E-Mail-Einladung noch längst nicht alle mitbekommen haben, dass es diese neue Möglichkeit gibt. Ich glaube, dass Heidelberg vor allem für die Studierenden aus Baden-Württemberg eine interessante Alternative sein könnte. Aber nicht nur. Ich wohne in Unterfranken und möchte in Zukunft gerne öfter meine Klausuren in Heidelberg schreiben.

kurtchen

Modul: Softwaretechnik 3

Das Modul Softwaretechnik 3 (SWT3) ist verpflichtend für Studierende im Studiengang Web- und Medieninformatik und wird dort dem großen Studienbereich "Softwaretechnik" zugerechnet. Für Studierende im Studiengang Wirtschaftsinformatik ist es nicht verpflichtend. Soweit ich es verstanden habe, kann es von ihnen nicht einmal als Vertiefungskurs belegt werden. Laut Studienplan sollte man SWT3 im 6. Semester belegen. Es ist also als eines der letzten Module vor der Bachelor-Arbeit vorgesehen.

 

Voraussetzungen

 

Die Liste der Module, die als inhaltliche Voraussetzung genannt werden ist lang: Man benötigt GdI1 und GdI2, weil man solide Kenntnisse objektorientierter Konzepte sowie gute Java-Kenntnisse braucht. GdI3 ist wichtig, weil die Interaktionen zwischen den Schichten GUI, Fachkonzept und Datenhaltung eine wesentliche Rolle spielen. SWT1 ist unter anderem nötig, weil man sich mit den verschiedenen UML-Diagrammen gut auskennen sollte. Wozu man Software-Management braucht, erschließt sich mir nicht. Ich hatte diese Grundlage nicht und habe sie auch an keiner Stelle des Kurses vermisst. Dafür denke ich, dass das Modul "Nicht-sequentielle Programmierung" (NSP) eine sinnvolle Vorbereitung wäre, denn verteilte Anwendungen spielen eine große Rolle und es ist sehr hilfreich, zumindest schon einmal Erfahrungen mit RMI (Remote Methode Invocation) gesammelt zu haben. Das Modul SWT3 ist außerdem ein Pflichtmodul für das Hochschulzertifikat "Software-Architekt". Kein Wunder, denn Software-Architektur ist ein roter Faden dieses Kurses.

 

Das Lehrbuch

 

Grundlage für den Kurs ist das "Lehrbuch der Softwaretechnik - Entwurt, Implementierung, Installation und Betrieb" von Helmut Balzert. Es ist der Folgeband zum "Lehrbuch der Softwaretechnik - Basiskonzepte und Requirements Engineering" vom gleichen Autor. Während sich der Inhalt des ersten Bandes auf 2 Module verteilte, muss man für SWT3 tatsächlich die kompletten 580 Seiten durchackern. Und die haben es in sich. Wie schon im ersten Band legt Herr Balzert großen Wert auf eine präzise Definition der Begriffe. Viele Diagramme (vor allem UML-Diagramme) und Code-Beispiele (meist in Java) ergänzen den Kurstext.

 

Die Themen

 

Eine der ersten Einsendeaufgaben behandelte Verteilungsdiagramme. Mit diesen stellt man dar, wie die Komponenten eines verteilten Softwaresystems auf verschiedene physische Rechner oder auf verschiedene Ausführungsumgebungen an verschiedenen Standorten verteilt sind, und über welche Protokolle die Interaktion zwischen den Knoten abläuft. Konkret sollte man für die Aufgabe die sprachliche Beschreibung eines verteilten Systems in ein Diagramm umsetzen. Hier hatte ich Schwierigkeiten, mir das System und das Zusammenwirken seiner Teile vorzustellen. Ich brauchte mehrere Anläufe und viele Rückmeldungen meines Tutors, um diese Aufgabe befriedigend lösen zu können. Leider ist dieses Thema eine meiner Achillesfersen geblieben. Die Verteilungsdiagramme spielten auch in der Klausur eine Rolle und gerade mit dieser Aufgabe habe ich mich sehr schwer getan.

 

Leichter fiel mir der große Themenbereich der Entwurfsmuster. Hier zielten die Einsendeaufgaben darauf ab, verschiedene Entwurfsmuster in Java auszuprogrammieren. Zu meiner Überraschung ist SWT3 ein Modul, in dem das Schreiben von Code wieder eine größere Rolle spielt. Eine schöne Nebenwirkung dieses Moduls ist, dass ich nun viel besser mit Netbeans umgehen kann. (Eigentlich nicht vorgesehen, ich hätte ich das Modul mit Eclipse bearbeiten sollen.) Wichtige Themen sind: Callback, Schichten-Muster, Beobachter-Muster, MVC-Muster, Fassaden-Muster, Kommando-Muster, Proxy-Muster, Fabrikmethoden-Muster, Strategie-Muster und Brücken-Muster.

 

Angenehm am Modul ist auch, dass sich eher theoretische und sehr praktische Kapitel abwechseln. Nach einem recht theoretischen Kapitel über nicht-funktionale Anforderungen geht es also wieder recht praktisch weiter mit Globalisierung und Internationalisierung von Software, mit Authentifizierung und Autorisierung am Beispiel JAAS und mit Transaktionen am Beispiel JTA. Ergänzend zur vorherrschenden Java-Perspektive gibt es immer wieder kleinere Ausflüge, wie die verschiedenen Konzepte des Kurses in .NET umgesetzt werden.

 

Ein nächster großer Block sind Arten der Netzkommunikation bei verteilten Anwendungen. Hier lernt man in rascher Folge die Kommunikation mit Sockets, mit Remote Method Invocation (RMI), mit CORBA, mit XML-RPC, mit SOAP und REST. Hierzu gibt es auch wieder mehrere Programmieraufgaben. In diesem Zusammenhang lernt man auch weitere Entwurfsmuster kennen, z.B. Wert-Objekte, Fabrik-Dienste und Fassaden.

 

Es folgt ein Kapitel über softwaretechnische Infrastrukturen. Hier geht vor allem um Java EE und um .NET. Das Kapitel über eingebettete Systeme und Architekturmuster für diese fällt aus meiner Sicht recht knapp aus. Wichtiger scheint mir das Kapitel über Persistenz. Hier gibt es Einsendeaufgaben zur objektrelationalen Abbildung (ORM) und zur Java Persistence API (JPA). ORM war ja auch schon im Modul "SQL und relationale Datenbanken" Thema, aber ich finde es nicht schlecht, dass dieses Thema hier noch einmal auftaucht. Bei der objektrelationalen Abbildung geht es darum, Klassen, Assoziationen und Vererbungsstrukturen eines per OOA erstellen Fachkonzepts in sinnvoller Weise auf Tabellen einer relationalen Datenbank abzubilden. Hierfür gibt es mehrere Möglichkeiten, die je eigene Vorzüge und Nachteile haben.

 

Die restlichen Kapitel über GUI-Entwurfsmuster, den Entwurfsprozess, Qualitätssicherung der Architektur, Implementierung, Verteilung und Installation, Betrieb und Reverse Engineering werden nur noch durch Tests abgedeckt. Aufgrund des Umfangs des Moduls gibt es sehr viele Tests. Ich habe auch den Eindruck, dass im Abschlusstest breit geprüft wird.

 

Mein Tutor war der gleiche wie in SWT1, SWT2, Mobile Computing und Web-Design. Die Rückmeldungen zu meinen Einsendeaufgaben kamen meist schon am nächsten Tag. Besonders interessant war es natürlich, wenn meine Lösung nicht gestimmt hatte. Durch die schnelle Antwortzeit, konnte ich gut Rückfragen stellen und meine eingereichten Lösungen zum Teil in mehreren Schritten verbessern. Das war wieder sehr hilfreich für die Klausurvorbereitung.

 

Online- und Präsenzklausur

 

Bei der Online-Klausur kamen Themen dran, mit denen ich nicht unbedingt gerechnet hätte. Aufgrund der Gewichtung der Einsendeaufgaben erschienen mir, Entwurfsmuster, Arten der Netzkommunikation und Persistenz als die Kernthemen des Moduls, die man gründlich vorbereiten sollte. Aber hier kamen auch Aufgaben zu kleineren Themen. Wer Bonuspunkte will, sollte also den gesamten Kurs ernst nehmen.

 

In der Präsenzklausur kamen große Punktebringer dann schon aus den oben genannten Kernthemen. Es gab aber auch mehrere kleinere Aufgaben, die mit Wissensfragen Inhalte aus dem gesamten Modul abdeckten. Schon eine clever konstruierte Prüfung, wenn man checken will, ob die Studierenden wirklich alles bearbeitet und verstanden haben. Leider kamen auch die von mir nicht geliebten Verteilungsdiagramme wieder dran.

 

Fazit und Ausblick

 

Manche der vorgestellten Architektur-Muster waren recht komplex. Zum Teil habe ich bei diesem Modul gespürt, dass ich an die Grenzen meiner Abstraktionsfähigkeit komme. Man merkt deutlich, dass es ein Modul für fortgeschrittene Semester ist. Gut gefallen hat mir, dass hier die Umsetzung der Entwürfe in Code wieder eine größere Rolle spielt. SWT3 bildet eine gute Brücke zwischen den Modulen der Softwaretechnik und den Programmiermodulen. Ich finde insgesamt die Studienbereiche GdI und SWT gut aufeinander abgestimmt. Der Kurs hat mir wieder sehr viel Spaß gemacht, war aber für mich auch herausfordernd. Während ich bei anderen Modulen oft noch Wünsche formulieren konnte, was ich gerne noch alles gelernt hätte, war ich nach SWT3 endlich einmal "satt". Das kommt bei mir eher selten vor.

 

Ein Klausurergebnis habe ich noch nicht, aber ich hoffe sehr, dass die Mühe sich gelohnt hat und ich diesen anstrengenden Teil meines Studiums nun auch wirklich hinter mir lassen kann. Den "dicken Brocken" Softwaretechnik habe ich damit aber noch nicht geschafft. Auf mich warten noch immer die Module "Software-Management 1" und "Software testen". Ich brauche nun aber tatsächlich einen Themenwechsel, um nicht ständig von der gleichen geistigen Ressource zu zehren. Darum möchte ich nun endlich einmal das bislang von mir vernachlässigte Thema BWL angehen, um das auch Studierende der Web- und Medieninformatik nicht herumkommen. In den nächsten Wochen wird mich also das interne und externe Rechnungswesen beschäftigen. Nicht gerade eine Entwicklungsaufgabe, auf die ich mich freue, aber nachdem ich in den letzten Wochen sehr viel vor dem Bildschirm gesessen habe, wird es zumindest eine Abwechslung sein.

kurtchen

10:45 Uhr - Aktuelles für Studierende

 

Den Vortrag hielt zum ersten Mal Frau Kreissig von Springer Campus. Nach der Übernahme der W3L durch Springer Campus im Herbst, gab sie uns einige Informationen über die GmbH, die nun unsere Studiengänge weiterführt. Im Studienalltag haben wir ja nicht viel davon gemerkt. Das Konzept der Studiengänge und die gesamte Studienorganisation sind gleich geblieben. Insbesondere bleibt es bei der Kooperation mit der FH Dortmund, die am Ende unsere Abschlüsse verleiht. Und doch sind wir unter einem neuen Dach. Im Vortrag ging es darum, ein wenig mehr über dieses neue Dach zu erfahren.

 

Frau Kreissig gab uns ein kleines "who is who" der für uns relevanten Mitarbeiter von Springer Campus. Viele Namen und Gesichter waren uns ja schon bekannt, weil unsere gewohnten Ansprechpartner aus dem Studienbüro nun für Springer Campus tätig sind. Frau Kreissig selbst ist Biologin und arbeitet als Projektmanagerin für Springer Campus. Sie scheint durchaus IT-affin. Springer Campus ist eine Abteilung von Springer Nature, einem Verlag mit ca. 13000 Mitarbeitern. Und nein, Springer verlegt nicht die Bildzeitung! Das macht ein anderer Springer Verlag und ist ein häufiges Missverständnis.

 

Spannend für mich war eine Vorstellung der anderen Studiengänge, die über Springer Campus angeboten werden. Dies gilt vor allem für den B.Sc. Biologie, den es seit 1997 gibt. Dieser Studiengang ist nur ausgebildeten Laboranten zugänglich, also BTAs und MTAs mit Berufserfahrung. Ein Biologie-Studium beinhaltet naturgemäß viele Laborpraktika. TAs bringen durch ihre Ausbildung Vorkenntnisse mit, die sich in einem Fernstudium sonst kaum vermitteln ließen. Entwickelt wurde dieser Studiengang in Kooperation der Uni Mainz mit der Firma Bayer, die ihre Laboranten berufsbegleitend wissenschaftlich weiterbilden wollte. Inzwischen hat der Studiengang Teilnehmer von über 100 Firmen. Im Gegensatz zu unseren Informatik-Studiengängen, die als Online-Studiengänge konzipiert sind, folgt das Fernstudium Biologie dem Ansatz des blended learning. Es gibt alle 2 Wochen Präsenzen. Das erzwingt auch Zeitfenster für den Studieneinstieg, während wir Informatiker uns jederzeit einschreiben können. Ein Unterschied zu uns ist auch eine stabile Gruppe von 4-35 Studierenden, die über den Zeitraum des Studiums zusammenarbeitet und von einem festen Ansprechpartner betreut wird. Die Kosten sind mit ca. 15.000 Euro etwas höher als bei uns. Das hat damit zu tun, dass Laborpraktika betreuungsintensiv und teuer sind.

 

Wie bei uns steht auch bei den anderen Studiengängen von Springer Campus am Ende ein Abschluss einer staatlichen Hochschule, denn Springer Campus tritt bislang nicht als private Hochschule auf sondern kooperiert mit staatlichen Hochschulen. Neben dem Fernstudium Biologie gibt es seit 2015 ein Fernstudium Chemie und seit 2016 ein Fernstudium Elektrotechnik, beide mit einem ähnlichen Modell des blended learning. In Zukunft könnte es auch noch ein sozialwissenschaftliches Studium geben.

 

Für mich war das alles recht spannend, nicht zuletzt weil meine Partnerin Biologin ist. Ich hatte den Eindruck, dass vielen Lesern hier im Forum noch nicht bekannt ist, dass ein Fernstudium in Fächern wie Biologie und Chemie möglich ist. Darum wollte ich die Gelegenheit nutzen, das hier einmal vorzustellen.

 

FAQs aus dem Studienbüro

 

Für uns Studierende besonders relevant waren FAQs aus dem Studienbüro und eine anschließende Frage und Antwortrunde:
- Fachlich nicht wirklich essentiell aber für viele von uns doch von großer emotionaler Bedeutung: Die kleine Ente mit Doktorhut, die von der W3L traditionell mit der Bachelorurkunde überreicht wurde, bleibt auch unter Springer Campus erhalten. Das hatten tatsächlich viele Studierende gefragt. (Ich hatte mich nicht getraut, habe mich aber auch gefreut.)
- Da Springer Campus in Heidelberg sitzt, kann Heidelberg als neuer Prüfungsstandort angeboten werden. Bislang hat man das erst einmal versucht aber die Resonanz war gering. Darum wurde noch einmal abgefragt, ob ein Prüfungsstandort Heidelberg interessant ist und welche Zeiten "anreisekompatibel" wären.
- An Präsenztagen gibt es weiterhin nur Prüfungen in Dortmund, weil das Personal an diesen Tagen in Dortmund gebunden ist.
- Das Modul "Wissenschaftliches Arbeiten" ist nun Pflichtmodul in beiden Informatik-Studiengängen, weil sich in der Vergangenheit immer wieder mal formale Mängel bei der Abschlussarbeit unvorteilhaft auf die Abschlussnote ausgewirkt haben. Viele Studierende arbeiten in einem betrieblichen Umfeld und erleben dort wissenschaftliches Arbeiten nicht. Frau Kreissig rät dringend, die Möglichkeit zur Interaktion mit dem Betreuer zu nutzen. Für diejenigen Studierenden, die noch nach einer alten Studienordnung studieren und "Wissenschaftliches Arbeiten" nicht belegen müssen, wird es dennoch dringend empfohlen.
- Ein Notenspiegel bzw. eine Leistungsübersicht kann per Mail oder Post im Studienbüro angefordert werden.
- Verspätete Klausuranmeldungen können grundsätzlich nicht berücksichtigt werden. Die angegebenen Fristen, in der Regel 1,5 Wochen vor Prüfungstermin, sind verbindlich.
- Klausurkorrekturen erfolgen innerhalb von 6 Wochen. (Nach meiner Erfahrung hat man im Schnitt nach 3 Wochen ein Ergebnis.)
- Das Modul "Skriptsprachen" wurde aus dem Curriculum genommen und wird bis auf weiteres nicht mehr angeboten. Ein Grund dafür war, dass es inhaltlich nicht mehr ganz aktuell war, obwohl die letzte Auflage des Lehrbuches eigentlich noch gar nicht so lange her war. An diesem Punkt merkt man, dass sich in der Informatik viele Themen schnell weiterentwickeln.
- Als Ersatz für "Skriptsprachen" kann man das Modul "Web-Engineering" belegen. Hier geht es allerdings nicht allein um Javascript sondern um AJAX.

 

Thema war auch die Umstellung auf die neue Plattform, was anfangs für einigen Unmut gesorgt hatte. Allerdings gibt es inzwischen auch Studierende, die mit der neuen Plattform zufrieden sind. Viele gemeldete Bugs wurden anscheinend in recht kurzer Zeit behoben. Die gestiegene Auslastung der Plattform führte zwischenzeitlich zu längeren Antwortzeiten. Eine neue skalierbare Hardware soll ermöglichen, künftig schneller auf solche Situationen zu reagieren. Die Umstellung auf das neue Layout hatte übrigens nichts mit der Übernahme durch Springer zu tun sondern war seit längeren geplant und in Arbeit. Es war reiner Zufall, dass die Übernahme durch Springer und die Umstellung des Layouts zeitlich eng zusammenfielen. Da noch nicht alle gemeldeten Mängel restlos behoben werden konnten, besteht nach wie vor Wahlfreiheit zwischen und alter und neuer Plattform.

 

Bleibt zu sagen, dass ich natürlich sehr gespannt bin, wie sich diese Angelegenheit entwickelt. Ich selbst bin nach einer Weile zur alten Plattform zurück gekehrt, habe aber deswegen auch nicht mehr mitbekommen, was sich seitdem verbessert hat. Vielleicht kann mich Springer ja bald davon überzeugen, künftig mit der neuen Plattform zu lernen.

 

Im Rahmen des Vortrags von Frau Kreissig wurden auch wieder einige Hochschulzertifikate überreicht. Frau Weirich vom Studienbüro informierte parallel in einem anderen Raum über das Studiengangskonzept.

 

12:15 - Vortrag Prof. Dr. Uwe Klug zum Thema NoSQL-Datenbanken

 

Professor Dr. Uwe Klug von der FH Südwestfalen ist vielen Studierenden bekannt als Autor der Lehrbücher zum Datenbank-Modul. Dort geht es in erster Linie um relationale Datenbanken und die Abfragesprache SQL. In seinem Vortrag ging es um alternative Datenbankkonzepte. Hier eine kleine Zusammenfassung:

 

Das Konzept der relationalen Datenbank ist seit Jahrzehnten etabliert. Die Grundidee ist die Speicherung von Daten in Tabellenform. Eine mögliche Metapher hierfür ist das Adressbuch. Es hat auf jeder Seite Daten im gleichen Format, z.B. erst der Name, dann die Adresse, dann die Telefonnummer und so weiter. Relationale Datenbanken halten stark strukturierte Daten.

 

Im Bild der Tabelle sind die Tabellenüberschriften die Felder und stehen für Typen von Daten, die in fester Reihenfolge enthalten sind. (Unter Umständen dürfen Felder immerhin leer bleiben.) Die Zeilen enthalten die eigentlichen Daten und stehen für gespeicherte Datenobjekte, die Datensätze. Kennzeichnend für relationale Datenbanken ist die starke und starre Strukturierung der Daten. Sie ermöglicht einen feingranularen Zugriff auf Daten mit teils raffinierten Abfragen, die in der Sprache SQL formuliert werden. Zu Beginn der Datenbankentwicklung werden die zu speichernden Daten modelliert und das Modell normalisiert, um Redundanzen zu eliminieren.

 

Zentrale Eigenschaften einer relationalen Datenbank sind:
- relationale Integrität: Sie gewährleistet die Datenintegrität, z.B. durch Check-Regeln, Trigger und die Verwendung von Fremdschlüsseln zur Vermeidung redundanter (und möglicherweise inkonsistenter) Datenspeicherung.
- Transaktionssicherheit: Eine Folge von SQL-Anweisungen wird ganz oder gar nicht bearbeitet. Kann sie nicht ganz bearbeitet werden, gibt es einen Rollback, bei dem die bisherigen Anweisungen der unvollständigen Transaktion rückgängig gemacht werden. Wie Transaktionssicherheit intern sichergestellt wird, muss der Datenbankentwickler nicht wissen. Das macht für ihn das RDBMS.

 

Hinter relationalen Datenbanken steht eine bestimmte kaufmännische Denkungsart. Im Vordergrund steht die Konsistenz der Daten, die jederzeit aktuell und widerspruchsfrei sein sollen.

 

Inzwischen haben sich aber Anforderungen an Datenbanken geändert. Datenbanken werden nicht mehr vorwiegend in kaufmännischen Anwendungen eingesetzt sondern z.B. auch in Web-Applikationen. Und dort gelten oft andere Anforderungen, die von relationalen Datenbanken nicht mehr optimal erfüllt werden. Daten in Web-Applikationen sind oft nur schwach strukturiert. Feingranulare Abfragen stehen nicht immer im Mittelpunkt. Dafür sind die Nutzerzahlen oft extrem hoch.

 

Es gibt im wesentlichen 2 Strategien, auf steigende Nutzerzahlen und Datenmengen zu reagieren:
1. vertikale Skalierung: Ich kaufe einen schnelleren Rechner mit größerer Platte. Aber irgendwann habe ich den schnellsten Rechner und die Nutzerzahlen zwingen meinen Datenbankserver trotzdem in die Knie.
2. horizontale Skalierung: Ich verteile meine Daten auf mehrere Server. So muss jeder Server nur einen Teil der Anfragen bewältigen. Jetzt kann ich auf steigende Nutzerzahlen reagieren, indem ich einfach immer mehr Server hinstelle. Damit handle ich mir aber ein neues Problem ein. Wenn Daten redundant auf mehreren Servern liegen, muss ich sie bei Änderungen konsistent halten.

 

Mit den Web-Applikationen kommen neue Wünsche und Anforderungen an Datenbanken:
- Ich möchte große Datenmengen verteilt speichern.
- Ich möchte Schema-Änderungen WÄHREND der Nutzung des DBMS durchführen können und nicht etwa gezwungen sein, für so etwas meine Server vom Netz zu nehmen.
- Ich möchte mit schwach strukturierten Daten arbeiten.
- Mein System soll bei einem Ausfall einzelner Server nicht zusammenbrechen.
- Die Aktualität und Konsistenz der Daten ist grundsätzlich weiter wichtig, aber Schnelligkeit der Informationsbereitstellung und Ausfallsicherheit sind mir wichtiger.

 

Gerade die Schnelligkeit ist bei Web-Anwendungen sehr wichtig. Wenn mein Kunde in meinem Shop nach einem Artikel sucht und mein Server braucht zu lange, um eine Auswahl zu präsentieren, wird mein Kunde nach wenigen Sekunden einen neuen Tab aufmachen und schauen, ob mein Mitbewerber schneller ist. Das möchte ich vermeiden.

 

In diesem Zusammenhang ist das CAP-Theorem von Eric Brewer relevant. CAP steht für Consistency (Integrität der Daten), Availability (Schnelle Antwortzeiten) und Partition Tolerance (Ausfalltoleranz). Das CAP-Theorem besagt, dass ich bei einer Datenbank in verteilter Umgebung nicht alles zugleich haben kann. Bei mindestens einer der 3 Anforderungen muss ich Kompromisse machen. Das CAP-Theorem lässt sich mit formalen Mitteln beweisen. Es gibt hier also kein Entkommen. Und darum bestimmen die Anforderungen meines Geschäftsmodells, was für ein DBMS ich brauche. Und das ist eben immer häufiger keine klassische relationale Datenbank.

 

NoSQL-Datenbanken machen den Kompromiss bei der Konsistenz zugunsten von Ausfallsicherheit und Verfügbarkeit. Das ist für Web-Anwendungen typisch. Ein Beispiel wäre ein Web-Shop, über den Artikel verkauft werden. Er hat 2 Knoten, einen in Hamburg, einen in München. Diese synchronisieren ihre Verkäufe automatisch, so dass dem Kunden jederzeit angezeigt wird, ob sein gewünschter Artikel noch auf Lager ist. Durch eine Störung im Netz wird die Verbindung zwischen Hamburg und München für ein paar Minuten unterbrochen. Es gibt nun 2 Möglichkeiten, darauf zu reagieren:
1. Weil ich die Knoten nicht mehr synchronisieren kann, verkaufe ich nichts mehr. So kommt nie ein Kunde in die Situation, einen Artikel zu bestellen, den ich nicht zum versprochenen Zeitpunkt liefern kann. Aber mein Kunde ärgert sich, dass ich ihm minutenlang nichts anbieten kann und bestellt stattdessen bei der Konkurrenz.
2. Ich verkaufe weiter. Möglicherweise verkaufe ich einen knappen Artikel mehrfach. Dann muss ich einen Kunden informieren, dass ich doch nicht zum versprochenen Zeitpunkt liefern kann. Nicht optimal, aber mein Kunde wird das vermutlich eher akzeptieren als einen Web-Shop, der minutenlang nicht reagiert.

 

Die Aufweichung der Konsistenz beschreibt man mit der Abkürzung BASE. Die steht für Basically Available, Eventually Consistent. Konsistenz wird nicht aufgegeben, aber man fasst sie als Übergangsprozess auf. Zeitweise kann es zu Inkonsistenzen kommen. Sobald eine Verbindung wieder verfügbar wird, wird die Inkonsistenz behoben. Möglich wird dies durch eine Versionierung der Datensätze. Vermittels einer Versionsnummer kann ich nachvollziehen, wie und in welcher Reihenfolge sich Datensätze verändert haben. Bei der Synchronisation paralleler Prozesse fällt nun möglicherweise auf, dass eine Versionsnummer doppelt existiert, weil ein paralleler Prozess den gleichen Datensatz schon geändert hat. Es gibt dann verschiedene Strategien, wie man mit diesem Problem umgehen kann. Welche man wählt, hängt vom Anwendungsfall ab.

 

Vorgestellt wurde auch die Technik des Map Reduce. Dies ist ein zweischrittiges Verfahren, das von Google entwickelt wurde. Es dient der verteilten Ausführung von Operationen über große Datenmengen (von mehreren Terabyte!). Auf verschiedenen Knoten wird parallel gesucht (map). Dann werden die Zwischenergebnisse zusammengeführt (reduce). Map Reduce ist ein Konzept. Es ist somit unabhängig von eingesetzter Hardware. Angewendet wird es z.B. in der CouchDB.

 

Eine Vorstellung der CouchDB bildete den letzten Teil des Vortrags. Sie kann große Datenmengen speichern, die keine feste Struktur aufweisen. Die Daten werden in Form von JSON-Objekten abgelegt. CouchDB hat einen nativen Support für BLOBS (binary large objects). Sie ist quelloffen, einfach zu installieren und bietet eine gute Dokumentation. Entwickelt wurde sie in der wenig bekannten Sprache Erlang, die vor allen in der nebenläufigen Programmierung Stärken hat.

 

Das JSON-Format ist ein textbasiertes (und menschenlesbares) Format, das etwas kompakter schreibbar ist als XML. Es besteht aus Name-Wert-Paaren und ist letztlich eine Komma-getrennte Liste von Eigenschaften. Mit diesem Format kann man schwach strukturierte Daten gut beschreiben. Die Reihenfolge von Feldern kann sich ändern und Felder können auch weggelassen werden.

 

Zum Abschluss wurde noch auf den Unterschied zwischen Replikation und Clustering einer Datenbank eingegangen. Bei der Replikation kopiere ich eine vollständige Datenbank. So kann ich sie redundant auf verschiedenen Knoten ablegen und die Anfragen über die Knoten verteilen. Fällt ein Knoten aus, bleibt die DB verfügbar, wenngleich die Reaktionszeiten womöglich steigen, weil sich Anfragen nun auf weniger Knoten konzentrieren. Replikation findet eine natürliche Grenze in der Speicherkapazität des Knotens mit der geringsten Kapazität. Wenn dieser die gesamte Datenbank nicht mehr fassen kann, muss ich die Datenbank aufteilen. Das nennt man Clustering.

 

Beim Clustering liegen verschiedene Teile der Datenbank auf verschiedenen Knoten. Dadurch muss ich Anfragen eventuell so filtern, dass sie an den richtigen Knoten gerichtet werden, der die relevanten Daten besitzt.

 

Ich habe mich sehr gefreut, Herrn Klug einmal "in Aktion" zu erleben, weil sein Modul "Relationale Datenbanken und SQL" für mich bislang zu den Highlights meines Studiums zählt. Auch die Betreuung durch ihn fand ich damals sehr gut. Inhaltlich waren mir einige der vorgestellten Themen noch aus dem Modul geläufig, aber ein bisschen Auffrischung kann ja nie schaden.

 

13:15 Uhr - Vortrag Prof. Dr. Peter Weber über E-Commerce

 

Den Abschluss des Tages bildete ein Vortrag von Prof. Dr. Peter Weber über E-Commerce. Herr Weber unterrichtet an der FH Südwestfalen und ist einer der Autoren des Lehrbuches "Basiswissen Wirtschaftsinformatik", ein einführendes Lehrbuch für die Wirtschaftsinformatiker in unserem Studiengang. Herr Weber war ein engagierter Redner und konnte mich für sein Thema begeistern. (Obwohl ich bei BWL-Themen eigentlich nur schwer in die Gänge komme.) Leider konnte ich nicht mehr den gesamten Vortrag hören, weil ich ein Ticket mit Zugbindung hatte. Darum kann ich hier keinen vollständigen Bericht liefern. Spannend war für mich vor allem seine Mitwirkung am Einzelhandelslabor Südwestfalen mit dem CCEC (Competence Center E-Commerce).

 

Das Projekt hat als Zielgruppe kleine Händler und läuft seit April 2016. Ziel ist, die Multi-Channel-Kompetenz des inhabergeführten stationären Einzelhandels zu stärken. Die Ladenbesitzer sind meist schon mit den Anforderungen des Tagesgeschäfts ausgelastet, haben oft wenig Personal und machen das meiste alleine. Das ist natürlich eine Hürde, wenn es darum geht, sich mit neuen Formen der Kundeninteraktion auseinander zu setzen. Und doch wäre das bitter nötig, denn die aktuelle Situation stellt sich wie folgt dar:
- Der Online-Handel hat zweistellige Wachstumsraten.
- Für stationäre Einzelhändler entwickelt sich der Handel nicht so gut.
- Man prognostiziert, dass in den nächsten 5 bis 7 Jahren 30% der Umsätze der stationären Einzelhändler verschwinden.
- Viele Händler nutzen bereits IT.
- Sie nutzen sie aber vor allem zur Verwaltung.
- Seltener nutzen sie IT für Marketing, Service und Vertrieb.

 

Ein mögliches Konzept, den lokalen Handel zu stärken sind lokale Shopping-Plattformen. Sie stellen ein grundlegendes Prinzip des Online-Handels auf den Kopf: Ich kann alles von jedem kaufen, egal wo ich bin, egal wo er ist.

 

In einer lokalen Shopping-Plattform gilt dagegen:
- Ich kann nur kaufen, wenn ich aus einer bestimmten Region bin.
- Ich kann nur kaufen, was ein Händler aus einer bestimmten Region anbietet.


Die Standortbeschränkung - nach klassischer Logik ein Nachteil - ist das Alleinstellungsmerkmal. Im Prinzip ist es eine Form des ethischen Einkaufs und richtet sich an Kunden, die zwar bequem online einkaufen wollen, aber damit dennoch lokale Händler unterstützen wollen, z.B. weil sie auch in Zukunft noch gerne Läden in ihrer Stadt haben möchten.

 

Ziel des CCEC ist, die Ladeninhaber zu qualifizieren, so dass sie Online-Medien nutzen können, um mit ihren Kunden in Kontakt zu treten. Damit ist natürlich etwas anderes gemeint als der x-te Online-Shop.

 

Interessant ist in diesem Zusammenhang der ROPE-Effekt. Er ist sozusagen das Gegenteile eines Phänomens, das viele Einzelhändler beschreiben und beklagen. Die Kunden kommen in den Laden, schauen sich dort die angebotenen Waren an, und kaufen sie anschließend billiger online. Das hat wohl jeder schon einmal gehört. ROPE steht dagegen für "research online, purchase offline". Der Kunde recherchiert im Internet, z.B. in einem Online-Shop, was es für Artikel gibt. Dabei nutzt er zum Beispiel auch die Bewertungen anderer Kunden, Photos, Artikelbeschreibungen und was es sonst für Vorzüge gibt. Dann geht er in einen lokalen Laden und kauft das Produkt. "Macht kaum einer", hätte ich gedacht, obwohl ich das selbst oft so mache und es auch bei meinen Familienmitgliedern schon oft beobachtet habe. Anscheinend schätzt man, dass 38% der Kunden das so machen. Es ist aber schwer, das zu messen. Denn im Gegensatz zum Online-Handel, der seine Kunden hervorragend "trackt", weiß der Einzelhandel wenig darüber, wie Kunden zu ihrer Kaufentscheidung kommen.

 

Ein weiteres Projekt, das sehr spannend klang, ist ARSuL (Augmented Reality basierte Unterstützung für das Lernen im Sanitär-Heizung-Klima-Handwerk). Die Ausgangsituation ist hier folgende:
- Die Vielfalt an Heizungssystemen hat stark zugenommen.
- Ein Wartungstechniker braucht Erfahrung mit vielen verschiedenen Systemen, z.T. sehr neue, z.T. sehr alte.
- Es gibt Nachwuchsmangel im Handwerk. Junge Techniker kennen sich mit der Vielfalt der Systeme noch nicht aus.
- Erfahrene Kräfte sind oft vor Ort nicht verfügbar.
- Zum Teil sind erfahrene Kräfte körperlich auch nicht mehr belastbar genug, um die Arbeiten vor Ort durchzuführen.

 

Die Lösungsidee:
- Die jungen Techniker tragen Datenbrillen und können sich bei Problemen mit einem erfahrenen Techniker verbinden lassen.
- Der sieht, was sie sehen, hat eventuell in der Zentrale sogar ein ähnliches System vor sich und kann sie durch die Reparatur coachen.
- Er kann per Augemented Reality eventuell direkt Hilfestellungen für die jungen Techniker vor Ort einblenden.

 

Fazit

 

Der Präsenztag hat mal wieder viel Spaß gemacht und viel interessanten Input gebracht. Was ich hier nicht beschreiben kann, ist der informelle Austausch mit Kommilitonen über Erfahrungen mit Modulen, Aufgaben, Prüfungen. Und der allgemeine menschliche Austausch über die spezielle Situation des Fernstudiums neben Beruf und Familie. Dadurch lösen sich die vielfältigen Belastungen zwar nicht auf, aber man merkt doch, dass noch andere Menschen diesen nicht alltäglichen Weg gehen. Das gibt dann doch ein wenig Kraft für die nächsten Herausforderungen.

kurtchen

Modul: Web-Anwendungen 2

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.

kurtchen

Modul: Softwaretechnik 2

Welche Rolle spielt Softwaretechnik 2 im Studium?

 

Das Modul "Softwaretechnik 2" wird - wenig überraschend - dem Studienbereich "Softwaretechnik" zugerechnet, der in den Studiengängen von Springer Campus einen recht großen Raum einnimmt. Das Modul ist Pflicht, sowohl im Studiengang "Web- und Medieninformatik" als auch im Studiengang "Wirtschaftsinformatik". Als inhaltliche Voraussetzung gilt das Modul "Softwaretechnik 1", bei dem es um Basistechniken und die Basiskonzepte Statik, Dynamik und Logik geht. Dieser Einschätzung würde ich mich anschließen. In SWT1 wird vor allem eine solide Grundlage in UML vermittelt, die man in SWT2 braucht. Springer Campus empfiehlt, auch das Modul "Softwaremanagement 1" vorher zu belegen, weil es das Verständnis von SWT2 erleichtere. Dazu kann ich nichts näheres sagen, weil ich SWM1 nicht vorher belegt hatte. Ich hatte den Eindruck, mit dem Stoff gut zurecht zu kommen und SWM1 als Grundlage nicht unbedingt zu brauchen. Möglicherweise wären mir die Kursabschnitte zur Aufwandsschätzung so leichter gefallen.

 

SWT2 ist auch ein Pflichtmodul in den Weiterbildungszertifikaten "Requirements Engineer", "Software-Architekt" und "Software-Manager". Wer sich für eine dieser wissenschaftlichen Weiterbildungen interessiert, sei es als Etappenziel auf dem Weg zum Bachelor oder auch als eigenständige Weiterbildung, der muss sich mit den Inhalten dieses Moduls beschäftigen.

 

Das Lehrbuch

 

Inhaltlich geht es in SWT2 um Requirements Engineering, Aufwandsabschätzung und die Modellierung von Anforderungen. Ein neues Lehrbuch bekommt man nicht. Man bearbeitet die verbleibenden Kapitel vom (hervorragenden) "Lehrbuch der Softwaretechnik - Basiskonzepte und Requirements Engineering" von Helmut Balzert, welches ja schon SWT1 zu Grunde lag. Während SWT1 mit über 400 Seiten ein umfangreicher Kurs war, fällt SWT2 mit nur ca. 150 restlichen Seiten deutlich kompakter aus. Ich habe den Eindruck, dass sich das nicht ganz im Zeitaufwand niederschlägt. Viele Kapitel zum Requirements-Engineering sind vergleichsweise trockene Themen, durch die man sich mühsam durchbeißen muss. In SWT1 nahmen große UML-Diagramme viel Raum auf den Seiten ein, so dass man oft schneller voran kam. Dieses Modul ist etwas textlastiger. Gleichwohl scheint mir, dass der Arbeitsaufwand ungleichmäßig verteilt ist. Ich hätte es besser gefunden, die Kapitel zur Logik aus SWT1 noch SWT2 zuzuteilen. Allerdings ginge dabei die klare thematische Gliederung der Module verloren. Wahrscheinlich muss man sich damit abfinden, dass die Module trotz formal gleichem Workload mal anstrengender und mal etwas leichter ausfallen. Dies bezieht sich allerdings nur auf den Arbeitsumfang. Inhaltlich ist SWT2 anspruchsvoll und relevant.

 

Requirements Engineering

 

Beim Requirements Engineering geht es im wesentlichen um das Erfassen von Anforderungen für Software-Projekte. In der Vergangenheit sind immer wieder große Software-Projekte spektakulär gescheitert. Ein wesentlicher Grund war, dass die Anforderungen an das Produkt zu Beginn nicht präzise ermittelt wurden, Entwurf und Implementierung also schon vorangeschritten waren, als wesentliche Anforderungen erst bekannt wurden. So etwas endete oft damit, dass sich der erstellte Code als unbrauchbar erwiest, weil der Entwurf schon in den Grundzügen an den Anforderungen vorbei ging. Die nötigen Änderungen wären teurer gewesen als ein kompletter Neubeginn. Requirements Engineering beschäftigt sich mit Techniken und Vorgehensweisen, um relevante Anforderungen zu Beginn eines Projektes (und im laufenden Projekt) zu ermitteln, um ausufernde Kosten, Terminverzögerungen oder gar ein Scheitern des Projektes zu vermeiden.

 

Das klassische Vorgehen ist ein dreistufiges. Die Anforderungen werden aus Kundensicht definiert. Das Ergebnis ist ein Lastenheft, das i.d.R. auch Angebotsgrundlage ist. Dann werden die Anforderungen aus dem Lastenheft spezifiziert. Das Ergebnis ist das deutlich umfangreichere Pflichtenheft, zu dem auch Abnahmekriterien gehören. Die im Pflichtenheft spezifizierten Anforderungen werden dann klassischerweise in eine fachliche Lösung in Form eines OOA-Modells überführt. Damit sind wir aber schon im Bereich Anforderungs-Modellierung.

 

Es gibt aber auch agile Softwareentwicklung. Hier ist das Ziel mit möglichst wenig Dokumenten außer dem Code auszukommen. Ein Kunde oder Kundenrepräsentant wird ins Entwicklungsteam integriert, die Anforderungen werden in Form von User Stories erhoben, die beschreiben, was das Softwaresystem für die Benutzer leisten soll. Kennzeichnend für agile Entwicklung ist, dass die Anforderungen nicht vollständig vor sondern nach und nach während des Projektes ermittelt werden.

 

Der inhaltliche Fokus von SWT2 liegt aber klar auf dem klassischen sequentiellen Vorgehen. Im Rahmen der Einsendeaufgaben erstellt man auch selbst ein Lasten- und ein Pflichtenheft, was sich vergleichsweise lange hinzieht und ungewohnt viel Schreibarbeit ist. Hier geht es unter anderem darum, Anforderungsschablonen anzuwenden, die eine klare inhaltliche Gliederung vorgeben und zum Teil auch mit einheitlichen Formulierungen arbeiten. Hier muss man sich ein bisschen disziplinieren. Man muss zum Beispiel sehr präzise unterscheiden, was ein System leisten SOLL und was es leisten MUSS. Beim Pflichtenheft ist es wesentlich, Abnahmekriterien zu formulieren, die eindeutig überprüfbar sind. Hier kam es mir tatsächlich einmal zu Gute, dass ich eine pädagogische Ausbildung habe. Bildungs- und Förderziele sollten ebenfalls so formuliert sein, dass sie konkretes und beobachtbares Verhalten beschreiben, damit man nachprüfbar ist, ob der Lernende sie erreicht hat. Schwammige Formulierungen wie "das Sozialverhalten der Schüler soll sich verbessern", lassen viel Interpretationsspielraum. Man kann mir so zwar nicht beweisen, dass meine Maßnahme wirkungslos war, aber ich kann umgekehrt auch nicht beweisen, dass ich etwas erreicht habe. Hier sah ich also eine gewisse Analogie, die mir das Verständnis erleichterte.

 

Aufwandsschätzung

 

In den folgenden Kapiteln geht es um das Schätzen des Entwicklungsaufwandes. Das ist ein sehr wichtiger Schritt, weil ein Unternehmen, das Software entwickelt, dem Kunden ein Angebot machen muss. Schätzt man den Aufwand zu hoch ein, geht der Kunde zu einem günstigeren Mitbewerber und man bekommt den Auftrag nicht. Schätzt man ihn zu niedrig ein, sind die Entwicklungskosten höher als der vereinbarte Preis und man verliert Geld. Eine möglichst gute Aufwandsschätzung ist also wesentlich für den wirtschaftlichen Erfolg, auch wenn es gute Gründe geben kann, eine Software unter den tatsächlichen Entwicklungskosten anzubieten. Zum Beispiel weil man damit in eine neue Anwendungsdomäne vordringen kann und sich eine Codebasis erarbeitet, die man in künftigen, ähnlichen Projekten wiederverwenden kann. Solche Entscheidungen sollte man dann aber bewusst und strategisch treffen.

 

Aufwandsschätzung ist leider alles andere als einfach. Im Kurs lernt man verschiedene Schätzverfahren kennen, wozu auch algorithmische Verfahren wie Function Points oder Object Points gehören. Viele der Verfahren sind selbst recht aufwendig, so dass allein die Durchführung der Schätzung schon beträchtliche Kosten verursacht. Auch formalere Verfahren wie Functions Points müssen mit Erfahrungswerten aus dem Unternehmen sozusagen kalibriert werden, um ermittelte Aufwandspunkte in Entwicklermonate umrechnen zu können. Hier spielen viele Faktoren eine Rolle. Eine Rolle spielt zum Beispiel die Erfahrung der Entwickler mit ähnlichen Projekten, der Anteil von Code, der wiederverwendet werden kann, aber auch die Sprache, in der entwickelt werden soll.

 

Natürlich darf man nicht erwarten, allein auf Grundlage eines Studienmoduls in der Lage zu sein, eine Aufwandsschätzung vorzunehmen. Man lernt Methoden kennen, mit denen Unternehmen versuchen, dieses Problem zu lösen. Man lernt relevante Begriffe und Konzepte. Und man entwickelt ein Bewusstsein, für die damit verbundenen Probleme. Einsendeaufgaben hier beinhalten z.B. das Bestimmen von Function Points für ein skizziertes Projekt.

 

Anforderungen modellieren

 

Im letzten Kursabschnitt geht es um objektorientierte Analyse, also das Erstellen eines OOA-Modells auf Grundlage einer Spezifikation. Wichtigstes Ergebnis ist in der Regel ein UML-Klassendiagramm, das die Statik des Systems modelliert. Der Kurs vermittelt 10 sogenannte OOA-Muster, wiederkehrende Formen der Verknüpfung von Klassen, mit charakteristischer Semantik und charakteristischen Multiplizitäten. Hier muss man wieder Diagramme zeichnen und dieser Kursteil war dann schon wieder lebendiger und näher dran an der Programmierung. Für mich persönlich war das der Teil des Kurses, der mir am meisten Spaß gemacht hat. Eine typische Einsendeaufgabe hier wäre das Wiedererkennen der behandelten Muster in kleinen Spezifikationen, die man modellieren soll.

 

Prüfungen

 

Online-Test und Online-Klausur deckten die Inhalte des Kurses noch einmal breit ab. Eine kleine Warnung vorweg: Ich hatte ein Lastenheft mit Glossar zu schreiben. Da steckt viel Schreibarbeit drin und es ist nicht ganz einfach, sich die Zeit gut einzuteilen. Hier habe ich Punkte verschenkt, weil ich mich mit Schreiben zu lange aufgehalten habe und die verlorene Zeit beim Modellieren nicht mehr rausholen konnte. Hilfreich wäre vielleicht, gewisse Text- und UML-Schablonen schon griffbereit zu haben.

 

Ich hatte den gleichen Tutor wie in SWT1. Auch in SWT3 er mich voraussichtlich wieder begleiten. Die Kurse bauen aufeinander auf und es ist sehr schön, hier einen kontinuierlichen Ansprechpartner zu haben, der einen durch einen längeren Lernprozess begleitet.

 

Die Präsenzklausur deckte die Inhalte breit ab, wenn auch mit unterschiedlicher Gewichtung. Ich hatte relativ viel Modellierung, was mir eigentlich Spaß gemacht hat. Mal sehen, ob ich das auch in eine gute Note umsetzen konnte. Der Zeitdruck war im Vergleich zur Online-Klausur geringer, so dass die Online-Klausur hier als gute Vorbereitung gelten kann. So ist es mir am liebsten.

 

Ausblick

 

Ich bin nun sehr gespannt auf SWT3, wo es unter anderem um Entwurfsmuster gehen wird. Laut meinem Tutor wird dort auch wieder mehr programmiert. Darauf freue ich mich schon richtig.

kurtchen

Stand des Studiums

4. Semester - Sommersemester 2017

- Web-Anwendungen 2

- Softwaretechnik 2

 

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

 

Zusätzlich belegte Module an anderen FHs

- theoretische Informatik (WINGS Wismar)

- Programmieren in C++ (Virtuelle Hochschule Bayern)

 

Aktuell in Bearbeitung bei Springer Campus

- Softwaretechnik 3

- CMS

- Data Mining

 

Noch geplant für das 4. Semester

- künstliche Intelligenz (WINGS WISMAR)

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.

kurtchen

Modul: IT-Sicherheit

Das Modul "IT-Sicherheit" ist ein Pflichtmodul im Studiengang "Web- und Medieninformatik" und wird dort dem Studienbereich "IT-Systeme" zugerechnet. Laut Studienplan wird es für das 3. Semester empfohlen. Als sinnvolle Vorbereitung werden die Module "Angewandte Mathematik" und "Computernetze" genannt. Dieser Empfehlung möchte ich mich anschließen. Wer Computernetze noch nicht belegt hat, dürfte es schwierig finden, den Kapiteln zur Sicherheit in Netzen zu folgen. Ein grundlegendes Verständnis für die im Internet üblichen Protokolle und sowie Kenntnis der OSI-Referenzmodells sowie des TCP/IP-Referenzmodells ist nötig. Dies wird zwar im Kurs noch einmal kurz behandelt, hätte mir aber in der knappen Form nicht gereicht, um die darauf aufbauenden Ausführungen zu verstehen. Mathe3 ist hilfreich, weil dort eine Einführung in kryptographische Basistechniken gegeben wird und einige kryptographische Verfahren auch schon recht detailliert behandelt werden. Als Beispiele seien hier die asymmetrische Verschlüsselung mit RSA sowie der Schlüsseltausch nach Diffie-Hellman genannt. Diese Themen werden zwar auch im Modul "IT-Sicherheit" genau erklärt, aber die mathematischen Grundlagen werden in Mathe3 ausführlicher behandelt und man hat in den Übungsaufgaben die Chance, aktiv damit zu arbeiten und ein "Gefühl" für diesen Stoff zu bekommen.

 

Studierende im Studiengang "Wirtschaftsinformatik" müssen "IT-Sicherheit" nicht belegen, dürfen es aber als Vertiefungsmodul belegen. Da Sicherheit im Internet und im Intranet von Firmen und Organisationen angesichts immer raffinierterer Bedrohungen immer wichtiger wird, halte ich es für sehr sinnvoll, gerade dieses Modul in seinen Studienplan aufzunehmen. Dafür muss man allerdings in Kauf nehmen, dass die 5 ECTS bei diesem Modul ein bisschen mühsamer erarbeitet werden müssen als in den meisten anderen Modulen.

 

Auch wenn die mathematischen Grundlagen in Mathe3 gelegt wurden: IT-Sicherheit hat viel mit Kryptographie zu tun und Kryptographie hat viel mit Mathematik zu tun. Für ideal hielte ich, wenn der zeitliche Abstand zu Mathe3 und Computernetze nicht zu groß wäre. Manche Kommilitonen, die IT-Sicherheit lange nach diesen beiden Modulen belegt hatten, klagten darüber, wie schwer es ihnen gefallen war, den inhaltlichen Bezug wieder herzustellen.

 

Grundlage für den Kurs ist das Buch "IT-Sicherheit" von Werner Poguntke. Es ist mit knapp 300 Seiten ein bisschen dünner als das durchschnittliche Lehrbuch der W3L. Wie bei vielen Lehrbüchern mit mathematischem Inhalt, wird hier auf knappen Raum viel ausgedrückt. Man sollte also nicht erwarten, diesen Kurs besonders schnell durcharbeiten zu können. Dies gilt insbesondere für das zweite Kapitel, in dem die kryptographischen Verfahren und Protokolle vorgestellt werden. Diese knapp 100 Seiten bilden das Fundament, auf dem die folgenden Kapitel zur Computersicherheit und zur Sicherheit in Netzen aufbauen. Hier wird man am meisten Arbeit investieren müssen. Die gute Nachricht: Hat man diese schwere Kost verdaut, ist der Rest des Kurses schon fast ein nettes kleines Dessert. Es ist erstaunlich, wie schnell man begreift, wenn die theoretische Grundlage erst mal da ist.

 

Das Buch finde ich hervorragend geschrieben. Besonders gefällt mir am Stil des Autors, dass er innerhalb des Buches inhaltliche Bezüge herstellt, indem er sowohl auf folgende Kapitel und Abschnitte verweist, die auf dem aktuellen Thema aufbauen werden, als auch auf vorangehende Abschnitte zurück verweist. So weiß man einerseits, wofür der aktuelle Stoff später nützlich sein wird; und andererseits, wo man noch einmal nachschlagen müsste, wenn man etwas vergessen hat. Letzteres ginge natürlich auch mit dem Index, aber so kann man viel schneller arbeiten. Gerade Gliederung und Aufbau des Stoffes finde ich sehr gelungen. In meinen Augen eines der besten Lehrbücher im Studiengang.

 

Nach dem einführenden ersten Kapitel steigt im zweiten Kapitel "Kryptologische Verfahren und Protokolle" das Niveau rasch an. Hier geht es um:
- symmetrische Verschlüsselungsverfahren wie DES, 3DES und AES
- Stromchiffren wie z.B. der im Mobilfunk verwendete A5
- asymmetrische Verschlüsslung z.B. mit RSA oder mit elliptischen Kurven
- Digitale Signaturen
- kryptographische Hashfunktionen, wie z.B. SHA
- Zero-Knowledge-Protokolle
- Fiat-Shamir-Algorithmus
- Schlüsselmanagement und Schlüsseltausch, z.B. nach Diffie-Hellman
- Zertifikate
- Kryptoanalyse
- Steganographie und digitale Wasserzeichen

 

Die Aufgaben für diesen Kursteil können relativ schwierig sein, weil es hier schon recht mathematisch zugehen kann. Reine Reproduktion genügt hier oft nicht. Hier können auch mal eigene Ideen gefragt sein, wenn z.B. ein Beweis geführt werden soll.

 

Im dritten Kapitel "Computersicherheit" geht es z.B. um:
- Ansätze der Zugangskontrolle
- Authentifikation durch Wissen
- Sichere Passwörter
- Authentifikation durch Besitz, z.B. Smartcards
- Authentifikation bei GSM
- Authentifikation durch biometrische Merkmale
- Authentifikation in verteilten Systemen
- Kerberos
- Zugriffkontrolle, z.B. bei UNIX
- Sicherheit von Betriebssystemen
- Trusted Computing, also den Versuch Sicherheit in die Hardware zu verlagern
- Softwaregesteuerte Angriffe
- Viren, Würmer, Trojaner, Malware
- Sichere Software
- Sicherheit in eingebetteten Systemen

 

Mit den fachlichen Grundlagen aus dem anstrengenden zweiten Kapitel kann man sich diese Themen überraschend leicht erarbeiten. Hier merkt man, dass das didaktische Konzept gut funktionert.

 

Im vierten und letzten Kapitel "Sicherheit in Netzen" geht es dann um:
- Firewalls, Paketfilter, Identifizierung von Angreifern
- Sicherheit auf den verschiedenen Schichten des Internets, also auf der...
- IP-Schicht mit IPSec
- TCP-Schicht z.B. mit SSH und SSL
- auf der Anwendungsschicht, z.B. beim Remote Terminal Access oder beim File Transfer
- Sicherheit von E-Mails
- Sichere Webanwendungen
- Sicherheit in GSM-Netzen
- Smartphones und Appstores
- Anonymität in Netzen und das Mix-Konzept
- Sicherheit im Intranet
- ARP-Poisoning
- WLAN, Bluetooth und VoIP

 

Dieses Kapitel ist wieder ein bisschen schwieriger, weil man sich an diverse technische Details aus dem Modul "Computernetze" erinnern musss. Auf der anderen Seite ist es besonders spannend, weil jeder, der sich im Internet bewegt, sich auch mit Fragen der Sicherheit befassen muss. Hier sind bei mir - wieder auf der Grundlage des zweiten Kapitels - einige Groschen gefallen.

 

Die Einsendeaufgaben decken den Inhalt des Kurses recht breit ab. Sie sind recht unterschiedlich. Es gibt Reproduktionsaufgaben aber auch solche, wo man ein bisschen programmieren muss. Man experimentiert mit Wireshark und soll dann wieder ein Thema selbstständig im Netz recherchieren, dass im Kurs nicht abgedeckt ist. Die Rückmeldungen zu den Aufgaben kamen zügig und waren vor allem dann sehr interessant, wenn nicht alles richtig war. Mein Tutor versuchte, mich mit ein Hinweisen zum selbstständigen Weiterdenken anzuregen. Bei den Aufgaben zum mathelastigen zweiten Kapitel ist es mir leider nicht immer gelungen, diese Tipps zu verwerten. Hier spielte sicher auch mein Wunsch eine Rolle, zügig weiter zu kommen.

 

Im Hinblick auf die Klausur wäre es vorteilhaft gewesen, mich auf diese Anregungen zum Weiterarbeiten einzulassen. Die Präsenzklausur fand ich sehr gut gestellt. Es gab einen Sockel von Aufgaben, die eher auf Reproduktion des gelernten hinausliefen, so dass jeder eine realistische Chance hat, das Modul durch Fleiß zu bestehen. Es gab aber auch eine größere Aufgabe, bei der Problemlösen und eigenes Denken gefragt war. Wer gut abschneiden will, muss sich also aktiv mit dem Stoff auseinander setzen. Die beste Vorbereitung sind hier die schwierigeren Einsendeaufgaben. Mit den Rückmeldungen des Tutors sollte man sich aktiv auseinandersetzen und seine Lösungen noch mal "polieren bis sie glänzen". Das hätte mich noch ein bisschen weiter gebracht.

 

Der Abschluss-Test ist machbar, wenn man die Tests aus dem Modul gut wiederholt. Auch in der Online-Klausur wird nichts unmögliches verlangt. Mit ihr kann man gut ein paar Bonuspunkte sammeln. Der Schwierigkeitsgrad ist aus meiner Sicht etwas niedriger als in der Präsenzklausur.

 

Das Modul hat mir viel Spaß gemacht und ich verstehe nun einige Dinge besser, die im Hintergrund ablaufen, wenn ich z.B. online eine Überweisung tätige oder meine SIM-Karte in ein neues Handy einlege. IT-Sicherheit ist ein vergleichsweise schwieriger Kurs, der die Mühe wert ist.

kurtchen

Modul: Statistik

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.

kurtchen

Modul: Mobile Computing

Das Modul "Mobile Computing" kann als eines von drei Vertiefungsmodulen im Studiengang Web- und Medieninformatik gewählt werden. Springer Campus schlägt vor, es in den letzten beiden Semestern zu belegen.

 

Gleich vier Module werden als sinnvolle Vorbereitung genannt:
- Grundlagen der Informatik 1
- Grundlagen der Informatik 2
- Web-Programmierung
- Web-Design und Web-Ergonomie


Der Grund dafür ist der siebte Kursabschnitt "Programmierung für mobile Endgeräte", der eine Einführung in die Android-Programmierung gibt. Um hier folgen zu können, benötigt man Grundkenntnisse der objektorientierten Programmierung in Java. Die Layouts für die GUIs werden mit XML beschrieben. Darum sind Vorkenntnisse in Web-Programmierung von Vorteil.

 

Für Studierende im Studiengang "Wirtschaftsinformatik" ist "Mobile Computing" ein Pflichtmodul und wird dem Studienbereich "Grundlagen der Informatik" zugerechnet. Für die Web- und Medieninformatiker gibt es zwei gute Gründe, ausgerechnet dieses Modul als Vertiefung zu belegen: Es ist Pflichtmodul für die Hochschulzertifikate "Anwendungs-Programmierer" und "Software-Architekt", die als Meilensteine auf dem langen Weg zum Bachelor dienen können.

 

Ich persönlich hätte erwartet, dass es in diesem Modul vorwiegend um Android-Programmierung gehen würde. Tatsächlich nimmt diese aber nur einen relativ kleinen Teil des Kurses ein. Hier wird eher ein Einblick gegeben, der meiner Meinung nach noch nicht ausreicht, um wirklich loszulegen. Es ist allenfalls ein Einstieg und man wird auf jeden Fall vertiefende Literatur benötigen, um Fortschritte zu machen. Tatsächlich geht es in diesem Modul allgemein um mobile Rechner, die vernetzt sind und standortbezogene Informationen einbeziehen. Das Smartphone ist dafür nur das prominenteste Beispiel.

 

Mobile Computing ist etwas schneller durchgearbeitet als andere Module bei Springer Campus. Das Lehrbuch hat lediglich 200 Seiten, wenngleich diese ein bisschen größer ausfallen als bei anderen Lehrbüchern und auch ein bisschen enger bedruckt sind. Das Lehrbuch wird ergänzt durch 84 Tests und 12 Einsendeaufgaben, von denen lediglich eine mit Android-Programmierung zu tun hat. Die meisten Aufgaben haben eine Art Aufsatzform. Es sind oft Texte bei denen man etwas abwägen muss. So soll man z.B. entscheiden, ob man für einen bestimmten Einsatzzweck einem Android- oder IOS-Gerät den Vorzug geben würde, ob man ein bestimmtes Projekt nativ oder plattformübergreifend entwickeln würde oder was für Sicherheitsmaßnahmen man für die Handynutzung eines hochrangigen Politikers für nötig erachtet. Diese Art der Aufgaben, bei denen man in erster Linie Text produziert, fällt etwas aus dem Rahmen, den ich im Studium sonst gewohnt bin. Die Rückmeldungen meines Tutors kamen in diesem Modul sehr zügig.

 

Die 7 Kapitel decken folgende Themen ab:
1. Was ist mobile Computing? Hier geht es auch um technische Meilensteine auf dem Weg zum mobile Computing.
2. Mobile Geräte. Hier werden verschiedene Mobiltelefon-Plattformen vergleichend betrachtet. Obwohl die zweite Auflage des Lehrbuches von 2015 ist, merkt man hier deutlich, dass der Markt sich rasant weiterentwickelt. So werden z.B. die Vorzüge von Blackberry diskutiert, was ja mittlerweile Geschichte ist.
3. Hardware für mobile Geräte: Hier erfährt man etwas über die Besonderheit von Prozessoren für mobile Geräte, aber auch über Akkutechnik und Grafikhardware.
4. Drahtlose Kommmunikation: Hier beschäftigt man sich mit verschiedenen Mobilfunkstandards, mit Formen der Modulation und des Multiplexings, mit WLAN, Bluetooth aber auch mit Nahfeldkommunikation mit RFIDs.
5. Location Based Services: Hier geht es um verschiedene Verfahren der Positionsbestimmung per Satellit (GPS) oder gestützt durch stationäre Netze (Handynetze oder auch WLAN-Accesspoints). Außerdem geht es um Techniken zur Positionsbestimmung in Gebäuden.
6. Sicherheit für mobile Geräte und mobile Kommunikation: Aus meiner Sicht das interessanteste Kapitel. Hier werden verschiedene Bedrohungsszenarien für mobile Geräte vorgestellt und die Wirksamkeit von Gegenmaßnahmen erörtert.
7. Programmierung für mobile Endgeräte: Ich hätte erwartet, dass es nun endlich um Android-Programmierung geht. Aber hier spielten zum Beispiel auch Besonderheiten des UI-Designs für mobile Geräte eine größere Rolle, unabhängig von bestimmten Platformen. Im Schnelldurchgang lernt man dann, wie man ein einfaches GUI programmiert, Positionsbestimmung nutzt und Google Maps in eine eigene Applikation einbindet. Auch persistente Datenspeicherung - unter anderem mit SQLite - wird knapp behandelt.

 

Obwohl ich noch nicht weiß, wie ich in der Klausur abgeschnitten habe, würde ich sagen, dass dies einer der leichtesten Kurse im Angebot von Springer Campus ist. Das berichten mir auch immer wieder Kommilitonen. Mobile Computing gilt als ein Modul, mit dem man seinen Notendurchschnitt etwas verbessern kann. Bei mir hinterlässt das Modul einen gemischten Eindruck. Viele Inhalte könnten einem durchaus geläufig sein, wenn man regelmäßig Meldungen bei Heise oder Golem verfolgt. Mir fehlte hier das Erlebnis, ab und zu auch mal eine richtige harte Nuss knacken zu müssen.

 

Auch die Abschlussklausur fiel etwas aus dem Rahmen. Sie besteht aus ungewöhnlich vielen Fragen, bei denen in erster Linie Faktenwissen abgeprüft wird. Selbstständiges Problemlösen steht bei dieser Klausur nicht im Mittelpunkt. Kann man so machen, aber ich persönlich bevorzuge Aufgaben, bei denen mehr Kreativität gefragt ist.

 

Weil ich es insgesamt ein bisschen zu einfach fand und mir die echte Herausforderung fehlte, würde ich dieses Modul nur solchen Studierenden empfehlen, die - so wie ich - eines der Hochschulzertifikate als Etappenziel und kleinen Motivationskick in den Händen halten wollen. Wer eine gründliche Einführung in die Android-Programmierung sucht, wird sich an anderer Stelle umsehen müssen.

 

Wegen Umfang, Schwierigkeitsgrad und dem sehr hohen Rückmeldetempo des Tutors ist Mobile Computing ein Modul, dass man sich für Situationen aufsparen könnte, in denen die Zeit fürs Studium knapp ist und man trotzdem zum nächsten Prüfungstermin noch etwas abschließen möchte. Solche Situationen, in denen Arbeit oder Familienleben einem kaum Zeit zum Studieren lassen, kennt wohl jeder Fernstudent. Da ist es vielleicht ganz schön, wenn es im Studium auch ein Modul gibt, dass man sozusagen "als Joker" spielen kann.

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.

DFA_aab.png

 

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.

kurtchen

Modul: Nichtsequentielle Programmierung

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.

kurtchen

Neues Design der Plattform

Am Montag war die Lernplattform von Springer Campus für längere Zeit nicht erreichbar. Ein größeres Update wurde eingespielt, was uns Studierenden allerdings einige Tage vorher per Mail angekündigt worden war. Die Plattform hat nun ein neues Design.

 

Zugegeben: Das bisherige Design sah ein wenig altbacken aus. So nach WindowsXP.

 

Natürlich habe ich nun erst mal ein wenig Schwierigkeiten, mich zurecht zu finden, weil die verschiedenen Schaltflächen nicht mehr an den gleichen Stellen sind. Auf so etwas reagiere ich nicht mit Begeisterung, aber natürlich weiß ich, dass ich mich schon umgewöhnen werde.

 

Der Vorteil des neuen Designs: Es ist "responsive", d.h. das Layout passt sich an kleinere Bildschirme von Tablets und Smartphones an, z.B. indem Inhalte untereinander angeordnet werden, die sonst nebeneinander stehen oder indem Menüs eingeklappt werden, die nicht unbedingt gebraucht werden. Es sollte in Zukunft leichter sein, Tests unterwegs zu bearbeiten. Im Prinzip wäre es sogar denkbar, den Text von Wissensbausteinen am Handy zu lesen. Ich vermute, dass das nicht bei allen Modulen gut gehen wird. Im Modul "Computernetze" gab es viele Diagramme, die eigentlich schon für meinen Laptop-Bildschirm zu groß waren. Die konnte man verkleinern, aber dann wurde es schwieriger Details zu erkennen. Aber grundsätzlich eine gute Sache.

 

Inakzeptabel ist allerdings die Farbgebung: Die Schriftfarbe ist ein Grau, dass vor dem weißen Hintergrund für mich einfach zu kontrastarm ist. Ich schaffe es nicht mehr, längere Zeit zu lesen. Es ist sehr anstrengend und ich bekomme schnell Kopfschmerzen. Zum Glück gilt das nicht für die Darstellung in den Wissensbausteinen, wo man ja den Löwenanteil der Texte lesen wird. Hier wurde ein grauer Hintergrund gewählt, der weniger blendet, so dass die Schrift nicht so überstrahlt wird. Zwar wäre mir auch hier eine dunklere Schrift lieber, aber damit kann ich leben. Schwierig wird es für mich aber bei den Tests und Aufgaben. Hier ist der Hintergrund hell und überstrahlt das Grau der Schrift. Helfen würde mir hier eine dunklere Schrift oder ein etwas dunklerer Hintergrund. Natürlich gibt es immer die Möglichkeit, im Browser eine andere Darstellung zu erzwingen, was ich wahrscheinlich für's erste tun muss.

 

Eine weitere Schwierigkeit für mich: Bei den Tests unterscheiden die Ampelfarben Rot und Grün die Ergebnisse "geschafft" und "nicht geschafft" bzw. "nicht bearbeitet". Hier wurden recht blasse Farben gewählt, die sich in ihrer Helligkeit recht ähnlich sind. Für mich ist das ein Problem, da ich Rot und Grün nicht sicher unterscheide. Das ist ja bei Männern nicht selten. Helfen würden mir hier sattere Farben oder deutlichere Helligkeitsunterschiede zwischen Rot und Grün. Interessant eigentlich, weil die recht verbreitete Rot-Grün-Schwäche im Modul "Webdesign und Webergonomie" thematisiert wird.

 

In der alten Plattform konnte man zwischen drei Farbschemata wählen. Jetzt scheint es eine solche Möglichkeit nicht mehr zu geben.

 

Ich habe dem Studienbüro von meinen Schwierigkeiten berichtet. Mir wurde ins Aussicht gestellt, dass es in der nächsten Zeit noch weitere kleinere Änderungen am Erscheinungsbild der Plattform geben wird und das man sich bemühen wird, die Rückmeldungen der Studierenden zu berücksichtigen. Insofern hoffe ich, dass in Zukunft wieder eine Auswahl zwischen Farbschemata möglich sein wird. Das war schon ein Feature, das ich gerne zurück hätte.

 

kurtchen

Springer Campus statt W3L

Diesmal kommt kein Modulbericht. Eben habe ich mich auf der Lernplattform der W3L eingeloggt. Und dort, wo bislang das W3L-Logo zu sehen war, ist nun das Springer Logo. Das ist zugegebenermaßen recht chic, aber noch wirkt es auf mich an dieser Stelle fremd. Ich habe nun darüber nachgedacht, wie ich im Hinblick auf meinen Blog mit dieser Namensänderung umgehen möchte.Tatsächlich habe ich mit dem Gedanken gespielt, die Bezeichnung W3L in allen meinen Artikeln zu ändern. Andererseits habe ich mein Studium nun einmal nicht bei Springer Campus begonnen sondern bei der W3L. Und das war ein guter Anfang.

 

Ich hoffe (und bin auch guten Mutes), dass es mit Springer Campus gut weitergehen wird. Ab jetzt werde ich in meinen Beiträgen also den neuen Namen verwenden.

 

Sinn meines Blogs war und ist, dass künftige Studierende es ein wenig leichter haben als ich, Informationen zum Studium aus einer Insider-Perspektive zu finden. Damit diese Leute meine Modulberichte gut finden, habe ich zumindest in den Stichworten zu den Blogeinträgen konsequent W3L durch Springer Campus ersetzt.

 

Bis zum nächsten ausführlichen Bericht dauert es noch ein bisschen. Zur Zeit bearbeite ich das Modul Nicht-sequentielle Programmierung und nebenbei auch schon ein bisschen Mobile Computing.

kurtchen

Modul: Softwaretechnik 1

Softwaretechnik 1 ist das erste von insgesamt drei aufeinander aufbauenden Modulen. Ergänzt wird es um die Module "Softwaremanagement" und "Software testen". Diese fünf Module bilden den Studienbereich "Softwaretechnik" und sind für Studierenden im Studiengang "Web- und Medieninformatik" Pflicht. Studierende der Wirtschaftsinformatik müssen "Softwaretechnik 3" und "Software testen" nicht belegen. Für Studierende beider Studiengänge wird ein Vertiefungs-Modul "Softwaremanagement 2" angeboten.

 

Das Modul Softwaretechnik 1 basiert auf dem "Lehrbuch der Softwaretechnik" von Helmut Balzert. Zugeschickt bekommt man Band 1 "Basiskonzepte und Requirements Engineering". Beim Auspacken erlebt man die erste Überraschung. Es ist kein Buch vom W3L-Verlag sondern vom Spektrum Verlag. Die zweite Überraschung ist, dass es ein ziemlich dicker Wälzer von über 600 Seiten ist. Der didaktische Aufbau ist aber durchaus ähnlich, wie man das von der W3L gewohnt ist. Herr Balzert hat ja auch den Studiengang "Web- und Medieninformatik" der W3L aufgebaut. Man kommt mit dem Format gut zurecht. Außerdem ist wird dieses Lehrbuch nicht allein im Modul "Softwaretechnik 1" verwendet sondern auch in "Softwaretechnik 2". Dieses Modul behandelt die Kapitel I bis III. Man landet so bei einem üblichen Umfang von 430 Seiten.

 

Prinzipien und Werkzeuge

 

Die ersten 100 Seiten des Lehrbuches behandeln Basistechniken. Interessant ist vor allem das Kapitel "Prinzipien". Hier werden verschiedene Begriffe entwickelt, die im weiteren Verlauf des Kursmoduls von Bedeutung sind: Abstraktion, Strukturierung, Bindung und Kopplung, Hierarchisierung, Modularisierung, Geheimnisprinzip, Lokalität, Verbalisierung. Betrachtet werden außerdem die Abhängigkeiten zwischen diesen Prinzipien. Dieser Abschnitt des Kurses fühlte sich teilweise fast schon wie ein geisteswissenschaftliches Modul an. Man sollte beim Lesen regelmäßig innehalten und über die eingeführten Begriffe nachdenken, zum Beispiel darüber, was für Bezüge es zwischen Struktur und Hierarchie gibt und wie sich Hierarchien von Strukturen unterscheiden. Herr Balzert entwickelt die Begriffe sehr präzise, unterscheidet sehr genau. Diesen Teil des Kurses habe ich sehr geschätzt. Ich halte Begriffe für wichtig, weil man sie braucht, um sich mit anderen auszutauschen - sei es im direkten, kollegialen Dialog, sei es indirekt, indem man Bücher, Fachartikel oder Dokumentationen liest. Der Stoff dieses Kursabschnittes wurde allein durch Tests abgeprüft. Die waren gut gestellt und brachten einen noch einmal ins aktive Nachdenken über das Gelernte.

 

Ein weiterer größerer Abschnitt behandelte Werkzeuge in der Softwaretechnik. Die sind natürlich einen ständigen Wandel und auch gewissen Moden unterlegen, aber hier geht es darum, Werkzeuge hinsichtlich bestimmter Operationen zu klassifizieren: Editieren, Transformieren, Suchen, Visualisierung, Verbinden, Nachvollziehen, Verwalten von Versionen und Änderungen, Dokumentieren, Messen, Verfolgen und Überwachen, Prüfen, Kommunizieren. Für alle diese Funktionen werden auch konkrete Beispiele genannt. Den Abschluss bilden Kriterien für die Auswahl von Werkzeugen.

 

All dies war interessant aber auch ein wenig theoretisch. Das änderte sich mit dem Kapitel "Basistechniken". Dieses zerfällt in drei Teile: Statik, Dynamik, Logik.

Statik

 

Statik

 

Laut meinem Tutor ist das Kapitel Statik für die Praxis der meisten Entwickler am wichtigsten. Hier geht es um:
- Zusammenfassung von Funktionen
- Funktionsbäume
- Pakete
- Vererbung
- Assoziationen
- Multiplizitäten
- Aggregationen und Kompositionen
- Daten-Strukturen
- XML, DTD und XML-Schemata zur Beschreibung von Datenstrukturen
- Entity-Relationship-Modelle
- Schlüssel, Tabellen und Dateien
- Semantische Datenmodelle
- Unternehmensdatenmodelle
- Multidimensionale Datenstrukturen
- OLAP und Hyperwürfel

 

Zur Darstellung der statischen Beziehungen wird in erster Linie die UML verwendet. Man könnte sagen, dass Softwaretechnik 1 in weiten Teilen ein UML-Kurs ist. Dies gilt besonders für das Kapitel Statik. Aber auch andere Notationsformen wie ER-Diagramme mit verschiedenen Notationen für die Kardinalitäten werden behandelt. In diesem Teil des Kurses gibt es nun auch Einsendeaufgaben. Die bestehen in der Regel darin, dass man ein konkretes Szenario geschildert bekommt, in dem eine Software eingesetzt werden soll. Dazu soll nun ein Modell entwickelt werden, oft in UML.

 

Die Aufgaben in Softwaretechnik 1 fand ich oft schwieriger als in anderen Modulen der W3L. Der Abstraktionsgrad ist höher. Im Gegensatz zu Programmiermodulen kann man ein Modell nicht "laufen lassen" und dann erleben, was nicht funktionert. Natürlich würde man merken, dass ein Modell schlecht ist, wenn man anfinge, es in Code umzusetzen und dann auf Schwierigkeiten stieße. Aber genau das soll ja durch eine sinnvolle Modellierung verhindert werden. Hier habe ich selten die volle Punktzahl erzielt. Mit den oft sehr konkreten und detaillierten Rückmeldungen meines Tutors konnte ich meine Lösungen aber überarbeiten und verbessern. Oft habe ich überarbeitete Lösungen noch einmal eingeschickt, um zu hören, ob es so besser ist. Auf diesem Wege habe ich viel gelernt. (Auch wenn das natürlich an den erreichten Punkten nichts ändert.)

 

Dynamik

 

Dieses Kursabschnitt fand ich am schwierigsten. Auch Gesprächen mit Kommilitonen weiß ich, dass es anderen Studierenden ähnlich geht. Auch finden viele Studierende dieses Kapitel weniger praxisrelevant. Das kommt natürlich sehr darauf an, was für eine Art von Software man entwickeln möchte.

Während in Statik Beziehungen modelliert werden, die über die Laufzeit eines Programmes stabil bleiben, beschäftigt sich Dynamik mit Veränderungen über die Zeit, also mit Systemen in Bewegung. Hier geht es um Zustandsübergänge, Zustandsänderungen und die Ereignisse, die dazu führen. Das ist natürlich wesentlich komplexer und herausfordernder.

 

Es geht um:
- Kontrollstukturen
- Nebenläufigkeit
- Aktivitätsdiagramme
- Geschäftsprozesse und Use-Cases
- Zustandsautomaten: Mealy, Moore und Harel
- Petrinetze: Bedingungs-Ereignis-Netze, Stellen-Transitions-Netze, Hierarchische-Petrinetze, zeitbehaftete Petrinetze und stochastische Petrinetze
- Szenarien
- Sequenzdiagramme
- Kommunikationsdiagramme

 

Für die Einsendeaufgaben sollten hier Zustandsautomaten entworfen werden. Außerdem sollte ein Petri-Netz entworfen werden, dass ein bestimmtes Problem löst. Für letztes war eine Software empfohlen worden, Visual Objects Net++, die man sich gratis runterladen kann. Die lief leider auf meinem System ziemlich instabil und stürzte häufig ab, was mich viel Zeit gekostet hat. Man sieht dem Programm an, dass es ein paar Jahre auf dem Buckel hat. Hier hätte ich sicher die Möglichkeit gehabt, mich nach aktuelleren Alternativen umzusehen, aber die Arbeit an den Petri-Netzen machte mir nicht so viel Spaß und ich wollte lieber zügig mit dem Thema abschließen. Rückblickend betrachtet, wäre es besser gewesen, hier ein wenig mehr Zeit zu investieren. Mein Tutor hatte mich gewarnt, das Softwaretechnik 1 ein sehr anspruchsvoller Kurs sei, der von vielen Studierenden unterschätzt werde. Ich war hingegen froh, endlich zum dritten Abschnitt "Logik" weitergehen zu können.

 

Logik

 

Vom Kapitel "Logik" erwartete ich, dass es mich wieder mehr interessieren würde. Anfangs wurde ein knapper Überblick über Aussagenlogik, Prädikatenlogik und Temporallogik gegeben. Dann kamen Abschnitte mit klaren Softwarebezug.
- Constraints und die OCL in der UML
- Entscheidungstabellen und Entscheidungsbäume
- Erstellung, Darstellung und Optimierung von Entscheidungstabellen
- Entscheidungstabellen-Verbunde
- Regeln und regelbasierte Software
- Verkettung von Regeln, Lösungssuche, Tiefe-Zuerst-Suche, Breite-Zuerst-Suche, Heuristische Suche
- Geschäftsregeln

 

Als konkrete Realsierung von regelbasierter Software wird zum Beispiel die Sprache Prolog genannt, die für bestimmte Spezialanwendungen elegante Lösungen ermöglicht.

 

Für die Einsendeaufgaben sollte man wieder Klassendiagramme zeichnen, diesmal ergänzt um Informationen über Constraints, z.B. formuliert mit OCL. Außerdem sollte man verschiedene Entscheidungstabellen entwerfen. Dieser Kursteil hat mir wieder viel Spaß gemacht.

 

Online-Klausur

 

Den Online-Test habe ich ganz gut geschafft. Die Online-Klausur fand ich anspruchsvoll und habe auch ein paar dumme Fehler gemacht. Was mir entgegen kam: Es gab Aufgaben zu Petri-Netzen, aber hier ging es darum, die dynamische Entwicklung eines gegebenen Netzes nachzuvollziehen. Einzuschätzen, ob es zu Verklemmungen kommen kann. Das fiel mir relativ leicht. Es war gar nicht so schlecht, dass ich bei den Aufgaben zur Statik ein paar Fehler gemacht habe, weil ich so noch mal viele wertvolle Rückmeldungen von meinem Tutor bekommen habe und noch einmal gezielt ein paar Sachen wiederholt habe. So ging ich in die Präsenzklausur, auf die ich mich eigentlich ganz gut vorbereitet fühlte.

 

Die Präsenzklausur

 

Die Präsenzklausur hat mich dann leider ziemlich kalt erwischt. Ich fand sie viel schwieriger als die Online-Klausur. Vor allem hing ungefähr die Hälfte der Punkte an Stoff aus den Kapiteln zur Dynamik. Unter anderen sollte man ein Petri-Netz entwerfen, das ein konkretes Problem löst. Als Einsendeaufgabe mit genügend Zeit zur Verfügung hätte ich das vielleicht geschafft. Aber Zeit ist eine knappe Ressource, mit der man vor allem in dieser Klausur sehr taktisch umgehen muss. Ich habe noch kein Ergebnis, aber diesmal habe ich ein ziemlich schlechtes Gefühl.

 

Wie hätte ich mich rückblickend besser vorbereiten können? Was könnte ich anderen Studierenden dieses Moduls raten? Ich glaube, im allgemeinen ganz gut reflektieren zu können, wo meine Schwächen gelegen haben. Bei anderen Modulen habe ich auch immer wieder Tipps formuliert, worauf man bei der Prüfungsvorbereitung achten sollte. Bei diesem Modul bin ich erstmals ziemlich ratlos. Ich fand das Niveau im Vergleich zu anderen Modulen der W3L ziemlich hoch. Das liegt sicher auch ein Stück weit in der Natur der Sache. Softwaretechnik ist abstrakter als andere Module. Man hantiert mit Begriffen, Konzepten, Notationen, Modellen. Und man kann - anders als in der Programmierung - nicht mal schnell was ausprobieren und so Feedback vom System erhalten. Hier geht es darum, einen Sachverhalt genau zu analysieren, entscheidende Aspekte zu erkennen und die Beziehungen zwischen ihnen in einer geeigneten Form darzustellen. So schafft man die Blaupause für eine gute Implementierung, die auch wartbar und erweiterbar sein soll. Das ist schon eine anspruchsvolle Aufgabe.

 

Insbesondere bei den Petri-Netzen bin ich ratlos. Ich meine, sie verstanden zu haben. Wenn ich ein Petri-Netz vor mir sehe, einen Ausgangszustand bekomme, so kann ich nachvollziehen, was Schritt für Schritt passieren wird. (Oder passieren kann. Ihr Verhalten ist ja oft nicht-deterministisch.) Aber der Entwurf ist eine ganz andere Herausforderung. Das ist vielleicht ähnlich wie der Unterschied zwischen dem Nachvollziehen und dem Finden eines Beweises in der Mathematik. Vielleicht hätte mir hier ein wenig mehr Übungsmaterial gut getan. Es gab nur eine Einsendeaufgabe zu Petri-Netzen. Vielleicht würde ich mich aktiv nach mehr Übungsmöglichkeiten umsehen, wenn ich dieses Modul nochmals machen müsste.

 

Vielleicht merke ich bei diesem Modul auch, dass ich - im Gegensatz zu vielen meiner Kommilitonen - bislang nicht in einem IT-Beruf arbeite. Ich hatte den Eindruck, in der Klausur einfach nicht auf das Tempo zu kommen, dass ich gebraucht hätte, um die Aufgaben in der gegebenen Zeit zu schaffen. Das habe ich natürlich als Stress erlebt, habe nach schnellen Lösungen gesucht, bin oft den erstbesten Schritt auf die Lösung zugegangen, auch wenn es mich in die Sackgasse geführt hat. Ich hätte gründlicher über meine Entwürfe nachdenken müssen, bevor ich anfange, Teile meiner Diagramme zu zeichnen. Genau diese Zeit habe ich mir nicht genommen, weil ich - vielleicht zu unrecht - glaubte, sie nicht zu haben. Eine klare Antwort, wie ich es beim nächsten Mal besser machen könnte, habe ich noch nicht. Ich hoffe, dass ich außer der Note auch ein bisschen Feedback vom Tutor bekomme. Wenn sich dadurch neue Einsichten ergeben, möchte ich die hier noch nachreichen.

 

Fazit

 

Softwaretechnik 1 war insgesamt ein sehr interessantes Modul. Ich würde sagen, es geht in erster Linie darum, wie man komplexe Zusammenhänge und Prozesse auf wesentliche Aspekte zusammenfasst. Es geht darum, wie man etwas modelliert. Und darum, wie man Modelle mit einfachen graphischen Mitteln so darstellen kann, dass man sie anderen Menschen kommunizieren kann. Das halte ich allgemein für eine nützliche Fähigkeit. Ich glaube, dass viele Konzepte aus diesem Kurs einem sogar helfen könnten, auch in anderen Situationen als der Softwareentwicklung Probleme klarer zu sehen und zu beschreiben. Es geht um "Denkzeuge" und so etwas finde ich immer spannend. Auf das sehr gute Lehrbuch von Herr Balzert werde ich sicher auch in Zukunft immer wieder zurückkommen. Es ist sehr systematisch aufgebaut und eignet sich mit seinen vielen Checklisten sehr gut als Nachschlagewerk.

 

Insofern möchte ich hier ein positives Fazit ziehen. Auch wenn ich befürchte, dass ich mit meiner Leistung in diesem Modul nicht zufrieden sein werde.

kurtchen

Modul: Angewandte Mathematik

Das Modul "Angewandte Mathematik" ist das dritte von insgesamt vier Mathematik-Modulen im Studiengang "Web- und Medieninformatik". Studierende der Wirtschaftsinformatik müssen es nicht machen, dürfen es aber als Vertiefungsfach belegen. Auch wenn es formal - wie bei der W3L üblich -  keine Teilnahmevoraussetzungen gibt, gelten Mathe2 (Analysis und lineare Algebra), GdI1 (strukturierte und prozedurale Programmierung) und GdI2 (objektorientierte Programmierung) als inhaltliche Voraussetzungen. Meiner Meinung nach braucht man auf jeden Fall die Kenntnisse in linearer Algebra und Analysis, die Mathe2 vermittelt. Die Programmierkurse wären aus meiner Sicht weniger wichtig.

 

Kursautor von Mathe3 ist wieder Professor Lenze, der schon die Lehrbücher zu Mathe2 geschrieben hat. Die beiden Kurse bauen schön aufeinander auf. Man kann die Bände aus Mathe2 gut zum Nachschlagen nutzen, wenn man bei der Lektüre von Mathe3 merkt, das einem etwas entfallen ist. Auch in diesem Kurs gibt es die hervorragenden PDF-Tools, mit denen man sich zu allen Kapiteln des Buches selbst beliebig viele Übungsaufgaben mit Lösungen generieren kann.

 

Angewandte Mathematik ist natürlich ein Sammelbegriff, der ganz verschiedene Teilgebiete zusammenfasst, die in unterschiedlichen Anwendungssituationen von Bedeutung sind. Herr Lenze hat für diesen Kurs drei Gebiete ausgewählt, die für einen Informatiker interessant sein sollten: Numerik, Grafik und Kryptik.

 

Das Buch beginnt allerdings mit einem Kapitel über Zahldarstellungen und Maschinenzahlen und über charakteristische Rechen- und Rundungsfehler, die beim Rechnen mit Maschinenzahlen auftreten können. Das ist interessant und für manche Anwendungen relevant. Es ist letztlich eine Auffrischung von Stoff, der den Studierenden schon aus GdI1 bekannt sein sollte, wo dieses Thema bereits behandelt wurde. Dieses einführende Kapitel ist nicht klausurrelevant.

 

Teil 1 - Numerik

 

Das Kapitel Numerik fasst verschiedene Näherungsverfahren zusammen. Ausgangspunkt ist der Banachsche Fixpunktsatz. Hier geht es um sogenannte kontrahierende Selbstabbildungen. Das sind Funktionen, bei denen ich mein f(x) wieder neu als x in die Funktion einspeisen kann; die generierten Werte nähern sich dabei von Schritt zu Schritt einem Fixpunkt. Letztlich geht es in der Numerik darum, Funktionen zu finden, die bestimmte Probleme durch schrittweise Näherung lösen. Das ist dann nützlicht, wenn eine exakte Lösung schwierig, unbekannt oder aufwendig ist.

 

Das Kapitel zur Numerik zerfällt in zwei Teile. Im ersten Teil geht es um Anwendungen in der Analysis, im zweiten um Anwendungen in der linearen Algebra. Relevant für die Präsenzklausur ist nur der erste Teil. Aber Achtung: In der Online-Klausur und in den Online-Tests kann - wie schon in Mathe2 - alles drankommen.

 

Die Inhalte zur Analysis:
- Mit dem Newton-Verfahren kann man näherungsweise die Nullstelle einer differenzierbaren Funktion in einem Intervall finden, indem man an den Graphen Tangenten anlegt.
- Mit dem Heronverfahren kann man Quadratwurzeln reeler Zahlen näherungsweise berechnen.
- Das Sekanten-Verfahren ist ein weiteres Verfahren zur Näherung von Nullstellen.
- Mit dem Abstieg-Verfahren kann man das Minimum einer Funktion in einem Intervall finden.
- Das Dividierte-Differenzen-Verfahren liefert Näherungen für Ableitungen einer Funktion.
- Die Trapez- und Simpson-Regel nähern Integrale.
- Die iterierte Trapez- und Simpson-Regel machen das gleiche mit verbesserter Genauigkeit.

 

Die Inhalte zur lineare Algebra:
- Gesamtschrittverfahren,
- Einzelschrittverfahren und
- SOR-Verfahren. Damit kann man lineare Gleichungsssysteme näherungsweise lösen, die durch eine reguläre Matrix und einen Vektor gegeben sind.
- von Mises-Geiringer Verfahren. Damit kann man Eigenwerte und Eigenvektoren näherungsweise berechnen.

 

Numerik war für mich schon recht interessant. Die Verfahren laufen mechanisch ab und lassen sich gut als Algorithmen implementieren. Im Kurs finden sich dafür auch Code-Schnipsel in Java. Aus dieser Perspektive macht Mathematik auch dem angehenden Informatiker Spaß.

 

Teil 2 - Grafik

 

Auch das Kapitel Grafik zerfällt wieder in zwei Teile. Im ersten Teil geht es um polynomiale Interpolation und Approximation. Das ist eigentlich eine ziemlich interessante Sache. Aus Schulzeiten kennen wir ja noch die Situation: Man bekommt eine Funktionsvorschrift und soll nun eine Reihe von Funktionswerten berechnen, die man in ein Koordinatensystem einzeichnet. Und wenn man genug Koordinaten hat, verbindet man die Punkte zu einem Graphen. Bei der polynomialen Interpolation geht man nun den umgekehrten Weg. Bekannt sind ein paar Koordinaten. Gesucht ist eine Funktionsvorschrift für ein Polynom, das genau durch diese Punkte verläuft. Bei der polynomialen Approximation sucht man ein Polynom, das nur ungefähr durch die gegebenen Punkte läuft, dafür aber einen glatteren Kurvenverlauf aufweist.

 

Man lernt:
- polynomiale Interpolation mit Monomen
- polynomiale Interpolation nach Lagrange
- polynomiale Interpolation nach Newton
Gerade die letztere ist ziemlich interessant. Hier kann man nämlich das aus der Numerik bekannte Dividierte-Differenzen-Verfahren anwenden, um sogenannte Newton-Koeffizienten zu bestimmen. Die kann man nutzen, um mit dem Newton-Horner-Schema das Interpolationspolynom effizient auswerten zu können. Man kann also schnell weitere Funktionswerte berechnen, ohne sich die Mühe zu machen, die Funktionsvorschrift explizit zu bestimmen. Auch diese Verfahren lassen sich gut in Code implementieren.

 

Ferner lernt man:
- Interpolation nach Aitken-Neville
- nach de Casteljau
- interpolierende Subdivision nach Dubuc
- und schließlich approximierende Subdivision nach Chaikin

 

In diesem Kursabschnitt werden auch Bernstein-Grundpolynome wichtig, die in Mathe2 noch nicht klausurrelevant waren. Für Mathe3 muss man die unbedingt drauf haben.

 

Den zweiten Teil des Grafik-Kapitels bilden Verfahren der Interpolation über Rechtecken und Dreiecken, die in der 3D-Grafik zum Einsatz kommen können. Hier geht es auch um Verfahren zur Schattierung, z.B. um die Gouraud oder die Phong-Schattierung. Dieser recht interessante Teil ist nicht relevant für die Präsenzklausur, kann aber in der Online-Klausur drankommen.

 

Ich vermute, die Einschränkungen des Stoffes haben auch damit zu tun, dass viele der Verfahren eine hohe Zahl einfacher Rechenschritte erfordern. Dies gilt umso mehr für Verfahren, die mit linearer Algebra zu tun haben, weil man da mit Matrizen hantiert. Würde man so etwas in der Präsenzklausur machen, könnte man in der Zeit nur wenige Aufgaben stellen und nur wenig Stoff abprüfen. Das merkt man, wenn man die Einsendeaufgaben zu diesem Kapitel bearbeitet. Da hat man es zum Teil Gleichungen zu tun, die sich über viele Zeilen erstrecken. Das ist zeitaufwendig, die Schritt für Schritt umzuformen. Und man braucht viel Konzentration, um keinen Flüchtigkeitsfehler zu machen.

 

Teil 3 - Kryptik

 

Kryptik ist der letzte Teil des Kurses. Hier geht es um mathematische Grundlagen für Verschlüsselung und Schlüsseltausch. Diesen Teil kann ich nicht so detailliert beschreiben. Der Stoff war nicht unbedingt schwierig aber sehr fremdartig und neu. Man benutzt Primzahlen und ihre sogenannten Restklassenkörper. Außerdem beschäftigt man sich mit sogeannten Galois-Feldern. Die bestehen aus Polynomen, die lediglich 0 und 1 als Koeffizienten aufweisen und sich daher gut als Bitfolge darstellen lassen. Man lernt Addition und Multiplikation neu und wendet nun diese neuen Kenntnisse an, um im Restklassenkörper oder in Galois-Feldern z.B. Determinanten oder inverse Matrizen zu berechnen, Gleichungssysteme zu lösen und so weiter. Nichts davon ist wirklich schwierig, aber das Kapitel war trotzdem eine Herausforderung, weil man beim Rechnen leicht vergisst, dass man es nicht mit normalen Zahlen zu tun hat, auch wenn es so aussieht. Da schleichen sich leicht Fehler ein.

 

Eine weitere Schwierigkeit ist, dass man zu Beginn nicht begreift, was das alles denn mit Verschlüsselung zu tun haben könnte. Man ist schon fast am Ende des Kapitels, wenn auf wenigen Seiten das Diffie-Hellman-Verfahren und das Vernam-Verfahren, AES, DES und RSA erklärt werden. Und auf einmal passt alles zusammen und man versteht den Sinn des ganzen. Hier lohnt es sich also wieder einmal, am Ball zu bleiben und sich erst mal die nötigen Grundlagen zu erarbeiten. Natürlich hätte ich mir gewünscht, gleich zu Beginn erklärt zu bekommen, wozu ich das Rechnen im Galois-Feld lernen soll. Aber man kann das "wozu" wohl erst verstehen, wenn man die Grundlagen beherrscht.

 

Nach Mathe2 wird es leichter

 

Im Vergleich zu Mathe2 war Mathe3 leichter. Weil es um recht praktische Verfahren geht, mit denen man etwas berechnen oder nähern kann. Weil diese Verfahren sich gut in Code überführen lassen. Weil man sich gut vorstellen kann, dass es für diese Verfahren Anwendungen gibt, auch wenn man die wahrscheinlich später nicht selbst in Code implementieren wird. Weil man für vieles, was hier geschieht, auch gute graphische Veranschaulichungen finden kann.

 

Im Online-Test kann wieder alles drankommen. Meiner Meinung nach, bereitet man sich auf den Online-Test am besten vor, indem man die Tests des Moduls intensiv wiederholt. Auch in der Online-Klausur kann alles drankommen. Die Aufgaben werden anscheinend vom Zufallsgenerator ausgewählt. Ich hatte fast nur Aufgaben aus dem Kapitel Grafik und ein bisschen Kryptik. Und es war vor allem Stoff, der in der Präsenzklausur NICHT vorkommen sollte. Wer also in den Genuss von Bonuspunkten kommen möchte, muss zuschauen, dass er sich den ganzen Stoff erarbeitet. Zumindest muss man sich soweit auskennen, dass man im Online-Test die 70% holen kann, die man für die Klausurzulassung braucht.

 

Die Betreuung durch Herrn Lenze war wieder einmal hervorragend. Sehr schnelle Rückmeldungen, gute Hinweise zur Prüfungsvorbereitung.

 

In der Präsenzklausur war der Stoff sehr gleichmäßig über die drei Kapitel verteilt. Man darf keinen Taschenrechner benutzen. Es ist trotzdem schaffbar, weil die Werte so gewählt sind, dass sie sich gut für Handrechnung eigenen. Das Problem ist wieder einmal der Faktor Zeit. Man darf das Lehrbuch und sogar gerechnete Einsendeaufgaben mitnehmen. Aber das nützt nur bedingt, weil man die Aufgaben in der Zeit nicht schaffen wird, wenn man ständig nachschlagen muss. Es muss schon ein Grundstock Wissen im Kopf sein, dann kann ein gelegentlicher Blick ins Buch bestätigen, dass man sich an diese oder jene Formel richtig erinnert.

 

Auch in Mathe3 habe ich noch kein Ergebnis, bin aber zuversichtlich, dass ich diese Klausur nicht nochmal schreiben muss.

 

Nachtrag: Ergebnis

 

Nach nicht einmal 2 Wochen habe ich für Mathe3 schon ein Prüfungsergebnis. Es ist ziemlich gut gelaufen. Die gründliche Vorbereitung hat sich gelohnt.

 

Für diese Klausur habe ich im Urlaub oft bei brütender Hitze Übungsaufgaben gerechnet, während meine Familie sich im Pool verlustiert hat. Und sich gewundert hat, wie ich mich dazu überwinden konnte, im Urlaub und bei so schönem Wetter zu lernen. Nun freue ich mich sehr. Es ist schön, zu erleben, wie man innere Fortschritte macht. Wie sich Mühe auszahlt, weil man plötzlich Dinge begreift, die einem anfangs so schwierig erschienen. Es ist aber auch schön, wenn diese innere Entwicklung sich am Ende als äußerer Erfolg manifestiert. Das motiviert mich gerade im Fernstudium, wo es ja keinen äußeren sozialen Rahmen gibt, der mich trägt.

kurtchen

Modul: Mathematik für Informatiker

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!

kurtchen

Am Präsenztag der W3L Akademie am 24.09.2016 informierte Dr. Olaf Zwintzscher aus dem Vorstand der W3L AG über die bevorstehende Übernahme der W3L Akademie durch Springer Campus. Als Studierender im Studiengang Web- und Medieninformatik habe ich am Präsenztag teilgenommen. Ich habe mich bemüht, seine Ausführungen zu protokollieren, um sie an dieser Stelle zu teilen.

 

Laut Herrn Zwintzscher unterliegt der Fernstudienmarkt in Deutschland einer starken Konkurrenz. Es gibt Player, die breiter als die W3L aufgestellt sind. Die W3L Akademie bietet bislang nur 2 Studiengänge an - Web- und Medieninformatik sowie Wirtschaftsinformatik. Andere Anbieter können ein deutlich breiteres Angebot machen, haben insgesamt mehr Studierende und ein größeres Finanzvolumen. Damit haben Sie auch die Möglichkeit, Werbung im öffentlichen Raum zu platzieren, z.B. auf U-Bahnen, Plakatwänden, in Zeitschriften. So etwas wäre für die W3L Akademie zu teuer. Da sie eine kleinere Zielgruppe anspricht, wäre es auch ineffektiv. Im Marketing der eigenen Studiengänge kann die W3L mit größeren Anbietern nicht mithalten.

 

Aus diesem Grunde war die W3L schon längere Zeit auf die Suche nach Kooperationspartnern. Dabei hoffte man zunächst auf Firmen, die Angebote der W3L für die Weiterbildung ihrer Mitarbeiter nutzen wollten. Nachdem dies nicht aufging, suchte man auch nach Partnern, die das bestehende Konzept weiterführen wollten.

 

Es gab schon längere Zeit eine Zusammenarbeit zwischen der W3L Akademie und dem Springer Verlag. Zum Beispiel verlegt Springer die Lehrbücher zur Softwaretechnik von Herrn Balzert, der die W3L Akademie aufgebaut hat. Diese Lehrbücher werden auch in den Softwaretechnik-Modulen der W3L verwendet.

Springer bietet mit Springer Campus eigene Fernstudiengänge in Biologie, Chemie und Elektrotechnik an. Sie fanden das Studienangebot der W3L gut, wollten aber keine Kooperation sondern kaufen.

 

Die W3L hat sich entschieden, ihr Angebot an Springer Campus abzugeben, weil andere mögliche Partner das bestehende Konzept ändern wollten. Mit Springer soll das nicht passieren. Die Ansprechpartner für die Studierenden im Studienbüro bleiben die gleichen. Sie wechseln zu Springer Campus. Auch die Dozenten sollen die gleichen bleiben, was auch Herrn Zwintzscher selbst einschließt. Erhalten bleiben soll ferner der Standort Dortmund.

 

Springer Campus wird die bestehende Kooperation mit der FH Dortmund fortsetzen, die auch in Zukunft die Bachelor-Abschlüsse verleiht. Laut Herrn Zwintzscher war dies sowohl für die W3L als auch für Springer wichtig.

 

Mit der Übernahme durch Springer verbinden sich verschiedene Hoffnungen:
- Möglichkeiten für besseres Marketing, weil Springer größer ist als die mittelständische W3L.
- Weil Springer in der Wirtschaft gut vernetzt ist, könnte es ihnen gelingen, Kooperationen mit Firmenkunden aufzubauen.
- Mehr Studierende in den beiden Studiengängen.

- Wenn dies aufginge, könnte es auch mehr Prüfungsstandorte geben.
- Das Studienangebot könnte schließlich erweitert werden, z.B. um einen Masterstudiengang (sobald es genügend Bachelor-Absolventen gibt).

 

Herr Zwintzscher glaubt ferner, dass Springer Campus größere unternehmerische Hürden nehmen kann als das mittelständige Unternehmen W3L. Die Sicherheit für die Studierenden sollte damit steigen.

 

Ändern könnte sich in absehbarer Zeit die Lernplattform. Es ist möglich, dass Springer Campus auf Dauer nicht verschiedene Plattformen parallel betreiben sondern alle Inhalte in einer Plattform zusammenfassen möchte. Allerdings ist solch eine Migration aufwendig, weshalb die meisten Bestandsstudierenden das wahrscheinlich nicht mehr erleben werden.

 

Soweit die Ausführungen von Herrn Zwintzscher zur bevorstehenden Übernahme der W3L Akademie durch Springer Campus.

kurtchen

Modul: Computernetze

Das Modul "Computernetze" wird der Fachgruppe "IT-Systeme" zugerechnet. Für Studierende im Studiengang "Web- und Medieninformatik" ist es Pflicht. Die angehenden Wirtschaftsinformatiker können es als Wahlpflichtmodul belegen. Formal betrachtet gibt es keine Teilnahmevoraussetzungen. Empfohlen wird ein grundlegendes Verständnis von IT-Systemen und Informationsarchitekturen.

 

Meiner Meinung nach lässt sich ein solches Verständnis gut mit dem Modul "Rechnerstrukturen und Betriebssysteme" aufbauen. Dies sollte nach empfohlenem Studienplan im 1. Semester belegt werden. Computernetze ist dann schon für das 2. Semester vorgesehen. Ich finde die beiden Module ähneln einander. In beiden Fällen sieht das Lehrbuch recht dünn aus. Beim Durcharbeiten merkt man dann, dass es sehr komprimiert geschrieben ist. Jeder Satz hat es in sich. Man kommt also beim Bearbeiten langsamer voran als bei anderen Modulen, die auf den ersten Blick umfangreicher wirken.

 

Der Stoff ist - wie bei Rechnerstrukturen - zunächst einmal recht trocken und formal. Man verbringt viel Zeit damit, z.B. den bitweisen Aufbau von Headern zu verstehen, ohne an diesem Punkt zu ahnen, wozu das gut sein wird. Man muss sich auch bei diesem Modul durch einige Kapitel beißen, die die nötigen Voraussetzungen für späteres Verständis schaffen. Das macht es manchmal schwierig, die Studienmotivation aufrecht zu erhalten. Der Stoff dieses Kurses ist im Vergleich zu anderen Modulen recht technisch und formal.

 

Das verwendete Lehrbuch "Technische Grundlagen von Computernetzen" ist von Patrick-Benjamin Bök und Andreas Noack. Es hat ca. 270 Seiten, die aber recht eng bedruckt sind und auch die Schriftgröße ist etwas kleiner als bei der W3L üblich. Lasst euch also von der Seitenzahl nicht täuschen. Das ist kein Modul, das man nebenbei belegt. Das Buch enthält viele Abbildungen, häufig schematische Darstellungen des Aufbaus von Headern oder an Graphen erinnernde Darstellungen der Topologie von Netzen. Der inhaltliche Aufbau ist wie folgt:
- (technische) Grundlagen
- Kommunikation auf physikalischer Ebene
- Kommunikation auf logischer Ebene
- Kommunikation auf Anwendungsebene
- Performance Engineering

 

Die Grundidee ist also, sich von der Übertragung einzelner Bits (z.B. über einen Kupferdraht) Stufe für Stufe zu immer komplexeren Protokollen hochzuarbeiten, die aufeinander aufbauen oder präsizer ineinander geschachtelt sind wie Zwiebelschalen. So landet man am Ende bei Themen wie Voice-over-IP.

 

Es gibt Lehrbücher, die den umgekehrten Weg gehen, also von den Protokollen höherer Stufen hinabsteigen zur Bitübertragungsschicht. Der Ansatz, den die Autoren gewählt haben, scheint der gängige zu sein. Er hat für mich auch gut funktioniert, weil man an jedem Punkt versteht, auf welchem Fundament man ruht. Der Nachteil dieses Ansatzes ist, dass man viel Stoff lernen muss, bevor man schließlich mit etwas zu tun bekommt, das man aus eigener Alltagserfahrung kennt, z.B. der Übetragung einer Webseite per HTTP oder einer E-Mail per IMAP.

 

Ziemlich zu Beginn des Kurses werden zwei Referenzmodelle eingeführt, das ISO/OSI-Modell und das TCP/IP-Referenzmodell. An ihnen verdeutlicht man sich die schichtweise Struktur der aufeinander aufbauenden Protokolle. Diese Modelle tauchen im Verlauf des Kurses immer wieder auf, um zu zeigen, wo im Schichtenmodell der gerade behandelte Stoff angesiedelt ist. Dies ist nützlich, um bei der Auseinandersetzung mit den vielen technischen Einzelheiten nicht den Überblick zu verlieren: Worauf baut das aktuelle Thema auf? Und worauf läuft es hinaus? Gerade bei diesem Modul ist es leicht, den Kompass zu verlieren. Die wiederkehrenden Verweise auf das Schichtenmodell sollen dem vorbeugen. Für mich hat das gut funktioniert.

 

Gleichwohl musste ich mich immer wieder damit abfinden, vieles zunächst einmal nur halb zu verstehen. Das Lehrbuch war so geschrieben, dass ich das WAS und das WIE meist gut nachvollziehen konnte. Aber das WOZU, das mir auch geholfen hätte, den Stoff für mich einzuordnen und mir besser zu merken, musste manchmal vorläufig im Dunkeln bleiben. Mein Eindruck ist: Das ist kein Versäumnis der Autoren sondern der Struktur des Stoffes geschuldet. Netze entwickelten sich über die Zeit, es wurden neue Protokolle auf vorhandene Protokolle aufgesetzt. Man muss also ein Stück weit diesen historischen Entwicklungsprozess nachvollziehen.

 

Die Online-Tests waren zum Teil etwas spitzfindig formuliert, was mich aber zwang, den Stoff der einzelnen Wissensbausteine noch einmal genauer durchzuarbeiten. Die Aufgaben waren anders, als ich erwartet hatte. Kommilitonen, die eine frühere Version dieses Moduls belegt hatten, hatten mir berichtet, dass vor allem Wissen abgefragt würde. In der aktuellen Auflage des Kurses geht es eher darum, die gelernten Konzepte anzuwenden.

 

Man sollte z.B. zeigen, wie mit dem Spanning Tree Protocol redundante Pfade aus einem vermaschten Netz entfernt werden, so dass eine Baumstruktur entsteht. Oder erklären, wie ein Routing-Algorithmus ausgehend von einer bestimmten Ausgangssituation Schritt für Schritt eine Routing-Tabelle aufbaut. Oder durchspielen, welche Pakete bei bestimmten Formen des Queuings in welcher Reihenfolge bedient werden. Bei den Aufgaben zur Verwaltung von IP-Adressen muss man auch immer wieder ein bisschen rechnen. Da ist es gut, wenn man im Umgang mit Dualzahlen und Hexadezimalzahlen noch recht fix ist.

 

Bei diesem Kurs sind zur Klausur keinerlei Hilfsmittel zugelassen. Um die Fülle an Stoff in den Kopf zu bekommen, habe ich an die 150 eng beschriebene A4 Seiten eigene Notizen angefertigt. Vieles davon waren Diagramme zum Aufbau der vielen verschiedenen Header, wobei ich pro Bit ein Kästchen auf Karopapier verwendet habe. Diese Zeichnungen habe ich dann stark kommentiert. Außerdem habe ich viele Fragen niedergeschrieben, die sich mir beim Bearbeiten des Kurses stellten und die Antworten, die ich darauf gefunden habe, sauber ausformuliert. Meine Notizen sahen also auf manchen Seiten aus wie Sammlungen von Quizfragen. Schließlich habe ich viele Diagramme aus dem Kurs abgezeichnet, bei denen es vor allem um Kommunikationsflüsse und die dabei ausgetauschten Daten ging. Ich habe dabei bewusst von Hand gearbeitet, weil ich gehofft habe, den Stoff so gleichsam "in die Finger" zu bekommen.

 

Mein Tutor war der Ansicht, bei diesem Kurs ginge es nicht um das Abfragen von Wissen. Es ginge um das Verständnis von Zusammenhängen; und die Fähigkeit, dieses Verständnis problemlösend anzuwenden. In der Klausur erwies das als einerseits richtig. Aber andererseits auch wieder nicht. Ja, es gab nur wenige Wissensfragen. Meistens musste man Wissen anwenden, zeigen, wie sich eine Situation entwickelt, wer, wann, was und in welcher Form an wen sendet, damit ein Paket den Weg von A nach B finden kann. Aber um solche Probleme lösen zu können, braucht man auch Wissen: Längen von Headern, ihren Aufbau, den genauen Ablauf wechselseitig gesendeter Botschaften. Es war schon vorteilhaft, eine Menge Fakten im Kopf zu haben. Hier hätte ich in der Präsenzklausur noch etwas mehr rausholen können. Müsste ich die Klausur noch einmal schreiben, dann würde ich mehr Fakten mit Karteikarten lernen. Man verstehe mich nicht falsch: Fakten zu lernen reicht auf keinen Fall, um diese Klausur zu bestehen. Aber es ist oft nötig, um mit der eigentlichen Arbeit beginnen zu können. Ich musste an vielen Stellen raten und war hinterher überrascht, dass ich oft richtig gelegen hatte.

 

Erwähnen möchte ich noch die sehr intensive Betreuung durch meinen Tutor. Bei diesem Modul hatte ich viele Verständnisfragen und weiterführende Fragen. Die Antwort kam oft noch am gleichen Tag und hat mich eigentlich immer weiter gebracht.

 

Für mich war das bislang die schwierigste Präsenzprüfung meines Studiums. Dank der Bonuspunkte aus Online-Test und Online-Klausur habe ich mit einem schönen Ergebnis abschließen können, auch wenn mein Punktwert aus der Klausur im Vergleich zu vielen anderen Modulen etwas schlechter ausgefallen ist. Ich habe mich aber hier besonders über das Ergebnis gefreut, weil ich das Gefühl hatte, mir hier wirklich etwas erarbeitet zu haben.

 

Für Studierende, die nach diesem Modul noch mehr über Netze wissen wollen, gibt es ein aufbauendes Modul "Planung und Auslegung von Computernetzen", das man als Wahlpflichtmodul belegen kann.

 

"Computernetze" wird als Grundlage für das Modul "IT-Sicherheit" empfohlen. Das ist das nächste von insgesamt 4 Modulen aus dem Studienbereich "IT-Systeme", das ich belegen möchte. Ein bisschen dauert das aber noch, denn als weitere Grundlage wird Mathe3 empfohlen, wo unter anderem kryptographische Basistechniken behandelt werden. Nun habe ich aber Mathe2 noch nicht bestanden. Die IT-Sicherheit muss also noch ein wenig warten.

 

"Computernetze" war ein ordentliches Stück Arbeit. Ich bin froh, dass ich das geschafft habe.