Zum Inhalt springen

kurtchen

Communitymitglied
  • Gesamte Inhalte

    766
  • Benutzer seit

  • Letzter Besuch

Blogbeiträge erstellt von kurtchen

  1. kurtchen
    Ich hatte ja in Aussicht gestellt, ab und zu etwas zur Erstellung meiner Bachelorarbeit zu schreiben, falls die Zeit dafür reicht. Eigentlich reicht sie nicht, aber heute tut es mir trotzdem ganz gut, mal einen Schritt zurück zu treten und auf das Ganze zu schauen.
     
    Themenfindung
     
    An meiner FH entwickeln viele Studierende die Bachelorarbeit auf der Grundlage ihrer Projektarbeit. Das eigentlich praxisbezogene Thema der Projektarbeit wird dann mit einer wissenschaftlichen Fragestellung verknüpft und so fortgeführt und erweitert. Ich habe eine Weile geschwankt, ob ich das auch so machen soll.
     
    Mein Projekt war ja die Entwicklung einer Steuersoftware für ein chronobiologisches Experiment. Im Rahmen des Projektes wurde eine erste Entwicklungsstufe erreicht, aber es gab noch einige Anforderungen, die nicht realisiert werden konnten. Insofern hätte hier durchaus die Möglichkeit bestanden, die nächsten Entwicklungsschritte zum Thema meiner Bachelorarbeit zu machen. Allerdings soll die Bachelorarbeit stärker als die Projektarbeit eine wissenschaftliche Fragestellung bearbeiten. Nun soll mein Projekt zwar einem wissenschaftlichen Zweck dienen, aber eben innerhalb der Disziplin der Biologie. Softwaretechnisch gesehen hat es verschiedene Aspekte: Physical Computing, Kommunikation übers Netz, GUI-Programmierung und so weiter. Dennoch tat ich mich zunächst schwer damit, eine für die Informatik relevante Forschungsfrage zu formulieren.
     
    Meine Steuersoftware läuft auf einem Raspberry Pi und bietet ihre Funktionen als WebService im Intranet an. Eine Idee war daher ein Vergleich verschiedener Microframeworks für REST basierte Webservices, die sich gut für Physical Computing (auf vergleichsweise schwachbrüstiger Hardware) eignen. Mein Projekt nutzt z.B. inzwischen das Spark Framework. Der Vorteil wäre gewesen, dass ich die Weiterentwicklung meines Projektes zeitlich mit meiner Bachelorarbeit hätte verbinden können. Wer weiß, vielleicht wäre ich dann sogar schon fertig.
     
    Es gab aber eine Sache, die mir daran nicht so gut gefiel. Die Informatik ist ja meist in einer dienenden Rolle. Sie ist aber auch eine Strukturwissenschaft mit eigenen Erkenntnisgegenständen. Die Bachelorarbeit ist (vielleicht eine letzte) Gelegenheit, sich mit diesem Aspekt der Informatik ausführlicher zu befassen. Darum hatte ich eigentlich Lust auf eine Bachelorarbeit, die einen stärkeren Theorieaspekt hat. Es gab zwei Themen, die mir seit einer Weile im Kopf herumspukten und die ich gerne verbinden wollte.
     
    Funktionale Programmierung
     
    Ich hatte ja hier im Forum mal von einem "Urlaubsprojekt" berichtet, bei dem ich ein bisschen mit dem Lisp-Dialekt Scheme herumexperimentiert habe. Das war in diesem Thread. Das lag daran, dass ich den Wunsch hatte, wenigstens ein anderes Programmierparadigma als die objektorientierte Programmierung kennenzulernen. Die Beschäftigung mit der funktionalen Sprache Scheme hinterließ bei mir viele Fragen und offene Wünsche:
    Scheme wurde als Lehrsprache entwickelt. Ich hatte den Wunsch auch eine funktionale Sprache zu lernen, die für den produktiven Einsatz entwickelt wurde. Mögliche Kandidaten waren hier z.B. Scala, Clojure oder Erlang. Mit dem Erlernen einer funktionalen Sprache ist es ja nicht getan. Schwieriger ist es, seine Denkweise zu ändern. Im Studium habe ich gelernt, Probleme objektorientiert zu modellieren. Ich habe objektorientierte Entwurfsmuster gelernt, die bestimmte Klassen von Problemen lösen. Das führt allerdings auch dazu, dass ich Probleme "durch eine objektorientierte Brille" anschaue. Für die objektorientierte Programmierung gibt es die UML. Wie modelliere ich funktionale Softwaresysteme? Besonders ungewohnt war für mich der Umgang mit unveränderlichen Datenstrukturen. Objektorientierte Programmierung versucht ja, Zuständsveränderungen zu beherrschen, indem Zustände in Objekten gekapselt werden. Funktionale Programmierung versucht, Zustandsveränderungen möglichst zu vermeiden. Allerdings konnte ich mir nicht so richtig vorstellen, wie ein größeres Softwaresystem ohne Zustandsveränderungen auskommen kann.  
    Insgesamt blieb bei mir also der Wunsch, mich noch einmal ausführlicher mit funktionaler Programmierung und meinen offenen Fragen zu beschäftigen. Meine Idealvorstellung wäre ein Modul über Programmierparadigmen gewesen, bei dem man gleiche Programme in unterschiedlichen Paradigmen implementiert und durch den direkten Vergleich an Fallbeispielen die jeweiligen Eigenheiten der Paradigmen verstehen lernt. Da es so ein Modul nicht gab, hatte ich die Idee, in meiner Bachelorarbeit objektorientierte und funktionale Programmierung an einem Fallbeispiel zu vergleichen.
     
    Ich war auch neugierig, ob so ein Vergleich meine Sichtweise auf Programmierung verändern würde. Vielleicht ist es ja ein bisschen wie mit Fremdsprachen. Wenn man eine fremde Sprache lernt, so lernt man zugleich eine Menge über die Eigenheiten seiner eigenen Sprache. Und das umso mehr, je fremdartiger die neue Sprache ist.
     
    Die Grundidee war also ein Sprachvergleich an einem Fallbeispiel. Nun musste noch ein Fallbeispiel her, dass sich für diesen Vergleich eignen würde.
     
    Heuristiken mit Evolutionsstrategie
     
    In diesem Zusammenhang fiel mir ein Artikel über den Sintflut-Algorithmus ein, den Gunter Dueck 1993 in der Zeitschrift Spektrum der Wissenschaft veröffentlicht hatte. Der Sintflut-Algorithmus kann z.B. das Problem des Handlungsreisenden lösen. Hier geht es darum, eine möglichst kurze Rundreise durch eine Anzahl Städte zu finden. Das klingt auf den ersten Blick nicht weiter schwierig, aber die Anzahl der Möglichkeiten wächst sehr rasch. Bei n Städten gibt es (n-1)!/2 Möglichkeiten; also bei nur 16 Städten bereits über 653 Milliarden mögliche Rundreisen. Ein praktisches Rundreiseproblem wäre ein Roboter, der Löcher in eine Platine bohren soll. Damit er mehr Platinen pro Stunde schafft, wäre es wünschenswert, er würde die Löcher ist der bestmöglichen Reihenfolge bohren. Wenn die Platine mehrere hundert Löcher hat, ist die Anzahl der möglichen Routen zu groß, um alle auszuprobieren. Das Problem kann nicht optimal gelöst werden.
     
    Heuristische Algorithmen versuchen den großen Lösungsraum einzuschränken. Sie untersuchen nur einen Teil der Möglichkeiten und finden so schneller eine Lösung, allerdings zu dem Preis, dass sie höchstwahrscheinlich die optimale Lösung übersehen. Ist die Suchstrategie clever, so wird die gefundene Lösung aber nur wenig von einer optimalen Lösung abweichen. Für praktische Anwendungsfälle ist eine gute Lösung, mit der man sofort arbeiten kann, interessanter als eine optimale Lösung, die erst in ein paar hundert Jahren zu bekommen ist.
     
    Eine vergleichsweise einfache Heuristik für das Rundreiseproblem ist die Nearest Neighbour Heuristik. Man wählt eine zufällige Stadt als Startpunkt. Von hier reist man immer zur nächstgelegenen Stadt, die man noch nicht besucht hat. Das liefert oft schon ganz gute Ergebnisse, aber gelegentlich haut die Nearest Neighbour Heuristik auch mal ordentlich daneben. Gleichwohl hat man hier ein einfaches Verfahren, das als Referenz für komplexere Verfahren dienen kann.
     
    Eine Reihe von Algorithmen versuchen, Prinzipien der Evolution für Optimierungsprobleme fruchtbar zu machen. Die Grundidee ist, dass zunächst zufällige Lösungen erzeugt werden, die natürlich nicht besonders gut sind. Diese Lösungen werden nun kleinschrittig variiert, was bedeutet, dass die Varianten der ursprünglichen Lösung "ähneln" sollen. Mutationsoperatoren erzeugen solche zufälligen Varianten. Rekombinationsoperatoren erzeugen Lösungen als Kombination von zwei bisherigen Lösungen. Die bisherigen Lösungen nennt man dann Eltern und die erzeugten Varianten Nachkommen oder Kinder. Zur Strategie wird das aber erst, wenn ein Selektionsmechanismus hinzukommt. Die Varianten werden bewertet, verworfen oder sie verdrängen die bisherigen Lösungen.
     
    Im Falle des Sintflut-Algorithmus ist der Selektionsmechanismus vergleichsweise anschaulich. Man stellt sich den Lösungsraum als Gebirge vor. Die Höhe über dem Meeresspiegel entspricht der Güte der Lösung entsprechend der Bewertungskriterien. Im Falle des Rundreiseproblems wäre also eine kürzere Rundreise ein höherer Punkt im Gebirge. Den Optimierer kann man sich als Wanderer vorstellen, der versucht, im Gebirge einen hohen Punkt zu erreichen. Eine naive Strategie wäre, immer nur bergauf zu gehen. Dann würde man allerdings auf dem ersten kleinen Gipfel "hängenbleiben". Manchmal muss man akzeptieren, dass es schlechter wird, bevor es besser werden kann. Man braucht also eine bessere Strategie als HINAUF. Sintflut fügt diesem Bild einen Regen hinzu, der den Wasserspiegel kontinuierlich ansteigen lässt. Nacheinander versinken so alle Gipfel im Wasser. Der Wanderer streift im Gebirge umher. Er geht rauf oder runter, solange er nur trockene Füße behält. Diese einfache Strategie liefert gute Lösungen für das Rundreiseproblem. Ich finde an solchen Algorithmen persönlich faszinierend, dass hier grundlegende biologische Prinzipien wie Anpassung durch Mutation und Selektion für die Informatik fruchtbar gemacht werden.
     
    Aus verschiedenen Gründen hielt ich derartige Optimierungsverfahren auch für ein interessantes Thema für meine Fallstudie:
    Die Erzeugung von Varianten durch Mutation und Rekombination wäre einen interessanter Anwendungsfall für immutable Datenstrukuren. Simuliert man eine Population von Lösungen, so können Verarbeitungsschritte parallelisiert werden. Von funktionalen Sprachen wird behauptet, dass sie nebenläufige Berechnungen handhabbarer machen. Andererseits sprechen wir hier von randomisierten Algorithmen. Ein Zufallsgenerator ist aber zustandsbehaftet. D.h. man kann auch etwas über den Umgang mit Seiteneffekten lernen, die in der funktionalen Programmierung eigentlich vermieden werden sollen.  
    Die Idee für meine Bachelorarbeit war also ein Vergleich objektorientierter und funktionaler Programmierung am Fallbeispiel verschiedener heuristischer (evolutionärer) Algorithmen zur Lösung des Rundreiseproblems. Ich hatte das Glück an meiner FH einen Professor zu finden, der für diese Idee offen war.
     
    Stand der Bearbeitung
     
    Die Arbeit ist inzwischen angemeldet. Hier ist zu bemerken, dass die Anmeldung einer Bachelorarbeit ein bisschen formaler abläuft als die Anmeldung einer Projektarbeit. Es muss ein Dokument als physischer Gegenstand herumgeschickt und von verschiedenen Personen unterzeichnet werden, weshalb das ganze ein bisschen länger dauern kann als man im Zeitalter elektronischer Kommunikation gewohnt ist. Insofern ist es empfehlenswert, frühzeitig Kontakt zum Erst- und Zweitprüfer und auch zum Studienbüro aufzunehmen.
     
    Den Theorieteil der Arbeit konnte ich inzwischen fertigstellen. Hier geht es vor allem darum, das funktionale Programmierparadigma und verschiedene Heuristiken mit Evolutionsstrategie vorzustellen. Aktuell arbeite ich an der objektorientierten Implementierung meiner Optimierer. Leider geht es im Moment noch gar nicht um die Algorithmen, sondern um GUI- und Graphik-Programmierung, denn ich möchte ja nachvollziehen können, was z.B. meine Mutations- und Rekombionationsoperatoren mit Routen machen. Das geht hoffentlich leichter, wenn ich das visualisieren lassen kann. Ich bin nun schon sehr gespannt darauf, verschiedene Evolutionsstrategien auszuprobieren und ihnen beim Optimieren der Routen zuzuschauen.
     
    Besonders neugierig bin ich natürlich auf die Programmierung in funktionalen Sprachen. Ich möchte Scala und Clojure nutzen. Scala ist eine Hybridsprache, die versucht objektorientierte und funktionale Programmierung zu verbinden. Sie verschafft mir vielleicht einen sanften Einstieg und Übergang. Scala ist auch eine statisch typisierte Sprache mit Typinferenz. In dieser Hinsicht ähnelt es Haskell. Clojure ist ein moderner Lisp-Dialekt. Es ist daher dynamisch typisiert und hat eine fremdartige Lisp-Syntax. Ich bin mit beiden Sprachen nicht vertraut, so dass ich hier einige Überraschungen erwarte.
     
    Scala und Clojure sind JVM-Sprachen, d.h. sie compilieren zu Java-Bytecode, können Java-Code rufen und von Java-Code gerufen werden. Man spricht auch von Java-Interop. Das ist interessant, weil es in der Regel nicht sinnvoll ist, eine komplette Anwendung funktional zu implementieren. Insbesondere GUI-Code ist in hohem Maße zustandsbehaftet, was nicht so gut zum funktionalen Programmierparadigma passt. (Diese Aussage muss man heute eigentlich relativieren, z.B. weil es heute mit Elm eine funktionale Sprache für die Entwicklung von Web-Frontends gibt.) Daher wird das UI der Anwendung klassisch objektorientiert in Java implementiert, aber unter der Haube werkeln Optimierer in Java, Scala und Clojure.
     
    Schreibwerkzeuge
     
    Günstig war, dass ich mir vor Weihnachten Zeit genommen habe, mich in Latex einzuarbeiten und mir eine Dokumentenvorlage zu machen. Das war ein Stück Arbeit und hat mich z.T. auch bei der Bearbeitung meiner letzten Module ausgebremst. Allerdings ist es jetzt sehr schön, dass ich mich aufs Schreiben konzentrieren kann, statt mir über das Layout Gedanken zu machen. Ich würde also jedem empfehlen, sich mit diesem Thema VOR der Bachelorarbeit zu beschäftigen. Sich während dem Schreiben gleichzeitig in Latex einzuarbeiten, dürfte mühsam und ablenkend sein.
     
    Viele Hochschulen bieten Dokumentenvorlagen zum Download an. Das ist natürlich komfortabel, weil man im Idealfall einfach losschreiben kann. Solche Vorlagen sind aber auch für Studierende anderer Hochschulen interessant, weil man sich etwas abschauen kann. Auch meine eigene Hochschule bietet im Rahmen des Moduls "Wissenschaftliches Arbeiten" so eine Vorlage. Die ist allerdings recht allgemein und auch nicht mehr ganz aktuell, so dass sie noch angepasst werden muss. Ich fand das aber zu schwierig, ohne Latex grundsätzlich zu begreifen. Für meine ersten Schritte hilfreich war das Buch "Wissenschaftliche Arbeiten schreiben" von Joachim Schlosser. Ganz alleine hätte das für die Erstellung meiner Vorlage nicht gereicht, aber es vermittelte mir ein Grundverständnis, das mir weitere Recherchen über das Netz erleichterte.
     
    Zum Schreiben verwende ich Atom mit entsprechenden Latex-Plugins. Atom arbeitet schön mit Git zusammen, das ich für die Versionskontrolle nutze. UML-Diagramme erstelle ich meist mit UMLet. Eine Literaturverwaltung wie Zotero oder Citavi erschien mir bislang übertrieben. Bislang ist alles in einer einfachen BibTEX-Datei. Ich habe probiert, meine Einträge mit JabRef zu editieren, fand das aber gar nicht komfortabler, weil manche für mich relevante Felder über mehrere Tabs verteilt waren, so dass ich mehr mit "Mausschubsen" als mit Schreiben beschäftigt war. Möglicherweise könnte man sich das anders konfigurieren, aber ich komme mit einem einfachen Texteditor eigentlich gut zurecht. Allerdings werden es allmählich mehr Quellen. Vielleicht muss ich das mit der Literaturverwaltung also noch einmal überdenken. Lohnen dürfte sich das vor allem für Schreibende, die regelmäßig wissenschaftliche Arbeiten verfassen.
     
    Fazit
     
    Insgesamt macht die Arbeit an der Bachelorarbeit viel Spaß. Es ist schön, nach vielen Jahren des angeleiteten Lernens ein eigenes Thema recherchieren und einer eigenen Idee folgen zu können. Wichtig ist natürlich der Austausch mit dem Erstbetreuer, der diesen Prozess zurückhaltend begleitet.
     
    Ich werde in Abständen wieder berichten.
  2. kurtchen
    Es ist soweit: Am Mittwoch habe ich meine Bachelorarbeit zur Post gebracht. Das war zwei Tage vor dem Abgabetermin. DHL hat die Sache dann noch ein bisschen spannend gemacht. Am nächsten Abend war mein Paket nämlich gerade einmal 10 km weit "gekrochen". Aber am übernächsten Tag kam es doch noch fristgerecht in Dortmund an.
     
    Natürlich sind mir schon am Tag nach der Abgabe Fehler aufgefallen, die ich auch beim x-ten Korrekturlesen nicht gesehen hatte. Ebenfalls typisch für mich: Sofort nach der Abgabe ist eine Erkältung ausgebrochen. Die hätte ich mir vorher nicht "gegönnt".
     
    Eigentlich hatte ich zur Entstehung der Bachelorarbeit ja mehrere Blogbeiträge schreiben wollen. Aber letztlich musste ich die knapp werdende Zeit in die Bachelorarbeit investieren. Mein Fernstudien-Blog war leider nicht das einzige Hobby, das in den letzten Monaten auf der Strecke blieb.
     
    Trotzdem nun ein paar Worte, die wie Sache nun eigentlich gelaufen ist.
     
    Inhaltliches
     
    Die Grundidee meiner Arbeit war ja ein Vergleich objektorientierter und funktionaler Programmierung an einem Fallbeispiel. Das Fallbeispiel war eine Variante des klassischen Travelling Salesman Problems: In eine Platine sollen von einem Roboter Löcher gebohrt werden. Ein Optimierer solle ein möglichst effiziente Abfolge der Löcher finden. Was genau effizient ist, bestimmt eine Bewertungsfunktion. Hier gab es als einfachste Funktion die euklidische Distanz. Eine Variante nahm an, dass ein Motor des Roboters defekt ist, und daher vertikale Bewegungen nur halb so schnell möglich sind wie horizontale. Eine andere Variante sah vor, dass der Bohrer für einen Bohrerwechsel zurück zum Ursprung kehren muss, falls der Durchmesser aufeinander folgender Löcher sich unterscheidet. Das hatte natürlich große Auswirkungen auf die gefundenen Routen. Die Routen wurden ja auch visualisiert und das war visuell z.T. ganz attraktiv, wie die Anmutung der Routen sich änderte, wenn eine andere Bewertungsfunktion gewählt wurde.
     
    Die Routen wurden mit drei verschiedenen Heuristiken optimiert:
    mit der einfachen und schnellen Nearest-Neighbour-Heuristik mit dem Sintflut-Algorithmus und mit einer Evolutionsstrategie  
    Die beiden letzten Heuristiken ahmen einen Evolutionsprozess nach. Der Sinflut-Algorithmus erzeugt dabei Routenvarianten allein durch Mutation. Außerdem arbeitet er mit einer minimalen Population von nur zwei Individuen: Der bisherigen Lösung und einer neuen Lösung, die akzeptiert oder verworfen wird. Die Evolutionsstrategie simuliert eine größere Population. Sie erzeugt Routenvarianten nicht nur durch Mutation sondern auch durch Rekombination. Sie ahmt also "sexuelle Fortpflanzung" nach. Interessant war dann z.B. die Frage, was geeignete Mutations- und Rekombinationsoperatoren für ein Travelling Salesman Problem sind.
     
    Die beiden Heuristiken unterscheiden sich auch beim Selektionsmechanismus. Sintflut arbeitet mit der Metapher eines steigenden Wasserspiegels. Eine Routenvariante wird akzeptiert, solange ihre "Fitness" nur besser als der momentane Wasserspiegel ist. Auch dann, wenn sie gegenüber der letzten Routenvariante schlechter ist. Das ist entscheidend, damit der Algorithmus ein lokales Optimum überwinden kann. Mit steigendem Wasserspiegel wird die Selektion immer härter, so dass gegen Ende der Optimierung nur noch Verbesserungen akzeptiert werden. Sintflut geht also nach und nach in einen sogenannten Bergsteiger-Algorithmus über. Meine Fallstudie arbeitete mit einer variablen Regenrate. Wenn die Optimierung stagnierte, regnete es gar nicht. Wenn sie voran schritt, regnete es umso stärker, je größer die Differenz zwischen momentaner Fitness und Wasserspiegel war.
     
    Bei der Evolutionsstrategie wurde die Selektion durch den Wettbewerb innerhalb eine Population bestimmt. Meine Implementierung arbeitete mit einer (µ+λ)-Selektion. Dabei steht µ für die Elterngeneration und λ für die durch Rekombination von Genen und Mutation entstandenen Kinder. Die Kinder geraten also in Wettbewerb mit der Generation ihrer Eltern. Theoretisch könnte man dieser Form der Selektion ein Individuum beliebig viele Generationen überlegen, wenn seine Fitness nur hoch genug ist. Es gibt viele mögliche Selektionsoperatoren. Individuen mit hoher Fitness haben eine höhere Chance, die Selektion zu überleben, aber wie bei der natürlichen Selektion spielt i.d.R. auch der Zufall eine Rolle.
     
    Am besten funktionierte der noch vergleichsweise einfache Sintflut-Algorithmus. Die Evolutionsstrategie war nicht nur langsamer sondern brachte auch etwas schlechtere Ergebnisse. Ich vermute, dass lag am früh einsetzenden Selektionsdruck durch Wettbewerb innerhalb der Population. Der führte dazu, dass die Optimierung früher als bei Sintflut in einem lokalen Optimum hängenblieb. Es wäre spannend gewesen, mehr mit den Selektionskriterien zu spielen, um zu schauen, ob man Sinflut so nicht doch einholen kann. Auch weiß ich inzwischen, dass es bessere Rekombinationsoperatoren gegeben hätte. Leider fehlte mir die Zeit, diese noch zu implementieren und auszuprobieren. Aber es war schon faszinierend anzusehen, wie das Duo aus Mutation und Selektion eine Route optimiert. Die Software hatte ein einfaches GUI, das periodisch Momentaufnahmen der laufenden Optimierung zeigte. Der Moment, in dem es erstmals klappte, und man zuschauen konnte, wie die Routenlängen fielen, war schon sehr befriedigend.
     
    Allerdings war heuristische Optimierung ja nur das Fallbeispiel für einen Vergleich der Programmierparadigmen. Darum habe ich die gleichen Heuristiken in Java, Scala und Clojure implementiert.
     
    Meine persönliche Motivation für dieses Thema war, dass ich eine empfundene fachliche Lücke meines Studiums schließen wollte. Ich wollte funktionale Programmierung und funktionale Programmiersprachen besser kennenlernen, als das im Curriculum meines Studiums vorgesehen war. Dieser Wunsch ging für mich in Erfüllung. Bei der Implementierung der Optimierer in Scala und Clojure konnte ich viele Aspekte funktionaler Programmierung erleben und anwenden: Funktionen höherer Ordnung, (End-)Rekursion, Verwendung persistenter Datenstrukturen, Closures, partielle Funktionen, Lazy Evaluation und Lazy Sequences und einiges mehr. Wie erwartet, war es so in vielen Fällen möglich, kompakteren und dennoch gut lesbaren Code zu schreiben. Vor allem war der funktionale Code oft deklarativer als der imperative. Er war also eher eine Beschreibung der Problemlösung als eine kleinschrittige Handlungsanweisung für den Computer. Im Vergleich zur objektorientierten Programmierung war es schon faszinierend, sich als Programmierer so gegenüber der Maschine ausdrücken zu können.
     
    Leider hatte insbesondere die Verwendung persistenter Datenstrukturen ihren Preis. Die in Scala implementierten Optimierer liefen deutlich langsamer als ihre Gegenstücke in Java. Die Performance ließ sich verbessern, indem man (zumindest vorrübergehend) doch veränderliche Datenstrukturen verwendete. Leider fiel der Code dann nicht mehr so elegant und deklarativ aus. Er ähnelte wieder stärker den imperativen Lösungen. Auf einem höheren Abstraktionsniveau mit dem Computer zu kommunizieren hat also einen Preis.
     
    Obwohl Scala Java syntaktisch viel ähnlicher ist als Clojure, dauerte es länger, eine Heuristik von Java nach Scala zu portieren. Die Portierung von Scala nach Clojure war dagegen meist sehr schnell erledigt, obwohl die lispoide Syntax für mich anfangs sehr fremdartig war. An dieser Stelle war spürbar, was es heißt, sich innerhalb eines Programmierparadigmas oder eben zwischen verschiedenen Programmierparadigmen zu bewegen. Bleibt man innerhalb eines Paradigmas, hat man das Gefühl, alle Sprachen sind gleich. Wechselt man zwischen den Paradigmen, merkt man, dass jede Sprache ihr Paket an impliziten Denkweisen und Lösungsstrategien mit sich trägt.
     
    Clojure war als dynamisch typisierte Sprache natürlich noch einmal deutlich langsamer als Scala. Bei Clojure bedauere ich, dass die Zeit nicht reichte, um Metaprogrammierung mit Makros auszuprobieren.
     
    Scala gefällt mir als Programmiersprache gut. Ich finde es z.B. toll, dass man es einerseits als funktionale aber andererseits auch als objektorientierte Sprache verwenden kann. Auch wenn man objektorientiert programmiert, erlaubt es an vielen Stellen kompakteren und zugleich besser lesbareren Code als Java. Ich glaube, es gibt in meiner Region sogar ein Softwareunternehmen, das diese Sprache produktiv einsetzt. Inzwischen wäre ich auch neugierig, mit Kotlin eine weitere multi-paradigmatische Sprache auf der JVM kennenzulernen.
     
    Betreuung
     
    Meinen Erstbetreuer kannte ich schon von der Projektarbeit. Er bekam fortlaufend Textbausteine geschickt. Wie in Aussicht gestellt, kamen anfangs mehr Rückmeldungen und mit fortschreitender Arbeit wurde es knapper. Das fand ich genau richtig. Ich habe mich gut begleitet gefühlt, hatte aber auch den Eindruck, selbst für meine Bachelorarbeit zuständig zu sein. Toll war für mich, dass mir das Studienbüro einen Betreuer vermitteln konnte, der für mein Wunschthema offen war.
     
    Ich bin ein bisschen gespannt, was mein Zweitbetreuer zu meiner Arbeit sagen wird. Er bekam sie erst am Schluss, als sie fertig war, so dass ich ihn noch nicht richtig kennenlernen konnte. Aber beim Kolloquium muss ich mich ja den Fragen beider Betreuer stellen.
     
    Mal schauen, wie lange es nun dauert, bis eine Rückmeldung kommt. Ich werde im Blog berichten.
     
    Tools und Werkzeuge
     
    Lohnend war in jedem Fall, dass ich mir schon letztes Jahr die Mühe gemacht hatte, eine brauchbare LaTeX-Vorlage zu erstellen. Für eine Arbeit mit vielen Abbildungen, Fußnoten, Querverweisen, Verzeichnissen und Quellenangaben ist es sehr angenehm, sich Dank LaTeX aufs Schreiben konzentrieren zu können und sich nicht mit dem Layout herumschlagen zu müssen.
     
    Meine Quellen habe ich als einfache Textdatei mit einem Texteditor erfasst. Ich war anfangs der Ansicht, für eine Bachelorarbeit würden es ja wohl nicht so viele Quellen werden, so dass eine Literaturverwaltung mir übertrieben vorkam. Am Ende wurden es doch mehr Quellen als ich gedacht hätte. Stünde ich noch einmal am Anfang, würde ich eine Literaturverwaltung verwenden.
     
    Als IDE habe ich IntelliJ verwendet. Die hat eine gute Unterstützung für Scala. Man kann sie auch für Clojure verwenden. Allerdings hat es sich als etwas schwierig erwiesen, Scala und Clojure im gleichen Projekt zu verwenden. (Dazu nur ein Beispiel: Scala-Projekte nutzen als Build Tool bevorzugt das SBT. Clojure-Projekte verwenden meist Leinigen. Prinzipiell müsste es möglich sein, mit dem SBT auch Clojure oder mit Leiningen auch Scala zu compilieren, aber ein entsprechendes Setup habe ich nicht hinbekommen.)
     
    Für die Erstellung von UML-Diagrammen habe ich UMLet verwendet. Es ist ein bisschen "spartanisch", aber dafür ist es auch schlank und erschlägt einen nicht mit der Vielfalt seiner Features.
     
    Zeitmanagement
     
    Im Großen und Ganzen hat meine Zeiteinteilung funktioniert. Inzwischen bin ich alt genug, um begriffen zu haben, dass ein noch so guter Plan nie hinhaut und man daher stets Puffer für Unerwartetes einplanen muss.
     
    Die hätten allerdings noch ein bisschen üppiger ausfallen dürfen. Insgesamt habe ich mir doch mehr vorgenommen, als im Rahmen einer Bachelorarbeit realistisch war. So musste ich gegen Ende auf ein paar Themen und Aspekte verzichten, die ich gerne noch erkundet hätte. Zum Beispiel bietet Scala nebenläufige Programmierung auf einem höheren Abstraktionsniveau mit Aktoren. Die hätte ich gerne für die Evolutionsstrategie verwendet, aber dafür reichte die Zeit nicht mehr.
     
    Es wäre auch gut gewesen, am Ende mehr Zeit für Korrekturen zu haben. Eigentlich hatte ich dafür eine ganze Woche eingeplant, aber dann musste es doch schneller gehen. Zwar hatte ich zwischendurch immer wieder Kapitel gelesen und überarbeitet, aber ich war doch jedes Mal wieder erstaunt, dass man auch nach dem x-ten Durchgang wieder etwas findet.
    Das Drucken und Binden war diesmal stressfrei, weil ich schon eine ganze Weile vorher im Copyshop vorstellig geworden war und vorgefühlt hatte, wie ausgelastet die Mitarbeiter waren. So konnte ich eine klare Vereinbarung treffen und das lief dann auch genau so.
     
    Ausblick
     
    Nun heißt es, loslassen und abwarten, was meine Betreuer sagen. Somit habe ich, eigentlich zum ersten Mal seit Beginn meines Studium, so etwas wie "Leerlauf". Das kann ich inzwischen aber auch gut gebrachen. In den letzten Monaten ist einiges auf der Strecke geblieben; Hobbies zum Beispiel. Gestern habe ich zum ersten Mal wieder ein bisschen Klavier geübt. Das möchte ich nun wieder regelmäßiger machen.
     
    Ich hoffe ein bisschen, dass es noch vor Jahresende zum Kolloquium kommt. Wäre schön, wenn ich das Studium mit dem alten Jahr abschließen könnte.
     
    Auch aus einem praktischen Grund wäre das gut. Der Kindergarten, in dem ich während meines gesamten Studiums gearbeitet habe, kann mich ab Januar nicht mehr beschäftigen. Es sind Zuschüsse weggefallen, die für die Finanzierung meiner Stelle wesentlich waren. Darum stehen zwingend berufliche Veränderungen an.
     
    Meine Idee bei Aufnahme des Studiums war ja, einen Branchenwechsel hinzulegen: Von der Frühpädagogik zur IT. Das Problem dürfte dabei mein Alter werden. Man liest zwar beinahe täglich in der Zeitung, dass Informatiker gesucht werden. Aber bald werde ich erleben, ob das auch gilt, wenn sie Berufseinsteiger im mittleren Alter sind.
     
    Sorgen muss ich mir eigentlich nicht machen, denn in meiner Region kann man als Kindergärtner kaum arbeitslos werden. In den letzten Wochen habe ich neue Kinder eingewöhnt und wieder einmal gemerkt, wie identitätsstiftend diese Arbeit in der ersten Hälfte meines Berufslebens für mich war. Eigentlich bin ich immer noch stolz, dass ich mich als junger Erwachsener für diesen Beruf entschieden habe; zu einer Zeit, als es noch absolut unüblich war, dass Männer in Kindergärten arbeiteten. Insofern mache ich mich nicht verrückt. Falls die Arbeitgeber mir nicht zutrauen, in meinem Alter noch ein guter Informatiker zu werden, bleibe ich eben Kindergärtner. Das kann ich immer noch ganz gut.
     
    Wenn die Bachelorarbeit bestanden ist, bleibt als letzter Baustein des Studiums tatsächlich nur noch das Kolloquium. Darüber mache ich mir im Moment aber noch keine Gedanken. Aktuell versuche ich, nach den intensiven letzten Monaten ein bisschen Abstand zu meiner Bachelorarbeit zu gewinnen.
     
    Für diesen Blog heißt das, dass es wohl nicht mehr allzu viele Beiträge werden. Ich möchte noch über das Kolloquium berichten. Und danach noch einmal rückblickend, den Studiengang als Ganzes betrachten. Aber möglicherweise besuche ich vorher noch einmal einen Präsenztag in Dortmund, so dass es vielleicht auch noch drei Beiträge werden könnten.
     
    Bildergalerie
     

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

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

     
    Das dritte Bild zeigt eine mit dem Sintflut-Algorithmus optimierte Tour. Hier wurde die Route in ca. 8 Sekunden auf 5321 mm verkürzt. Sie ist somit lediglich 4,7% länger als die optimale Route. Lässt man es langsamer regnen, so braucht die Optimierung etwas länger, aber der Algorithmus findet kürzere Routen, die nur noch ca. 2,5% länger sind als die optimale Route.
  3. kurtchen
    Das Abschlusskolloquium ist die letzte Prüfungsleistung in den Informatik-Studiengängen bei Springer Campus. Die Bachelorarbeit wird in einer Präsentation vorgestellt, die 20 Minuten dauern soll. Es folgt ein Prüfungsgespräch mit Erst- und Zweitprüfer. Ich hatte bei Abgabe meiner Bachelorarbeit damit gerechnet, dass es bis zum Kolloquium recht lange dauern würde. Unsere Studiengangskoordinatorin hatte ich mich bei Abgabe der Arbeit nach meinen beruflichen Plänen gefragt. Ich hatte ihr signalisiert, dass ich es schon gut fände, wenn ich zumindest noch vor Jahresende abschließen könnte. Insofern hatte ich auf einen Termin kurz vor Weihnachten gehofft.
     
    Mein Erstprüfer und Betreuer meldete sich dann aber schon knapp drei Wochen nach der Abgabe, um mir einen Termin für Ende November anzubieten; an einem Montag Nachmittag um 16 Uhr. Ich war erst ziemlich überrascht, dass er mit der Korrektur schon so weit fortgeschritten war. Andererseits hatte ich ihm während des Schreibens immer wieder Kapitel der entstehenden Arbeit geschickt, so dass er sie in weiten Teilen schon kannte. Zunächst war ich etwas angespannt, weil ich mich nach der Abgabe auf ein paar Wochen "La dolce vita" gefreut hatte. Nun musste ich die Abschlusspräsentation vorzubereiten. Andererseits war es auch verlockend, noch vor dem ersten Advent das Studium abzuschließen. Und ausnahmsweise einmal eine ruhige Vorweihnachtszeit zu genießen. Der nächste Termin wäre auch erst wieder im neuen Jahr möglich gewesen. Also habe ich zugegriffen.
     
    Bei der Vorbereitung der Präsentation war mein größtes Problem, die umfangreiche Arbeit auf 20 Minuten einzudampfen. Letztlich lief es darauf hinaus, knapp vorzustellen, was das Gesamtkonzept war, und dann stichprobenartig einige Punkte vorzustellen, die mir besonders wichtig erschienen. Insgesamt kam ich so auf 13 Folien.
     
    Themen waren:
    Was unterscheidet funktionale Programmierung von objektorientierter Programmierung? Was ist das Travelling Salesman Problem? Was ist heuristische Optimierung? Grobe Arbeitsweise des Sintflut-Algorithmus. (Die anderen Verfahren habe ich nicht vorgestellt.) Wiederkehrende Muster funktionaler Programmierung in der Fallstudie: Funktionen höherer Ordnung und Funktionsverkettung. Performanceunterschiede zwischen objektorientierter und funktionaler Programmierung. Das Muster "Focussed Mutability" mit dem man die Performance-Nachteile funktionaler Sprachen z.T. ausgleichen kann.  
    Das Material meiner Arbeit musste ich nicht noch einmal durchgehen. Da die Abgabe noch nicht so weit zurück lag, war ich noch gut im Thema.
     
    In der mündlichen Prüfung zum Modul "Präsentieren" hatte ich die Rückmeldung bekommen, dass meine Foliengestaltung recht "altbacken" wirkte. Insofern habe ich einen Tag investiert, um mir verschiedene Präsentationsframeworks anzuschauen. Auf einem unserer Präsentage hatte ich eine Beamerpräsentation von Prof. Jörges (FH Dortmund) gesehen, die er mit dem Framework reveal.js erstellt hatte. Da schreibt man seine Inhalte in HTML (oder Markdown) und braucht sich nicht um graphische Gestaltung kümmern. Das überlässt man einer CSS-Stilvorlage. Die Präsentation läuft dann im Browser. Man kann mit einem geeigneten Plugin die Folien auch in PDFs wandeln, die sich ausdrucken lassen. An dem Ansatz gefiel mir die Trennung von Inhalt und graphischer Gestaltung. Das erinnerte mich an LaTeX, wo ich ja auch nur beschreibe, WAS ich will, und es dem Satzsystem überlasse, WIE das layoutet wird. Das habe ich also mal ausprobiert und die Ergebnisse haben mir auf Anhieb ganz gut gefallen.
     
    Alternativ habe ich auch mal in impress.js angeschaut. Das ist ebenfalls ein Javascript-Framework für Präsentationen. Hier können Inhalte frei in einem dreidimensionalen Raum platziert werden. Die Präsentation ist dann eine Kamerafahrt durch diesen Raum. Das kann sehr chic aussehen. Allerdings ist es auch nicht ganz trivial, diese Möglichkeiten sinnvoll auszuschöpfen.
     
    Als dritte Variante habe ich das LaTex-Paket powerdot angetestet. Damit kann man recht übersichtliche Folien erstellen. Da ich in LaTeX gut eingearbeitet war, wäre ich damit wahrscheinlich am schnellsten voran gekommen. Die Stilvorlagen waren aber ziemlich nüchtern und erinnerten mich an meine mit LibreOffice Impress erstellen Folien. Empfehlen würde ich LaTeX, wenn man Folien mit vielen Formeln setzen muss oder regelmäßig Fußnoten in den Folien unterbringen möchte. Das geht damit sehr komfortabel.
     
    Meine Wahl fiel schließlich auf reveal.js, das mit einem entsprechenden Plugin Formelsatz in LaTeX-Syntax ermöglicht. Wenn man ein bisschen HTML oder Markdown kann, aber nicht so gerne graphisch gestaltet, ist das eine ziemlich gute Möglichkeit, schnell eine Präsentation zu gestalten.
     
    Dann galt es, meinen Vortrag zu üben, um die Inhalte frei sprechend aber eben in 20 Minuten rüber zu bringen. Anfangs lag ich regelmäßig über der Zeit, aber es wurde von Durchgang zu Durchgang besser, so dass ich zumindest in die Nähe der 20 Minuten kam.
     
    Am Tag der Prüfung bin ich vor der Abreise nach Dortmund noch ins Schwimmbad gegangen, um Stresshormone abzuarbeiten. Ich bin dann ziemlich entspannt nach Dortmund gefahren. Auf der Fahrt bin ich meinen Vortrag noch ein paar mal gedanklich durchgegangen. In Dortmund blieb noch Zeit für ein verspätetes Mittagessen.
     
    Gelegentlich möchten andere Studierende an so einem Kolloquium teilnehmen, aber da meines an einem Montag um 16 Uhr stattfand, herrschte im Haus schon allgemeine Aufbruchstimmung in den Fluren. Ich stand also lediglich vor meinen Prüfern.
     
    Das Üben und Feilen an den Formulierungen hatte anscheinend etwas gebracht. Bei der Präsentation blieb ich erstmals knapp unter den anvisierten 20 Minuten. Dafür blieb Zeit, im anschließenden Prüfungsgespräch an der Flipchart vorzustellen, wie die in der Fallstudie verwendeten Mutationsoperatoren funktionieren. Dann ging es unter anderem um die Frage, ob die Performance-Nachteile funktionaler Sprachen eines Tages durch optimierende Compiler überwunden werden könnten. In Teilbereichen gibt es so etwas ja schon. Zum Beispiel übersetzt der Scala Compiler endrekursive Funktionen in Schleifen, weil die JVM gar keine Tail Call Optimierung unterstützt. Aber insgesamt ist nicht damit zu rechnen, dass es derartig optimierende Compiler geben wird, weil man bei funktionaler Programmierung nicht nur mit anderen Sprachen sondern auch mit anderen Datenstrukturen und Lösungsstrategien arbeitet.
     
    Gefühlt ging das Prüfungsgespräch ziemlich schnell rum. Die Notenfindung dauerte auch nicht lange. Mit dem Ergebnis war ich zufrieden. Die Note ist eine Gesamtnote für die Bachelorarbeit und das Colloquium. Gewichtet werden diese beiden Prüfungsteile im Verhältnis 2:1. Da das Kolloquium einen recht großen Anteil an der Gesamtnote der Bachelorarbeit hat, ist es empfehlenswert, auch dieser Prüfungsleistung genügend Zeit und Aufmerksamkeit zu widmen.
     
    Und damit ist das Studium nun rum. Insgesamt habe ich etwas mehr als 8 Semester gebraucht. Als es zwischenzeitlich mit den Modulen sehr schnell voranging, hatte ich ja sogar einmal gehofft, schon um Weihnachten 2018 fertig zu werden. Allerdings erwiesen sich dann die Projektarbeit und die Bachelorarbeit doch als recht aufwendig. Andererseits boten diese Module die beste Gelegenheit, eigenen Interessen zu folgen. Insofern hat es Spaß gemacht, hier Zeit zu investieren.
     
    Auf der Rückfahrt habe ich angefangen, das Hörbuch "Krabat" zu hören. Ich erwähne das hier, weil ich in den vergangenen vier Jahren kaum fiktionale Literatur gelesen habe, obwohl ich eigentlich sehr gerne lese. Das war eines der Opfer, die ich für mein Studium bringen musste. Insofern ist es schön, jetzt auch wieder Zeit für solche Dinge zu haben. Auf mich wartet inzwischen ein halbes Billy-Regal voll mit Romanen, Comics oder auch Sachbüchern, die nichts mit Informatik zu tun haben. Es wird eine Weile dauern, bis dieser Stau aufgelöst ist. Seltsamerweise ist bei mir noch gar nicht so richtig angekommen, dass mein Studium nun vorbei ist. Es bleibt eine innere Unruhe, ein unbestimmtes Gefühl, mich bald wieder an den Schreibtisch setzen zu müssen, weil ich doch bestimmt noch etwas zu tun habe.
     
    Nun bin ich natürlich gespannt darauf, die Urkunde in den Händen zu halten. Von Kommilitonen habe ich sehr unterschiedliche Erfahrungswerte gehört, wie lange so etwas dauern kann. Das wird dann wahrscheinlich einer meiner letzten Beiträge in diesem Blog.
  4. kurtchen
    Springer Campus bietet neben den Bachelor-Studiengängen "Web- und Medieninformatik" und "Wirtschaftsinformatik" auch die Möglichkeit, durch Belegung bestimmter Modul-Kombinationen Hochschulzertifikate zu erwerben. Diese kann man als eigenständige Weiterbildung auf FH-Niveau nutzen. Studierende in den Bachelorstudiengängen erhalten die Zertifikate automatisch, sobald die entsprechenden Modul-Kombinationen belegt und bestanden wurden. Die Zertifikate können so als Meilensteine auf dem langen Weg zum Bachelor dienen.
     
    Für mich persönlich waren diese Zertifikate auch ein Grund, mich für Springer Campus bzw. die FH Dortmund als Studienanbieter zu entscheiden. Vor Aufnahme meines Studiums war ich mir nämlich gar nicht sicher, ob meine Ausdauer für einen kompletten Bachelor reichen würde. Und natürlich könnten auch unerwartete familiäre oder berufliche Ereignisse ein so langfristiges Projekt wie ein berufsbegleitendes Studium zum Scheitern bringen. Insofern habe ich die Zertifikate auch als eine Art Fallschirm betrachten. Falls ich unterwegs abspringen muss, war nicht alles vergebens. Es gibt Etappenziele und auch ein nicht komplett abgeschlossenes Studium kann ein (vorzeigbares) Ergebnis haben.
     
    Und so sieht so ein Hochschulzertifikat aus. (Persönliche Informationen habe ich entfernt).

     
    Im Bereich Informatik werden zur Zeit folgende Zertifikate angeboten:
    - Junior-Programmierer
    - Junior Data-Analyst
    - Anwendungsprogrammierer
    - Web-Entwickler
    - Web-Frontend-Programmierer
    - Software-Architekt
    - Software-Manager
    - Requirements Engineer
     
    Zum Teil überschneiden sich die Inhalte der Zertifikate. Ich werde voraussichtlich außer dem Zertifikat "Software-Architekt" keine weiteren Zertifikate im Bereich Software-Technik erwerben. Zwar habe ich auch einige Module aus dem Zertifikat "Requirements-Engineer" schon abgeschlossen, aber dazu gehören auch noch Module, die ich im Wahlpflichtbereich belegen könnte aber - wegen stärkerem Interesse an anderen Themen - nicht belegen möchte.
  5. kurtchen
    Im März 2019 wird es in Dortmund keinen Präsenztag für Studierende in den IT-Studiengängen von Springer Campus geben. Grund dafür sind die geringen Teilnehmerzahlen der letzten Jahre. Darüber informierte uns das Studienbüro in den virtuellen Cafés unserer Studiengänge.
     
    Diese Entscheidung bedauere ich sehr. Leider kann ich die Gründe gut nachvollziehen. Ich erinnere mich noch lebhaft an meinen ersten Präsenztag im September 2015. Dieser war der letzte, bei dem Anwesenheitspflicht bestand. Entsprechend hoch waren die Teilnehmerzahlen. An diesem Tag wurde uns verkündet, dass die Teilnahme wegen einer Gesetzesänderung künftig freiwillig sei. Die Reaktion aus dem Plenum ließ große Zustimmung dafür erkennen. Auch ich fand das damals gut. Da ich nicht in der Nähe wohne, ist für mich die Teilnahme an einem Präsenztag in jedem Fall mit einer Übernachtung verbunden. Der Wegfall der Präsenzpflicht schien mir die Vereinbarkeit von Studium, Beruf und Familienleben zu verbessern. Es ist gut, eine Wahl zu haben.
     
    Ich habe mir trotzdem jedes Mal die Zeit genommen, nach Dortmund zu fahren, und zwar nicht allein wegen der Möglichkeit, am Präsenztag Prüfungen abzulegen. Leider gingen die Teilnehmerzahlen schnell zurück. Manchmal hatte ich den Eindruck, dass manche Studierende allein wegen der Prüfungen anreisten und die Vorträge ausfallen ließen.
     
    In der Summe standen nun anscheinend der Aufwand der Präsenztage und ihre Nutzung durch uns Studierende in keinem vernünftigen Verhältnis mehr. Darum soll es in diesem Jahr nur noch einen Präsenztag im September geben, an dem dann auch die Absolventenfeier stattfindet.
     
    Inzwischen stelle ich meine ursprüngliche Sichtweise auf die Befreiung von der Präsenzpflicht in Frage. Ich fand es damals gut, eine Wahl zu haben, aber die habe ich ja nun nicht mehr. Natürlich kann es viele gute Gründe geben, NICHT an einem Präsenztag teilzunehmen. Aber dass das Angebot so wenig genutzt wurde, spricht in meinen Augen dafür, dass viele Studierende die Vorzüge eines Präsenztages nicht ausreichend wahrnehmen. Nur zwei davon möchte ich hier noch einmal nennen:
    Die angebotenen Tutorien in Mathematik, die mir sehr geholfen haben, eine Lernstrategie für das vergleichsweise schwierige Modul Mathe2 zu entwickeln. Dabei wird gerade dieses Modul immer wieder als Herausforderung beschrieben. Früher oder später braucht man einen Betreuer für eine Projektarbeit und für eine Bachelorarbeit. Dieser Betreuer spielt eine wichtige Rolle im Prozess. Ich empfinde es als besonderen Nachteil eines Fernstudiums, dass wir die Professoren kaum in der Lehre erleben und so ein Gefühl dafür entwickeln können, bei wem wir gerne unsere Abschlussarbeit schreiben würden. Der Präsenztag war eine der wenigen Gelegenheiten dafür.  
    Ich habe gelesen, dass durch eine erneute Gesetzesänderung die Präsenzpflicht an Hochschulen in NRW wieder möglich werden soll. Über die Details bin ich nicht im Bilde. (Ich lebe auch nicht in NRW.) Als Fernstudierender bin ich eigentlich der Auffassung, das Studierende in hohem Maß selbst Verantwortung für ihren Lernprozess übernehmen müssen und dazu auch in der Lage sind. Und zwar unabhängig davon, ob sie Präsenz- oder Fernstudierende sind. Ich glaube, dass viele Menschen lernen und sich entwickeln wollen, aber nicht immer die Möglichkeiten dafür vorfinden, die zu ihrer Lebenssituation passen. Daher bin ich eigentlich stets dafür, externe Hürden, Vorgaben und Beschränkungen abzubauen, und stattdessen Gelegenheiten zu schaffen. Mit dem Beispiel unseres Präsenztages vor Augen denke ich darüber nach, ob mein Menschenbild nicht zu optimistisch ist. Ich kann nun zumindest nachvollziehen, dass Präsenzpflicht für viele Menschen ein bildungspolitisches Thema ist.
     
    Ich genieße es sehr, bei einem vergleichsweise kleinen Anbieter zu studieren. Auch wenn vieles doch per Telefon oder Mail geregelt wird, man kennt die Menschen am anderen Ende der Leitung. Das liegt auch an den Präsenztagen.
  6. kurtchen
    Im Bereich Mathematik möchte ich nicht nur die einzelnen Module beschreiben, sondern auch etwas zum Gesamtkonzept sagen, wie es für mich bislang erkennbar ist. Aus Gesprächen mit Kommilitonen weiß ich, dass Mathematik für viele Studierende ein "Angstfach" ist. Auch eine lästige Pflicht, die man irgendwie "abhaken" und dann hinter sich lassen möchte. Selten wird Mathematik als etwas beschrieben, das Spaß gemacht hat.
     
    Die anscheinend weit verbreitete Abneigung gegen Mathematik teile ich nicht. Zu Schulzeiten habe ich im Abitur einen Mathe-Leistungskurs gewählt. (Damals, als es noch Leistungskurse gab.) Mathematik gehörte für mich zu den Schulfächern, die mir Spaß gemacht haben und die mir relativ leicht gefallen sind. Das muss man vielleicht im Hinterkopf behalten, wenn man meine folgenden Modulberichte liest. Ich bin bislang gut zurechtgekommen, aber ich mag Mathe auch.
     
    Allerdings ist mein Abitur schon lange her. Und seit der Schule hatte ich wenig Gelegenheit, mich mit Mathematik zu beschäftigen, weil ich mir einen Beruf ausgesucht habe, der keinerlei Bezüge zu diesem Gebiet hat. Als ich mich über Informatik-Studiengänge informiert habe, spielte es also schon eine Rolle für mich, was in Mathematik verlangt wird. Verschiedene Unis und FHs bieten auch Vorkurse an, die den Einstieg erleichtern sollen. Einen solchen Kurs durchgearbeitet hatte ich nicht, aber reingeschnuppert. Und dabei gemerkt, dass ich mich noch ziemlich gut an den Stoff bis zur 10. Klasse erinnerte, von der Oberstufenmathematik aber nicht mehr viel übrig war.
     
    Die W3L bietet die Möglichkeit, sich zu den Modulen Probekapitel runterzuladen und mal "reinzuschnuppern". Darum wusste ich, dass es im Modul "Mathe2" bzw. "Mathematik für Informatiker" um Analysis und Lineare Algebra geht. Inhalte, die mir zu Abiturzeiten geläufig waren, mir aber nach vielen Jahren fremd vorkamen. Der Stoff von "Mathe3" bzw. "Angewandte Mathematik" war mir unbekannt. Hier geht es um Numerik, Grafik, Kryptik. 
    Ich hatte also vor Mathematik nicht unbedingt Angst aber doch Respekt, weil mir dämmerte, dass es schon ein Stück Arbeit werden würde, mich nach langer Abstinenz wieder in dem Thema einzufinden.
     
    Im Bachelor-Studiengang "Web- und Medieninformatik" der W3L gibt es insgesamt 4 Mathematik-Module mit je 5 ECTS. Sie heißen:
    - Mathe1: Mathematisch-logische Grundlagen der Informatik
    - Mathe2: Mathematik für Informatiker
    - Mathe3: Angewandte Mathematik
    - Statistik
     
    Die Studierenden im Studiengang "Wirtschaftsinformatik" müssen Mathe3 "Angewandte Mathematik" nicht belegen, können es aber im Wahlpflichtbereich buchen.
    Da ich inzwischen das dritte Modul "Angewandte Mathematik" bearbeite, kann ich sagen, dass Mathe2 und Mathe3 inhaltlich sehr eng aufeinander aufbauen. Die beiden Module sind vom gleichen Autor geschrieben, der zugleich auch mein Tutor ist. Hier ist ein modulübergreifendes Konzept aus "einem Guss" erkennbar.
     
    Das Modul Mathe1 hat drei Autoren. Man merkt hier einen anderen Stil. Es geht erkennbar darum, den Studierenden einen sanften (Wieder-)Einstieg ins Fach zu bieten. In allen drei Modulen gibt es ein Bemühen, inhaltliche Bezüge zur Informatik herzustellen. Sehr gelungen finde ich das bislang in Mathe1 und Mathe3 gelöst. In Mathe2 wirkt es auf mich bislang ein wenig bemüht. Allerdings muss man sich klarmachen, dass Lineare Algebra und Analysis unbedingte Voraussetzungen für die anwendungsbezogenen Themen Numerik, Grafik und Kryptik aus dem dritten Modul sind. Da muss man also einfach durch, auch wenn man zwischenzeitlich nicht sieht, was das genau mit Informatik zu tun hat.
     
    An den Präsenztagen werden üblicherweise Tutorien zur Mathematik angeboten. Die bezogen sich bislang immer auf das Modul Mathe2, es ging also um Analysis und/oder Lineare Algebra. Dies scheinen die Themen zu sein, die den Studierenden am meisten Mühe machen.
     
    Zu Statistik kann ich bislang noch nichts sagen, da ich dieses Modul noch nicht belegt habe.
     
    Die W3L muss damit zurechtkommen, dass die Studierenden mit recht unterschiedlichen Vorkenntnissen kommen. Es gibt Studierende mit Abitur, das im Idealfall noch nicht lange zurückliegt. Die finden insbesondere im Modul Mathe2 viel bekannten Stoff. Es gibt aber auch Studierende ohne Abitur, die z.B. nach einer Ausbildung zum Fachinformatiker studieren. Für die ist der in den Mathe-Modulen behandelte Stoff oft Neuland und die Bearbeitung ist entsprechend zeitaufwändiger. Es gibt aber auch Abiturienten, die sich mit den Mathe-Modulen schwerer tun, z.B. mit den Modulen Mathe1 und Mathe3. Weil dort nämlich Stoff behandelt wird, denn man aus der Schule in der Regel nicht kennt.
     
    Manche Studierende möchten die Mathe-Module einfach nur bestehen. Mathematik gilt als eines der Fächer, an denen sich entscheidet, ob man das Studium beenden kann. Viele Studierende sind daher der Meinung, dass man die Mathe-Module nicht vor sich herschieben sondern zügig angehen sollte. Wenn es schief geht, soll es bald schiefgehen, bevor man viel Zeit und Geld investiert hat.
     
    Aber natürlich gibt es auch Studierende, die die Mathematik-Module mit dem Ehrgeiz studieren, dort gute Leistungen zu erbringen. Mein bisheriger Eindruck ist: Die W3L hat ein Mathematik-Konzept, dass beiden Fraktionen etwas bietet. Wer die Klausuren einfach gerade so bestehen möchte, hat eine gute Chance, wenn er sich in der Vorbereitung auf bestimmte Grundlagen konzentriert, mit denen er relativ sicher Punkte holen kann. Wer wirklich gut abschneiden möchte, muss auch bereit sein, sich breiter vorzubereiten und etwas mehr Selbstständigkeit zeigen. Das betrifft hier vor allem den Bereich Bonuspunkte. Für die Präsenzklausuren ist die Stoffmenge ein bisschen eingeschränkt. Nicht alles, was im Kurs behandelt wird, kann auch in der Klausur drankommen. Das gibt den Leuten, die nur bestehen wollen, die Möglichkeit, sich bei der Vorbereitung ein bisschen zu spezialisieren. Bei den Abschlusstests kann aber ALLES drankommen und auch bei den Online-Klausuren wird breit geprüft. Wer also mit ein paar Bonuspunkten in die Abschlussklausur gehen möchte, der muss sich schon mit dem ganzen Stoff so auseinandersetzen, dass er sein Verständnis unter Beweis stellen kann.
     
    Mir gefällt, dass es hier ein Angebot gibt, aus dem Leute, die Mathematik mögen, etwas machen können; das aber auch Leuten, denen Mathematik nicht so leicht fällt, eine realistische Chance bietet, ihr Studium erfolgreich zu beenden und ihre Stärken in den anderen Bereichen auszuspielen.
     
    Bedenken muss man allerdings: Sowohl für die Web- und Medieninformatiker als auch für die Wirtschaftsinformatiker ist Mathematik Pflicht und die Module gehen genau wie alle anderen Module  in die Berechnung der Endnote ein.
     
    Abschließend möchte ich noch bemerken, dass die W3L ja mit der FH Dortmund zusammenarbeitet, die Mathematik-Module also FH und nicht Uni-Niveau haben. Gefragt ist also eher problemlösende Anwendung mathematischer Konzepte und weniger das Führen von Beweisen. Damit kann man eventuell in den Klausuren das letzte Quäntchen rausholen. Bestehen kann man aber auch, wenn man im Beweisen nicht so stark ist.
  7. kurtchen
    Das Modul "Grundlagen der Informatik 4: Algorithmen und Datenstrukturen" ist Pflicht für Studierende im Studiengang Web- und Medieninformatik. Die Wirtschaftsinformatiker dürfen es als Wahlpflicht-Modul belegen. Die W3L schlägt vor, es im vierten Semester nach GdI3 zu belegen. Nötig sind aber nur die Kenntnisse aus GdI2. Konkret sollte man gute Grundkenntnisse in objektorientierter Programmierung und in generischer Programmierung haben. Letzteres, weil die meisten Algorithmen im Kurs für generische Typen entwickelt werden. Wer sich auf diesen Kurs ein wenig vorbereiten will, sollte vor allem noch einmal das Kapitel zu generischer Programmierung aus GdI2 wiederholen.
     
    Auf GdI4 hatte ich mich sehr gefreut, weil Kenntnisse im Bereich Algorithmen und Datenstrukturen zu meinem Bild von einem Informatiker gehören. Mathematik oder BWL sind Teil sehr vieler Studiengänge und viele Naturwissenschaftler und Ingenieure lernen programmieren. Aber Algorithmen sind für mich ein wesentlicher Teil dessen, was die Informatik als eigenständige Disziplin auszeichnet.
     
    Ein bisschen hatte ich mich schon einmal mit dem Thema beschäftigt. Zu Schulzeiten hatte ich mal ein Buch über Algorithmen und Datenstrukturen, die damals noch in einer strukturierten Programmiersprache behandelt wurden. Hier ging es zum Beispiel um Sortieralgorithmen, Binärbäume und verkettete Listen. Als Schüler habe ich leider vieles nicht verstanden, obwohl ich das Thema sehr spannend fand. Nun wollte ich herausfinden, ob mir diese Konzepte inzwischen zugänglicher waren.
     
    Schon im ersten Teil des Kurses gab es erste Überlegungen zur Korrektheit und Komplexität von Algorithmen. Überlegungen zur Komplexität bei wachsender Problemgröße ziehen sich durch den ganzen Kurs. Dies ist wichtig, um später für ein gegebenes Problem eine vorteilhafte Datenstruktur oder einen geeigneten Algorithmus auswählen zu können. Das zweite Kapitel handelte von Rekursion. Hier ging es darum, ein Verständnis dafür zu entwickeln, was beim rekursiven Methodenaufruf im Speicher passiert. Klassisches Fallbeispiel ist das Problem der Türme von Hanoi. Interessant war eine allgemeine Strategie, rekursive Algorithmen in iterative Algorithmen umzuwandeln. Oft ist der Algorithmus dann nicht mehr so übersichtlich und nachvollziehbar. Dafür verbessert sich die Laufzeit und der Speicherbedarf. Bis hier fand ich den Kurs noch recht trocken. Der Stoff war durchaus interessant aber nicht das, was ich erwartet hatte.
     
    Das änderte sich im nächsten Kapitel, wo es um Suchalgorithmen ging. Im wesentlichen wurden hier die drei grundlegenden Strategien sequentielle Suche, binäre Suche und Hashing-basierte Suche behandelt. Der Kurs entwickelt die Codebeispiele in Java, weil das an der W3L die Lehrsprache ist. Aber ich habe rasch den Eindruck gewonnen, dass es in diesem Kurs eben nicht um Java sondern um ein Verständnis der Algorithmen und Datenstrukturen ging. Auch wenn immer wieder darauf verwiesen wird, was die Java-Klassenbibliothek schon fix und fertig anbietet. Denn natürlich wird man selten selbst die Algorithmen und Datenstrukturen aus dem Kurs implementieren. In der Regel wird man Bibliotheken benutzen, die sie zur Verfügung stellen. Sinn des Kurses ist eher, das man versteht, was man da benutzt und was das für Implikationen hat. Das macht sich auch ein wenig bei den Einsendeaufgaben bemerkbar. Ich hätte erwartet, hier vor allem Algorithmen implementieren zu müssen. Tatsächlich wurden viele Implementierungen im Lehrbuch schrittweise entwickelt. Oft ging es eher darum, diesen Code in kleinen Problemstellungen zu benutzen, ihn zu erweitern, zu ergänzen oder zu modifizieren.
     
    Im nächsten Kapitel ging es um Sortierverfahren. Es zerfiel in zwei Teile. Im ersten Teil ging es um die sogenannten direkten Verfahren: - Sortieren durch direkte Auswahl
    - Sortieren durch direktes Einfügen
    - Sortieren durch direktes Austauschen
    Diese Verfahren sind leicht zu verstehen aber sie sind langsam. Im zweiten Teil werden diese einfachen Verfahren schrittweise verbessert. Aus dem langsamen BubbleSort wird so z.B. der sprichwörtlich schnelle QuickSort-Algorithmus. HeapSort, QuickSort, ShellSort und MergeSort sind schon etwas schwieriger zu verstehen als die direkten Verfahren. Auch hier ist die Implementierung in Code das geringste Problem. Wichtiger ist, zu begreifen, wie auf der Datenstruktur (in der Regel ein Array) gearbeitet wird, wieviele Vergleiche und Tauschoperationen für große n anfallen, warum ein Verfahren terminiert und so weiter. Eine wichtige Frage ist auch immer wieder die sogenannte Stabilität eines Verfahrens. Hierbei geht es darum, ob sich die Reihenfolge von Elementen mit gleichem Schlüssel im Laufe des Sortierens ändern kann, oder ob sie "stabil" bleibt. Bei diesem Kapitel bedauerte ich nur, dass der BucketSort-Algorithmus nicht ausführlich vorgestellt wurde.
     
    Im nächsten Kapitel ging es um Datenstrukturen. Hier wurden eigene Implementierungen von Feldlisten (ArrayList) und verketteten Listen, von Stapeln (Stack) und Schlangen (Queue), von Mengen (Set) und Abbildungen (Map) entwickelt. Hier wurden immer wieder Bezüge zu den Klassen hergestellt, die Java von Haus aus mitbringt. Es war für mich wirklich schön, zu begreifen, was ich bislang nur benutzt hatte, endlich zu verstehen, was "unter der Haube" passiert. Im Rest des Kapitels ging es um Bäume, um das Einfügen und Löschen in Bäumen und um ausgeglichene Bäume. Also darum, wie man Bäume reorganisieren kann, um zu verhindern, dass sie im schlimmsten Fall zur Liste entarten. Die verschiedenen Baumrotationen fand ich leider im Lehrbuch zu knapp erklärt, um sie nachvollziehen zu können. Zum Glück werden Algorithmen und Datenstrukturen in praktisch allen Informatik-Studiengängen gelehrt. Es war so kein Problem im Internet Skripte und Folien anderer Unis und FHs zu finden und da war dann schließlich auch eine Darstellung dabei, mit der auch ich gut zurechtkam.
     
    Bis hier war ich mit dem Modul sehr zufrieden. Mit diesem Themen war dann wohl auch der Grundstock dessen abgehandelt, was zu einer einführenden Lehrveranstaltung "Algorithmen und Datenstrukturen" gehört. Von hier aus hätte es in verschiedene Richtungen weitergehen können. Die Autoren dieses Modul haben sich dafür entschieden, Algorithmen auf Texten zu behandeln. Konkret ging es um den KMP und den Boyer-Moore-Algorithmus. Dieses Kapitel ist mir sehr schwer gefallen. Ich war zunächst mit der Darstellung des Stoffes unzufrieden. Meine Suche nach alternativem Material, das verständlicher aufbereitet ist, blieb leider erfolglos. Möglicherweise haben die Autoren also ihr bestes getan und ich hatte hier einfach nicht den richtigen Dreh raus. Ich verstand die Algorithmen schon, aber nach ein bis zwei Tagen war alles wieder weg, während ich mich an den Rest des Stoffes gut erinnerte. Zum Glück kamen die Algorithmen auf Texten in der Präsenzklausur nicht dran.
     
    Das letzte Kapitel handelte von kombinatorischen Algorithmen. Zunächst ging es um Backtracking. Damit kann man einige klassische Probleme lösen, zum Beispiel das Färben von Landkarten. Oder klassische Denksportaufgaben, die sich um das geschickte Positionieren von Springern oder Damen auf einem Schachbrett drehen. Schließlich wurde ein Constraint-Solver entwickelt. Dessen Funktionsweise konnte ich leider nicht in allen Details nachvollziehen, denn nun wurde es doch sehr komplex. Hier bewegt man sich schon in Richtung KI. Ich fand es irre spannend, dass dieses Thema im Kurs enthalten war, auch wenn es zum Glück nicht klausurrelevant war. Gerne hätte ich an dieser Stelle noch weiter gemacht, aber es passt eben nicht beliebig viel Stoff in ein Modul.
     
    Mein Tutor hatte in diesem Modul einen einfach zu begreifenden Arbeitsrhythmus. Korrekturen kamen am Samstag, ganz gleich, wieviel man die Woche über eingereicht hatte. Ich konnte mein Arbeitsverhalten gut daran anpassen. Hilfestellung bei Problemen gab es schneller. Interessant für mich: Während in GdI1 noch sehr viel Wert auf einen sehr sauber strukturierten und expliziten Code gelegt wurde, ermutigte mich mein Tutor in GdI4, meinen Code kompakter zu schreiben, mehr Operationen in einer Zeile zusammen zu fassen. Meine Programme wurden so kürzer, waren aber auch nicht mehr ganz so leicht leserlich. Man erinnere sich: Dieser Kurs ist fürs 4. Semester vorgesehen. Da traut man den Studierenden schon einen dichteren Programmierstil zu.
     
    Die Präsenzklausur lief für mich ziemlich gut. Anscheinend lag mir das Thema, denn ich konnte hier eines meiner besten Ergebnisse erzielen. In der Vorbereitung hatte ich mich auf die Grundkonzepte Suchalgorithmen, Sortierverfahren und Datenstrukturen konzentriert. Überraschend für mich: Java-Code musste ich nur wenig schreiben. Es wurde geprüft, ob man die Verfahren und Strukturen begriffen hatte, unabhängig von der Implementierung in einer bestimmten Programmiersprache. Ein Vorteil bei diesem Modul: Hier gibt es in der Regel ein eindeutiges "richtig" und "falsch", während es in anderen Modulen - nennen wir z.B. "Webdesign" - ein bisschen mehr Interpretationsspielräume gibt.
     
    Was ich gerne noch gelernt hätte:
    - Algorithmen zu Pfadsuche in Graphen
    - etwas über genetische Algorithmen
    - etwas über neuronale Netze
    Am liebsten wäre mir, die W3L würde ein eigenes Modul "Künstliche Intelligenz" anbieten. Aber vielleicht passt das nicht zum Profil eines Studiengangs "Web- und Medieninformatik".
     
    Im Kurs ist noch eine ganz knappe Einführung in die funktionale Sprache "Clojure" enthalten, letztlich ein Lisp-Dialekt auf der Java Virtual Machine. Auf dieses Kapitel war ich sehr neugierig, weil ich immer wieder höre, dass es sinnvoll ist, andere Programmierparadigmen kennen zu lernen. Nicht, um in exotischen Sprachen zu programmieren, sondern weil sich das Verständnis für Programmierung insgesamt entwickelt. Ich höre solche Aussagen einerseits mit einer gewissen Faszination und andererseits mit einer gewissen Skepsis. (Sie erinnern mich an die These, man müsse Latein lernen, weil man dann ... besser versteht/kann/lernt.) Jedenfalls wäre ich durchaus neugierig gewesen, eine lispoide Sprache zu lernen. Das Kapitel im Kurs GdI4 ist für diesen Zweck allerdings viel zu knapp. Ich verstehe also leider immer noch nicht, was genau den Reiz funktionaler Sprachen ausmacht. Gerne würde ich diesen Faden eines Tages wieder aufgreifen und zum Beispiel das legendäre "Structure and Interpretation of Computer Programs" von Abelson und Sussman durcharbeiten. Aber ich fürchte, während meines Fernstudiums werde ich die Zeit dazu nicht finden.
     
  8. kurtchen
    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.
  9. kurtchen
    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.
  10. kurtchen
    Das Modul "BWL2" ist ein Pflichtmodul in den beiden Studiengängen "Web- und Medieninformatik" und "Wirtschaftsinformatik" bei Springer Campus. Die Web- und Medieninformatiker sollen es schon im zweiten Semester belegen, die Wirtschaftsinformatiker erst ein Semester später. Das liegt daran, dass die Wirtschaftsinformatiker im ersten Semester zunächst ein Modul "Grundlagen der BWL" belegen, was alles weitere ein Semester nach hinten verschiebt. Wenn ich auf meine Schwierigkeiten mit den BWL-Modulen zurückblicke, meine ich, es wäre gar keine schlechte Idee gewesen, dieses Grundlagenmodul freiwillig zu belegen. Damit hätte ich vielleicht zum Teil ausgleichen können, dass ich im Bereich BWL keine Vorkenntnisse hatte. Gut möglich, dass mir der Stoff von BWL1 und BWL2 so leichter gefallen wäre.
     
    Die Rolle der BWL-Module im Studiengang
     
    Web- und Medieninformatiker belegen außer BWL1 und BWL2 auch noch Geschäftsprozess-Management. Wirtschaftsinformatiker belegen weitere BWL-Module: E-Business, Strategisches Management und Controlling, Human-Ressources. Und natürlich viele Wirtschaftsinformatik-Module. Die meisten von denen und auch das Modul "E-Business" dürfen Web- und Medieninformatiker im Wahlbereich belegen. 
     
    BWL2 soll nach BWL1 belegt werden, was ich rückblickend nicht für unbedingt nötig halte. Mir scheint, dass die Inhalte der Module wenig aufeinander aufbauen, so dass ich eine Umkehrung der Reihenfolge für durchaus möglich halte. Dafür sprechen würde, dass insbesondere der Kurs Ökonomie aus dem Modul BWL2 einen gewissen Überblick über das Fachgebiet verschafft, der es vielleicht ein wenig erleichtert, die spezielleren Inhalte aus BWL1 einzuordnen, nämlich internes und externes Rechnungswesen.
     
    BWL2 gilt als inhaltliche Voraussetzung für Geschäftsprozess-Management. Ich habe Geschäftsprozessmanagement vor BWL2 belegt, was auch gut möglich war. Die Kapitel zur strategischen Planung und zu Organisationsformen aus BWL2 wären aber doch eine gute Vorbereitung auf Geschäftsprozess-Management gewesen, so dass ich hier anderen Studierenden dazu raten würde, die Module in der offiziell empfohlenen Reihenfolge zu bearbeiten.
     
    Aufbau des Kurses
     
    BWL2 gehört zu den Modulen, die aus zwei separaten Kursen bestehen. Es gibt 2 Lehrbücher, 2 Online-Abschlusstests, 2 Online-Klausuren, 2 Korrektoren für Einsendeaufgaben aber eine gemeinsame Präsenzklausur. Nach meiner Erfahrung erhöht eine solche Zweiteilung den Bearbeitungsaufwand ein wenig. So habe ich das auch diesmal empfunden.
    Am Umfang der Lehrbücher liegt das aber nicht. Die Titel "Basiswissen Unternehmensführung" von Klaus Menzel und "Basiswissen Ökonomie" von Rainer Ostermann und Frank Wischmann kommen zusammen auf rund 400 Seiten, was für Module bei Springer Campus üblich ist. Die Autoren Wischmann und Ostermann waren mir bekannt, denn sie haben auch die Lehrbücher für BWL1 verfasst.
     
    Inhalte des Kurses Unternehmensführung
     
    Im Kurs Unternehmensführung geht es um Zielsysteme, Strategische Planung, Unternehmensbewertung, wertorientierte Unternehmensführung und Organisationsstrukturen. Diese Inhalte haben mich anfangs wenig interessiert, aber das Buch war zugänglich geschrieben und die Kapitel wurden durch Fallbespiele begleitet, die den Stoff lebendig machten. Zum Teil wurden hier Dialoge aus Besprechungen wiedergegeben, in denen sich unterschiedliche Ansätze und Denkschulen offenbarten. Das fand ich didaktisch gut gelungen und hat mir oft weitergeholfen, mir den (für mich recht trockenen) Stoff zu erschließen.
     
    Im Kapitel Zielsysteme geht es zum Beispiel darum, Ziele in Zielhierachien einzuordnen, um Abhängigkeiten zwischen Zielen zu erkennen. Man sieht so, welche Unterziele erreicht werden müssen, um übergeordnete Ziele erreichen zu können. Ein häufiges Problem ist, dass Ziele nicht immer miteinander kompatibel sind. Häufig bestehen Zielkonflikte, die aufgelöst werden müssen. Dazu kann es nötig werden, Ziele zu gewichten. Der bei Erreichung erwartete Nutzen, die Wahrscheinlichkeit der Realisierung, aber auch die Beeinflussbarkeit spielen bei solchen Bewertungen eine Rolle. Schließlich braucht man Methoden, um bei konfliktären Zielen durch Dialog und Verhandlung zu Entscheidungen zu kommen. Wo Einigungen nicht möglich sind, werden oft übergeordnete Instanzen entscheiden müssen.
     
    Im Kapitel Strategischen Planung geht es um die langfristige Ausrichtung des Unternehmens. Strategische Entscheidungen wären zum Beispiel, in einem neuen Geschäftsfeld tätig werden zu wollen, den Produktionsstandort zu verlagern, das Unternehmen an die Börse zu bringen oder bestimmte Produktlinien komplett aufzugeben. Für strategische Entscheidungen braucht man Instrumente zur Analyse und Planung, von denen man im Kurs einige kennenlernt. Die SWOT-Analyse identifiziert Stärken und Schwächen des Unternehmens, aber auch Chancen und Risiken. Die Portfolio-Analyse bewertet die angebotenen Produkte des eigenen Unternehmens nach Kriterien wie Wachstum und Marktanteil und kategorisiert sie in Poor Dogs, Questions Marks, Stars und Cash Cows. Eine Cash Cow ist zum Beispiel ein Produkt mit hohem relativen Marktanteil aber nur noch geringem Wachstum. Cash Cows sollen ohne zusätzlich Investitionen Geld bringen. Stars sind dagegen Produkt mit hohem relativem Marktanteil und hohem Wachstum. In solche Produkte soll verstärkt investiert werden. Wichtig für die strategische Planung sind auch Prognosen künftiger Entwicklungen, denn auf diese möchte man sich durch die strategischen Entscheidungen ja vorbereiten. Hier wird unterschieden zwischen quantitativen Methoden, die Zahlenwerte aus der Vergangenheit in Form von Zeitreihen analysieren, und qualitativen Methoden, die mit Einschätzungen von Experten arbeiten. Im Kapitel geht es aber auch um Denkschulen strategischer Planung, die sich aus unterschiedlichen Wissenschaftsgebieten entwickelt haben und sich in den Vorgehensweisen stark unterscheiden. Schließlich geht es um Grenzen strategischer Planung, die sich zum Beispiel daraus ergeben, dass Prognosen auf der Grundlage vergangener Entwicklungen nicht immer zuverlässig sind.
     
    Schwierigkeiten hatte ich in erster Linie mit dem Kapitel Unternehmensbewertung. Entweder war es für mich zu dicht geschrieben oder es mangelte mir an Vorwissen. 
    Hier geht es darum, welchen Wert ein Unternehmen hat. Es gibt sehr unterschiedliche Methoden, den Wert eines Unternehmens zu bewerten. Welche davon geeignet ist, hängt vom Anlass der Bewertung ab. So wird ein Kreditgeber sich unter anderem dafür interessieren, was bei Liquidation eines Unternehmens erlöst werden kann. Das Vermögen des Unternehmens sieht er als Sicherheit für den Fall einer Insolvenz. Dagegen wird ein Investor sich eher dafür interessieren, welche Erträge das Unternehmen abwirft, weil er es nicht liquidieren sondern betreiben will. Besonders interessant ist der Potentialwert eines Unternehmens. Hier geht es darum, bislang ungenutzte Möglichkeiten und Chancen zu erkennen und zu bewerten. Dies ist zum Beispiel relevant bei Fusionen. Die Kombination der Fähigkeiten zweier Unternehmen kann neue Werte schaffen, die den Wert des aufgekauften Einzelunternehmens übersteigen.
     
    Gut gefallen hat mir das Kapitel zu Organisationsstrukturen. Hier ging es zum Beispiel um Vor- und Nachteile traditioneller Organisationsstrukturen im Vergleich zu Projektorganisationsformen und zweckorientierten Organisationsformen. Hier sah ich inhaltliche Bezüge zum Modul Geschäftsprozess-Management, das ich leider vorher belegt hatte.
     
    Inhalte des Kurses Ökonomie
     
    Im Kurs Ökonomie geht es zunächst um Grundtatbestände des Wirtschaftens. Im Schnelldurchgang werden hier wichtige Grundbegriffe geklärt und behandelt: Nachfrage und Bedürfnisse, Produktionsfaktoren, Wirtschaftsordnungen, Wirtschaftskreislauf und Wirtschaftsprinzipien, Kennziffern betrieblichen Handelns, volkswirtschaftliche Gesamtrechnung, Begriffe wie Bruttoinlandsprodukt oder Bruttosozialprodukt, Märkte, Preismechanismen, Preisbildung in Polypolen, Oligopolen und Monopolen, Dynamik der Wirtschaft. Obwohl sehr dicht geschrieben, konnte ich diesem Teil des Kurses gut folgen und meine, hier auch einige Bausteine für meine Allgemeinbildung aufgesammelt zu haben.
     
    Nach einem kurzen Kapitel über konstituive Entscheidungen wird der bis dato eher volkswirtschaftlich orientierte Kurs wieder betriebswirtschaftlich. Es geht um drei Typen konstituiver Entscheidungen:
    - die Wahl des Tätigkeitsfeldes
    - die Wahl des Standortes
    - die Wahl der Rechtsform
     
    Während ich dem Kapitel zur Standortwahl gut folgen konnte, fand ich insbesondere das Kapitel zur Rechtsform zu gedrängt geschrieben, um den Stoff wirklich zu begreifen. Natürlich wurde hier regelmäßig auf weitere Fachliteratur verwiesen, aber so sehr interessierte mich das Thema dann doch nicht.
     
    Insgesamt bin ich überrascht, dass der Kurs Ökonomie mir unterm Strich etwas weniger Spaß gemacht hat als Unternehmensführung. Ich hätte das Gegenteil erwartet. Möglicherweise liegt es daran, dass Unternehmensführung ein bisschen ausführlicher geschrieben ist als Ökonomie. Ich schätze, mit etwa 100 Seiten mehr Umfang hätte ich den Ökonomie-Kurs besser verwerten können. Dazu möchte ich bemerken, dass ich zu Schulzeiten keinen Unterricht zu Wirtschaftsthemen genossen habe und solche Inhalte auch in meiner Ausbildung keine Rolle gespielt haben. Wer mehr Vorkenntnisse oder Vorerfahrungen mitbringt, kann die im Kurs Ökonomie dargebotenen Inhalte wahrscheinlich besser aufnehmen als ich.
     
    Einsendeaufgaben und Tests
     
    Die Einsendeaufgaben haben mein Verständnis des Stoffes sicher verbessert. Im Kurs Unternehmensführung waren es mehr als im Kurs Ökonomie. Die Rückmeldungen meiner Tutoren kamen überwiegend zügig. Sie waren für mich auch interessant, weil mir oft Punkte fehlten und ich so erfuhr, was ich für die Klausur noch einmal wiederholen musste.
     
    Klausur
     
    Die Präsenzklausur ist ohne Hilfsmittel zu schreiben, was mir bei diesem Stoff ein bisschen Sorgen gemacht hat. Die waren aber unbegründet. Die Klausur deckte den Stoff breit ab und behandelte beide Kurse bzw. Lehrbücher gleichmäßig, zumindest was die erreichbaren Punkte anging. Breit gestellte Klausuren halte ich für faire Klausuren, weil Erfolg oder Misserfolg nicht davon abhängen, ob zufällig die eigenen Lieblingsthemen auftauchten. Insbesondere muss man nicht befürchten, wegen kleinerer Schwächen in einem Teilgebiet durchzufallen. Wer sich redlich bemüht, den gesamten Stoff zu bearbeiten, sollte hier Erfolge sehen.
     
    Es gab unterschiedliche Aufgabentypen: Ein Diagramm zeichnen, Multiple Choice, doch der Schwerpunkt lag auf dem Erklären von Begriffen und Zusammenhängen (z.T. mit Bezug zu politischen und gesellschaftlichen Themen). Anzahl und Umfang der Aufgaben passten gut zur Bearbeitungszeit. Manche Aufgaben waren recht knapp zu beantworten, andere ausführlicher. Es gab "Punktebringer", aber auch ein paar speziellere Fragen für das letzte Quäntchen Punkte. Hier ging es erkennbar darum, ein Grundverständnis abzuprüfen. Auch jemand, der nicht BWL-affin ist, hat hier eine faire Chance.
     
    Ein Ergebnis liegt mir noch nicht vor, aber diesmal bin ich optimistisch, dass es geklappt haben müsste.
     
    Fazit
     
    Ich bin froh, dass das ungeliebte Thema BWL nun hoffentlich hinter mir liegt. Unzumutbar schwer haben es mir die Kursautoren nicht gemacht. Es hat mir auch sicher nicht geschadet, mich einmal mit diesen Themen zu beschäftigen. Ich vermute, dass ich durch die Module etwas leichter mit Menschen kommunizieren kann, die eine betriebswirtschaftliche Denk- und Arbeitsweise haben. Das kann ja in vielen Situationen hilfreich sein.
     
    Meine eigenen Erwartungen, was ich durch die Module würde lernen können, waren rückblickend betrachtet wahrscheinlich etwas überzogen. Nur 10 ECTS sind wenig Zeit für ein komplexes Thema wie BWL. Das reicht für einen Einblick und vielleicht für eine gewisse Orientierung im Themengebiet. Das ist weniger als ich gehofft habe, aber natürlich hat es einen Wert. Wahrscheinlich wäre es in meinem Fall vernünftig gewesen, das Modul "Grundlagen der BWL" freiwillig als Propädeutikum zu belegen. Dann hätte ich wahrscheinlich aus den beiden folgenden Modulen mehr Nutzen ziehen können.
     
    Rückblickend betrachtet hätte es mir besser gefallen, ich hätte diese 10 ECTS mit anderen Inhalten füllen dürfen. Grundsätzlich gefällt es mir sehr, an einer FH zu studieren, wo ich einen starken Praxisbezug des Studiums erkenne. Vermutlich ist BWL ein Pflichtfach, weil man davon ausgeht, dass die meisten von uns in Unternehmen arbeiten werden. Das ist ja auch eine vernünftige Annahme. Statt BWL z.B. zusätzliche Mathe-Module zu belegen hätte mir allerdings mehr Spaß gemacht.
     
    Andererseits gehört zu einem Studium auch die Auseinandersetzung mit Themen, die man auf den ersten Blick nicht zum Anbeißen findet. Insofern habe ich versucht, mich auf BWL einzulassen. Für mich war es der bislang mühsamste Teil meines Studiums, weil ich es schwieriger als in anderen Modulen fand, mich zum regelmäßigen Lernen zu motivieren. Aber vermutlich ist das nun geschafft. Jetzt bin ich auch ein bisschen stolz auf mich.
     
    Ob ich noch einmal Lust haben werde, im Wahlbereich ein weiteres Modul mit BWL-Bezug zu belegen? Für die nächste Zeit möchte ich mich erst mal anderen Themen zuwenden. Andererseits gibt es dann doch Inhalte, die mich interessieren könnten. Ein Modul "E-Business" würde z.B. ganz gut zu einem Studium "Web- und Medieninformatik" passen. Momentan bin ich aber froh, im Studienbereich BWL meine Pflicht getan zu haben.
     
    Wie geht es nun weiter? Inzwischen habe ich angefangen, das Modul "Wissenschaftliches Arbeiten" zu belegen. Das ist für mich freiwillig, weil ich noch nach der alten Studienordnung studiere. Die Belegung wird uns aber dringend empfohlen, weil die Inhalte für die Anfertigung der Projekt- und Bachelorarbeit wichtig sind. Das sehe ich ein, also habe ich das Modul belegt. Ich hatte erwartet, dass das ein notwendiger aber auch trockener Studienabschnitt werden würde. Bislang bin ich positiv überrascht: Ich finde den Stoff richtig interessant, die Einsendeaufgaben machen mir viel Spaß und ich glaube, dass ich hier wichtige Einsichten für meine Projekt- und Bachelorarbeit mitnehmen kann. Besonders gefällt mir aber, dass ich den Eindruck habe, hier auch etwas für meine Allgemeinbildung zu tun. Ich werde zu gegebener Zeit ausführlicher berichten.
     
    Inzwischen habe ich auch eine Idee für meine Projekt- und für meine Bachelorarbeit. Beides dauert noch ein bisschen, aber allmählich taucht aus dem Nebel schemenhaft der letzte Studienabschnitt auf und nimmt ein bisschen Gestalt an. Das wird etwas ganz anderes werden als Stoff zu lernen und Klausuren zu schreiben. Aber mittlerweile vermute ich, dass das auch Spaß machen wird.
  11. kurtchen
    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.
  12. kurtchen
    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.
  13. 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.
  14. kurtchen
    Nach Datenbanken, Mathe1 und SQL hatte ich richtig Lust, wieder einen Kurs mit Java zu belegen. Der nächste Kurs aus dieser Gruppe war "Grundlagen der Informatik 3: Anwendungen programmieren". Der Kurs deckt verschiedene Themen ab, die mit Anwendungsentwicklung zu tun haben. Aus meiner Sicht gibt es aber 3 inhaltliche Schwerpunkte:
    - GUI-Programmierung
    - Persistenz mit relationalen Datenbanksystemen
    - Erzeugung und Verarbeitung von XML-Dateien
     
    Der Kurs beginnt wie bei der W3L üblich mit einem Schnelleinstieg, der eine Art Überblick über die Themen des Kurses gibt. Bei GdI3 handelt dieser Schnelleinstieg aber nur von den GUI-Kapiteln, die auch mehr als die Hälfte des Kursumfangs ausmachen. Die GUI-Programmierung wird noch am Beispiel Swing behandelt, obwohl mit JavaFX ja ein aktuellerer Rahmen zur Verfügung steht. Das hat mich anfangs ein bisschen enttäuscht.
     
    Auf den ersten 40 Seiten lernt man das Grundgerüst einer Swing-Anwendung kennen; lernt, wie man ein Fenster durch Kompositon oder Vererbung erzeugt, macht erste Erfahrungen mit Event-Handling und lernt einfache Komponenten wie Textfelder und Buttons kennen. In diesem Zusammenhang muss man auch mit inneren Klassen und mit Lambda-Ausdrücken umgehen. Hier geht es zunächst gemächlich voran. Eine wichtige Rolle spielt stets die Darstellung der Zusammenhänge zwischen den Swing-Klassen durch Klassendiagramme in UML. Es geht in erster Linie um das Verstehen der Grundkonzepte. Für meinen Geschmack war es ein bisschen viel UML und ein bisschen wenig Code. Auch das Herumexperimentieren mit den Komponenten kam mir ein bisschen zu kurz. Hier musste ich mir selber zusätzliche Gelegenheiten suchen, das Gelernte durch kleine Experimente zu vertiefen. Auf das Buch, das ich ergänzend verwendet habe, verweise ich am Ende meines Beitrages.
     
    Es folgen 3 kürzere Kapitel über das Testen von GUIs, über GUI-Grafikeditoren und über Applets, die ja inzwischen keine so große Rolle mehr spielen. Da Applets am Anfang sehr wichtig für die Etablierung der Sprache Java waren, konnte man sie wohl nicht übergehen. Die Kapitel über Grafikeditoren sind nicht so umfangreich, dass man hinterher wirklich mit so einem Werkzeug umgehen könnte. Man weiß, dass es so etwas gibt und welche Vor- und Nachteile die Arbeit mit einem Editor haben kann. Ich habe die Aufgaben alle von Hand gecodet und ich glaube, so lernt man in diesem Stadium auch am meisten.
     
    Das Kapitel über Grafikprogrammierung fand ich nicht sehr zugänglich. Natürlich hätte man hier schnell zeigen können, wie man ein paar Linien und Formen zeichnet, aber die Intention war, zu vermitteln, was der Grafikontext ist und wozu man die Methode paint() überschreibt. Später im Kurs ist das einmal Grundlage dafür, Swing-Komponenten ein wenig zu erweitern und mit einer eigenen Optik auszustatten. Außerdem lernt man, wie man Grafiken lädt und anzeigt.
    Interessanter ist das Kapitel, das die Ereignisverarbeitung in Java im Detail behandelt. Hier lernt man das Beobachter-Muster kennen und begreift, wie Adapterklassen die Ereignisverarbeitung vereinfachen. Das Praxisbeispiel ist ein sehr einfacher UML-Editor.
     
    An diesem Punkt des Kurses begann mir zu dämmern, das GUI-Programmierung eine recht zeitaufwändige Angelegenheit sein kann. Man landet schnell bei ziemlich umfangreichem Code, der gar nicht mehr so leicht zu navigieren ist.
     
    Das für mich interessanteste Kapitel war "GUI-Gestaltung - Theorie und Praxis". Hier lernt man viele verschiedene Swing-Komponenten im Zusammenspiel kennen: Fenster, Menüs, Multifunktionsleisten, Listen, Dialoge und die unterschiedlichsten darin enthaltenen Interaktionselemente. Als Fallbeispiel dient eine Artikel- und Lieferantenverwaltung. Konzeptionell lernt man etwas über das MVC-Muster. Sehr interessant fand ich die Abschnitte, wie man auf der Grundlage der objektorientierten Analyse ein GUI konzipieren kann. Die hier vorgestellten Heuristiken sind für kaufmännisch-administrative Anwendungen gedacht, aber der Stoff war sehr aufschlussreich, weil einem klar wird, dass man nicht immer das Rad neu erfinden muss. Lohnend war auch der Abschnitt über Layout-Manager. Hier ging es zunächst um die Layout-Manager, die Swing von Haus aus mitbringt. Es brauchte eine Weile, bis ich das Konzept des schon recht flexiblen GridBag-Layoutmanagers verstanden hatte. Wirklich schwierig fand ich die Ausführungen zur Entwicklung eigener Layout-Manager. Hier konnte ich nicht in allen Punkten folgen.
     
    Nach einem kurzen Kapitel über modellgetriebene Entwicklung am Beispiel von Enterprise Architekt landete man beim zweiten großen inhaltlichen Block: Persistenz mit relationalen Datenbanken. Ich hatte mir vorgestellt, recht pragmatisch zu lernen, wie ich mit JDBC eine Verbindung zu einer relationalen Datenbank wie z.B. MySQL aufbaue. Darum ging es auch zunächst, aber eigentlich ging es vor allem um das DAO-Muster, das Fachkonzept und Datenbank schön entkoppelt, so dass man z.B. die verwendete Datenbank relativ leicht wechseln könnte, ohne Code in den Fachkonzeptklassen ändern zu müssen. Man arbeitet allein an der schlanken Schnittstelle. Das wird dann schon recht komplex und ich habe eine ganze Weile gebraucht, bis ich das Zusammenspiel der vielen verschiedenen Klassen begriffen habe. Der Clou an der Angelegenheit ist natürlich, dass nicht jeder Entwickler verstehen muss, was hier im Detail passiert. In der Regel wird interessieren was vor der Schnittstelle passiert. Diese Abschnitte waren für mich sehr lohnend, weil ich hier das Gefühl hatte, nicht allein etwas über Java zu lernen.
     
    Weniger gelungen fand ich den Abschnitt über die Java Persistence API. Hier ist es mir leider auch nicht gelungen, die Codebeispiele aus dem Kurs zum Laufen zu bringen.
     
    Es folgt ein kurzes Kapitel über Nebenläufigkeit. Das ist nötig, weil Swing nicht threadsicher ist. Wer in Java GUIs programmiert muss sich mit Nebenläufigkeit auseinander setzen. Hier lernt man aber nur das nötigste, denn es gibt ein eigenes Modul "Nicht-sequentielle Programmierung", in dem Nebenläufigkeit viel ausführlicher behandelt wird.
     
    Nun folgte ein umfangreiches Fallbeispiel "Auftragsverwaltung", bei dem die verschiedenen Abschnitte der Entwicklung vorgestellt wurden: Pflichtenheft und Glossar, OOA-Modell, GUI, Architektur und Komponenten, OOD des Fachkonzeptes, Persistenzschicht und natürlich auch die Ausprogramierung der entwickelten Modelle. An diesem Punkt möchte ich erwähnen, dass die Code-Beispiele in diesem Kurs viel umfangreicher sind als in GdI1 und GdI2. Anliegen des Kurses ist auch, dass der Lernende den Überblick über größere Mengen Code behalten kann. Die BlueJ-IDE aus den ersten beiden Modulen reicht hier nicht mehr aus. Die Studierenden sollen sich mit Eclipse vertraut machen. Die herunterladbaren Codebeispiele sind auch dafür aufbereitet. Ich mag Eclipse nicht und habe lieber mit Netbeans gearbeitet, was natürlich auch in Ordnung war, aber manchmal ein bisschen Mehrarbeit bedeutet hat. Bei vielen Aufgaben programmiert man nicht mehr "from scratch" sondern soll vorhandenen Code weiterentwickeln. Interessant waren auch Aufgaben, bei denen man Fehler aufspüren und beheben sollte. Dazu musste man erkunden, wie das Zusammenspiel vieler Klassen in unterschiedlichen Paketen funktioniert. Hier genügte oft wenig Code, um das Problem zu lösen, aber es kostete viel Zeit, zu verstehen, wo dieser Code hin musste, um seine Wirkung zu entfalten. Es verschaffte mir eine gewisse Befriedigung, mich in umfangreicheren Code einarbeiten zu können und mich dann auch darin zurecht zu finden. Den Abschluss dieses sehr aufschlussreichen Fallbeispiels bildeten 2 Abschnitte über Berechtigungssteuerung und Internationalisierung.
     
    Und nun begann der dritte größere inhaltiche Block des Kurses. Am Fallbeispiel der technischen Anwendung "Wetterstation" wurde die Verarbeitung von XML-Dateien behandelt. Die Wetterstation ist eine GUI-Anwendung, die sich Wetterdaten von einem Server holt und am Bildschirm in Form verschiedener Instrumente darstellt. Die Wetterdaten kommen im XML-Format und müssen geparst werden. Hier war ich froh, Webprogrammierung schon belegt zu haben, denn so hatte ich Vorkenntnisse in XML. Zwar gab es auch hier eine knappe Einführung in XML, aber allein damit wären mir diese Abschnitte schwer gefallen.
     
    Im letzten Kapitel wurde am Beispiel Othello (oder auch Reversi) ein Strategiespiel mit GUI entwickelt. Hier spielt Grafikprogramierung eine Rolle, aber eigentlich ging es um den Minimax-Algorithmus, der den besten Zug ermitteln sollte. Im Prinzip schon ein kleiner Vorgeschmack auf GdI4 "Algorithmen und Datenstrukturen".
    Für die Online-Klausur ist es nützlich, den Code der Übungen und Aufgaben griffbereit zu haben. Manche Aufgaben hätte ich in der zur Verfügung stehen Zeit nicht ausprogrammieren können, wäre mir nicht recht früh aufgefallen, dass ich Code aus vorangegangenen Übungen anpassen kann. Ich nehme an, dass war hier auch Zweck der Übung.
     
    Da man bei der GUI-Programmierung recht schnell bei umfangreichem Code landet, war ich natürlich sehr gespannt auf die Präsenzklausur. Wie wollte man den umfangreichen Inhalt in der kurzen Zeit abprüfen? Tatsächlich musste ich relativ wenig Code schreiben. Hier ging es um das Verständnis für die Zusammenhänge zwischen den verschiedenen Swing-Klassen und sehr allgemein um die objektorientierten Konzepte aus dem Modul. Sehr nützlich wäre es hier gewesen, noch einmal Stoff aus GdI2 zu wiederholen. In UML sollte man fit sein. Reines Programmieren genügte hier nicht.
     
    Ich hatte aber Glück und konnte das Modul mit einem schönen Ergebnis abschließen. Auch mit meinem Tutor hatte ich Glück. Er war derselbe wie in GdI2 und es war schön, in 2 aufeinanderfolgenden Modulen die auch noch inhaltlich eng zusammenhingen vom gleichen Tutor betreut zu werden. Von ihm habe ich nicht nur gute und schnelle Rückmeldungen zu meinen Aufgaben bekommen. Ich hatte auch immer wieder Fragen, die eher auf Nebengleise führten und gelegentlich bekam ich sehr interessante Anregungen. Das hat mal wieder Spaß gemacht.
     
    Anderen Studierenden, die GdI3 belegen wollen, würde ich empfehlen, zuvor "Webprogrammierung" und "SQL und relationale Datenbanken" zu belegen, um die Kapitel über XML-Parsing und Datenbankanbindung zu zu verstehen. Ein nicht zu großer zeitlicher Abstand zu GdI2 erscheint mir ebenfalls günstig. Insgesamt würde ich empfehlen, beim Bearbeiten von GdI2 gründlich vorzugehen. Die hier behandelten Grundlagen verfolgen euch über viele Module. GdI3 ist dafür ein gutes Beispiel.
     
    Ich hatte ja schon erwähnt, dass mir das praktische Herumprobieren mit Code im Modul ein wenig zu kurz kam. Hier habe ich mir selber eine alternative Möglichkeit gesucht, nämlich das Buch "Swing - A Beginner's Guide" von Herbert Schildt. Das ist kein Uni-Lehrbuch sondern ein praktisches Programmierbuch. Im wesentlichen stellt Herr Schildt Swing-Komponenten vor und zeigt an kleinen Codebeispielen, wie man sie benutzt. In jedem Kapitel gibt es auch kleine Übungsaufgaben. Das hat mir sehr viel gebracht, um zu lernen, wie ich die sehr gut aufbereiteten Konzepte aus dem W3L-Modul ganz praktisch in Java ausprogrammieren kann. Von Herrn Schildt gibt es auch ein einführendes Buch in JavaFX, das allerdings sehr dicht geschrieben ist und sich klar an Leser richtet, die Swing-Vorkenntnisse haben.
  15. kurtchen
    Das Modul Geschäftsprozessmanagement (GPM) ist ein Pflichtmodul in den Studiengängen Web- und Medieninformatik (WMI) und Wirtschaftsinformatik (WI). Im Studiengang WMI ist es - zu meiner anfänglichen Überraschung - dem Studienbereich IT-Systeme zugeordnet. In beiden Studiengängen wird die Belegung im 3. Fachsemester empfohlen. Formal gibt es keine inhaltlichen Voraussetzungen. Empfohlen werden als fachliche Grundlage aber BWL2 und Grundlagen der Informatik 1 (GdI1). Beide Empfehlungen sind für mich nicht nachvollziehbar. Im Falle von BWL2 liegt das daran, dass ich GPM entgegen der Empfehlung vor BWL2 belegt habe. Möglicherweise wäre mir das Modul also leichter gefallen, wäre ich dem empfohlenen Studienplan gefolgt. Warum ich GdI1 belegt haben sollte, erschließt sich mir nicht.
     
    Die Zuordnung zum Studienbereich IT-Systeme wurde mir im Verlauf des Moduls klarer. Geschäftsprozesse werden in Unternehmen durch IT-Systeme unterstützt. Nun wurden Geschäftsprozesse in vielen Unternehmen klassischerweise funktionsorientiert organisiert. Ähnliche Tätigkeiten wurden in Abteilungen zusammengefasst, in denen Mitarbeiter arbeiteten, die genau für diese Tätigkeiten besonders qualifiziert waren. So hatte ein Unternehmen z.B. eine Auftragssannahme, ein Lager, einen Einkauf, eine Montage und so weiter. Diese Gliederung hatte auch oft damit zu tun, dass bestimmte Produktionsmittel, wie z.B. teuere Maschinen, effizienter genutzt werden konnten und nur ein Mal angeschafft werden mussten.
     
    Die funktionsorientierte Gliederung hat aber auch Nachteile. Ein kompletter Geschäftsprozess, z.B. ein Auftrag für ein Produkt, das mit Teilen aus dem Lager gefertigt werden muss, läuft quer durch die Abteilungen. Beim Übergang von Abteilung zu Abteilung wird der Vorgang in Warteschlangen eingereiht. Die Durchlaufzeit von Prozessen verlängert sich dadurch erheblich. Außerdem hat kein Mitarbeiter einen Gesamtüberblick über den einzelnen Prozess. Beim Übergang von Abteilung zu Abteilung müssen Informationen weitergegeben werden. Dabei kommt es zu Missverständnissen und Fehlern. Haben Kunden im laufenden Prozess Rückfragen oder Änderungswünsche, ist es dadurch oft schwierig, einen klaren Ansprechpartner ausfindig zu machen, weil jeder nur seinen Teilschritt betrachtet und kennt. Werden Teilprozesse parallel in unterschiedlichen Unternehmensteilen bearbeitet, ist es schwierig, bei Änderungen des Auftrags alle Daten konsistent zu halten und alle Beteiligten auf den aktuellen Stand zu bringen. Außerdem spielt ein klassischer Vorteil der funktionsorientierten Gliederung, teure Produktionsmittel müssen nur ein Mal angeschafft werden, in modernen Unternehmen eine geringere Rolle. Viele Geschäftsprozessen transformieren heute Wissen und nicht Material. Die dazu benötigten Produktionsmittel - z.B. PCs - kosten nicht viel.
     
    Transparenz, Schnelligkeit, die Möglichkeit zu Änderungen im laufenden Prozess, spielen dagegen für immer mehr Kunden eine große Rolle. Darum strebt man heute eine prozessorientierte Organisation an. Geschäftsprozesse sollen nicht quer durch die Abteilungen laufen, Mitarbeiter sollen einen Gesamtüberblick über einzelne Prozesse haben, es soll klare Ansprechpartner für Prozesse geben.
     
    Im Hinblick auf IT-Systeme ist die Unterscheidung zwischen funktionsorientierter und prozessorientierter Organisation der Geschäftsprozesse bedeutsam. Ein naiver Ansatz wäre, einfach die bestehenden Geschäftsprozesse in Software abzubilden. Im Falle einer funktionsorientierten Organisation landet man so bei Insellösungen. Der Lagerist bekommt eine Lagerverwaltungssoftware, die Auftragsannahme bekommt ein System zur Erfassung von Aufträgen, die Rechnungsabteilung hat eine Software zur Rechnungsstellung und so weiter. Jede Abteilung fühlt sich durch ihre Software in ihrer Tätigkeit unterstützt. Beim Übergang von Abteilung zu Abteilung müssen Daten von einer Software in die andere übertragen werden. Das macht unnötig Arbeit und führt oft zu Fehlern. Die Daten werden leicht inkonsistent, insbesondere im Fall von nötigen Änderungen. Die Vorteile der Softwareunterstützung können so nicht im vollen Umfang realisiert werden.
     
    Es gibt aber noch einen viel gravierenderen Nachteil. Sollte sich das Unternehmen entscheiden, die bisherigen Geschäftsprozesse zu ändern, z.B. um eine eher prozessorientierte Organisation zu erreichen, müsste die bisherige Software geändert werden. Das können Unternehmen oft nicht selbst. Sie sind auf die Hilfe von externen Spezialisten angewiesen. Software hat also eine Tendenz, bestehende Geschäftsprozesse zu zementieren. Man kann die Organisation nicht mehr einfach ändern, weil man dazu die IT-Systeme ändern müsste.
     
    Aus diesem Grund lohnt es sich, vor Einführung einer IT-Lösung die Geschäftsprozesse genau zu betrachten. Oft lässt sich mit Software-Unterstützung ein effizienterer Ablauf erreichen, z.B. indem man Daten nur ein Mal erfasst und zentral speichert, die Abteilungen vernetzt. Manchmal ist es auch möglich, IT-Systeme von kooperierenden Unternehmen zu vernetzen, sogar über mehrere Unternehmen hinweg. So ist es z.B. möglich, dass Lager automatisch bei Lieferanten Teile nachbestellen, sobald ein größerer Auftrag eingegangen ist.
     
    Soll eine Softwarelösung für ein Unternehmen erstellt werden, reicht es also nicht die Frage zu beantworten: Was machen die? Wie machen die es? Man muss sich auch damit beschäftigen: Könnte man es mit Softwareunterstützung besser und effizienter machen? Welche Änderungen im Ablauf könnten sich ergeben?  Inwiefern ist unsere Software an Änderungen anpassbar? Eben weil IT-Systeme in Unternehmen sehr eng mit den Geschäftsprozessen verknüpft sind, lohnt sich eine Beschäftigung mit Geschäftsprozessen.
     
    Das Lehrbuch
     
    Das Lehrbuch "Geschäftsprozessmanagement" von Thomas Allweyer hat ca. 400 Seiten. Das ist für Module bei Springer Campus ein üblicher Umfang. Die Gliederung des Buches folgt dem Geschäftsprozessmanagement-Kreislauf:
    - Strategisches Prozessmanagement
    - Prozessentwurf
    - Prozessimplementierung
    - Prozesscontrolling
     
    Für jemanden wie mich, der keinen leichten Zugang zu BWL-Themen hat, ist es sehr verständlich geschrieben. Konzepte und Begriffe werden anhand von Szenarien in Unternehmen veranschaulicht, so dass man sich stets gut vorstellen kann, was damit gemeint ist. Das Buch enthält viele Diagramme und Abbildungen. Das ist wichtig, weil bei den Einsendeaufgaben und in der Klausur das Zeichnen von ereignisgesteuerten Prozessketten und anderen Diagrammen eine Rolle spielt. Auch viele andere Diagrammtypen spielen im Kurs eine Rolle, z.B. Funktionsbäume, Organigramme aber auch UML-Klassendiagramme, mit denen die Datenobjekte in den IT-Systemen modelliert werden können.
    Gut gefallen hat mir am Lehrbuch vor allem, dass das Glossar hier einmal nicht am Ende des Buches war. Stattdessen wurden am Ende jedes Kapitels die zentralen Fachbegriffe noch einmal definiert, was ich als gute Wiederholung des Stoffes empfand.
     
    Didaktisch finde ich das Buch hervorragend aufgebaut. Das war in diesem Fall auch wichtig für mich, denn der Stoff war mir völlig neu. Da ich selbst keinen entsprechenden beruflichen Hintergrund habe, war mir die betriebswirtschaftliche Perspektive des Moduls nicht sehr vertraut und ich habe für dieses Modul wesentlich länger gebraucht als gehofft.
     
    Die Tests
     
    Die Tests sind sehr gut auf den Stoff des Lehrbuches abgestimmt. Im Gegensatz zu manchen anderen Modulen, ist hier jede einzelne Lösung ausführlich kommentiert. Wenn man etwas falsch macht, kann man diese Erläuterung lesen und begreift so in der Regel gut, was das Problem war und wo man noch einmal nachlesen müsste. In manchen Modulen sind die Autoren an dieser Stelle sehr zurückhaltend. Das wird damit begründet, die Studierenden zum eigenen Nachdenken anregen zu wollen. Ich habe die Erläuterungen hier mit großem Gewinn gelesen und konnte durch eigene Fehler in Verbindung mit dieser Hilfestellung oft Erkenntnissprünge machen, die sich allein durch die Lektüre des Kurstextes noch nicht eingestellt hatten.
     
    Die Aufgaben
     
    Die Aufgaben waren zahlreich und ebenfalls gut auf den Kurstext abgestimmt. Im Vergleich zu anderen Modulen sind die Aufgaben vor allem im ersten Drittel des Kurses sehr textlastig. Die angegebene Bearbeitungszeit habe ich nie einhalten können. Trotzdem hätten meine Lösungen in vielen Fällen noch ein wenig umfangreicher ausfallen können und sollen. Wer nicht schon "im Thema" ist, sollte für dieses Modul also mehr Zeit einplanen.
     
    Zu den Aufgaben gibt es Lösungshinweise. Diese kommen in Form von Fragen zum Stoff, die der Studierende noch einmal für sich klären soll. Er baut so stufenweise das nötige Hintergrundwissen auf, um die Aufgabe lösen zu können. Dabei müsste er noch einmal wesentlich mehr Text produzieren, um sich so in einer iterativen Vorgehensweise einer guten Gliederung und einer Lösung der Aufgabe zu nähern. Diese Hinweise fand ich sogar etwas zu üppig. Nicht etwa, weil sie die eigene Lösung der Aufgabe vorweg nahmen. Das taten sie ganz und gar nicht. Sie erhöhten den Arbeitsaufwand noch einmal erheblich, weil sie oft auf gründliche Wiederholung des Stoffes und der nötigen Grundlagen setzten. Didaktisch war das zwar ebenfalls hervorragend gemacht, aber irgendwann wollte ich das Modul auch einmal abschließen. Hier fehlte es mir letztlich an Geduld und Fleiß.
     
    Online-Test
     
    Der Online-Test deckte den Stoff des Moduls gut ab. Die Fragen waren neu, so dass man hier eine gewisse Transferleistung erbringen musste. Mein Eindruck ist, dass das Verständnis der vermittelten Konzepte auf diese Weise gut abgeprüft werden kann, was im Hinblick auf die Klausuranmeldung ja auch Sinn der Sache ist. Der Online-Test ist eine gute Möglichkeit, sich ein paar Bonuspunkte zu sichern, wenn man das Lehrbuch gründlich durchgearbeitet hat.
     
    Zur Online-Klausur kann ich diesmal nichts sagen. Aus familiären Gründen habe ich es (erstmals) nicht geschafft, die Online-Klausur noch rechtzeitig zu schreiben. Darum weiß ich bei diesem Modul nicht, ob die Online-Klausur einen realistischen Eindruck von den Aufgaben der Präsenzklausur gibt.
     
    Inhalte
     
    Im Kursteil "Strategisches Management" geht es um folgende Inhalte:
    - Zielsystem des Unternehmens
    - Balanced Scorecard
    - Outsourcing
     
    Interessant für mich war, dass gerade Prozesse, die man outsourcen möchte, genau untersucht werden sollten. Um festzustellen, ob Outsourcing günstiger ist, muss man nämlich zunächst einmal wissen, was die bestehenden Prozesse IM EIGENEN UNTERNEHMEN eigentlich kosten. Dazu muss man auch genau verstehen, welche Leistungen künftig ausgelagert werden und was im eigenen Unternehmen weiterhin zu tun ist. Insbesondere muss man die zu erbringenden Leistungen sehr genau definieren, um sinnvolle Verträge schließen zu können. Und schließlich muss man die Einhaltung der vereinbarten Leistungen überprüfen. Und man muss sinnvolle Schnittstellen zwischen den ausgelagerten Prozessen und den daran anschließenden Prozessen im eigenen Unternehmen definieren. Aus all diesen Gründen, müssen gerade solche Prozesse, die ausgelagert werden sollen, sehr genau untersucht werden.
     
    Im Kursteil "Prozessentwurf" geht es um:
    - Nutzen und Inhalt von Prozessmodellen
    - Sichten auf Prozesse
    - ARIS als Rahmenkonzept
    - Leistungen, Funktionen, Daten, Information, Wissen
    - Aufbauorganisation
    - die Modellierung von Kontrollflüssen mit ereignisgesteuerten Prozessketten (EPK)
    - Geschäftsregeln
    - Prozessmodelle und Objektorientierung
    - Die Auswahl von Prozessmodellen und Notationen
    - Prozessanalyse (um Schwachstellen aufzudecken)
    - Prozesskostenrechnung
    - Simulation
    - Qualitäts-Management-Systeme
    - integrierte Management-Systeme
     
    Insbesondere das Zeichnen von EPKs spielt bei den Aufgaben immer wieder eine Rolle. Obwohl im Kurs auf verschiedene Softwarewerkzeuge hingewiesen wurde, habe ich das von Hand gemacht, weil ich ja wusste, dass ich in der Klausur auch keine Software zur Verfügung haben würde. Hier hat es sich mal wieder als große Hürde erwiesen, sich beim Arbeiten mit Stift und Papier den Platz gut einzuteilen, um sich nicht "in eine Sackgasse zu zeichnen". Das ist tatsächlich etwas, das mit Übung besser wird. Anfangs lag bei mir viel geknülltes Papier auf dem Boden.
     
    Die EPKs sind oft Grundlage der Prozessanalyse. Sie enthalten im Kern Information zum Workflow. Diese kann aber ergänzt werden mit Informationen zu den Abteilungen, in denen Leistungen erbracht werden, zu Artefakten und Datenobjekten, die erzeugt und konsumiert werden, zu einzelnen Akteuren oder auch verwendeten Produktionsmitteln. Je mehr Informationen man integriert, umso schwieriger wird es, die EPK übersichtlich aufzubauen. Am gefundenen Prozessmodell kann man dann Schwachstellen der bestehenden Prozesse erkennen, z.B. Mehrfachspeicherung von Daten, Organisationsbrüche, unnötige Schleifen und Verzögerungen und vieles mehr. Dies ist dann Grundlage für den Entwurf von verbesserten Abläufen. Im Hinblick auf die Klausur würde ich empfehlen gerade den Stoff dieses Kursteiles sehr aufmerksam zu lernen.
     
    Im Kursteil "Prozessimplementierung" geht es um:
    - Change Management
    - Betriebswirtschaftliche Standardsoftware
    - Workflow-Management-Systeme
    - Business-Process-Management-Systeme
    - Prozessorientierte Software-Entwicklung
     
    Interessant war für mich vor allem der Abschnitt über Change-Management. Mitarbeiter fühlen sich durch die Umgestaltung von Prozessen oft bedroht. Nicht selten sind optimierte Prozesse Grund für Sorge um den eigenen Arbeitsplatz. Und das ist ja auch nicht immer unbegründet. Es kommt häufig vor, dass Mitarbeiter vordergründig an Prozessänderungen mitarbeiten, aber im Hintergrund versuchen, eben diese Veränderungen auszubremsen. Change-Management beschäftigt sich damit, wie man die Mitarbeiter in Veränderungsprozesse einbezieht, so dass die Implementierung geänderter Prozesse gelingen kann. In vielen Fällen wird das auch dazu führen, dass Änderungen kleiner ausfallen, als man zunächst geplant hatte. Eine kleinere Änderung, die von den Mitarbeitern akzeptiert und umgesetzt wird, wird oft mehr bewirken als ein komplett neu gestalteter und in der Theorie optimaler Prozess, an dem die Mitarbeiter nur widerwillig mitwirken. Ein iteratives Vorgehen ist hier oft sinnvoll. Manchmal ist es gut, größere Änderungen durch erfolgreiche durchgeführte kleinere Änderungen einzuleiten. Mitarbeiter müssen oft an kleineren Beispielen erleben, dass sich wirklich Vorteile ergeben, damit sie zu größeren Schritten bereit sind. Dieses für mich recht spannende Thema wird im Modul leider nur angerissen.
     
    Bei den meisten Themen dieses Abschnittes ist ein klarer Bezug zu IT-Sytemen offensichtlich. Rückblickend würde ich sagen, dass hier ein roter Faden erkennbar ist. Anfangs wurde Software für einzelne Unternehmen erstellt. Aus Kostengründen wurde dann mehr und mehr Standardsoftware benutzt, die für das eigene Unternehmen konfigurierbar sein sollte. Da Software die Tendenz hat, bestehende Prozesse "zu zementieren" ist es wünschenswert, dass Software so gestaltet wird, dass Workflows sich auch von Mitarbeitern anpasen und verändern lassen, die keine einschlägige IT-Ausbildung haben. Man will also Standardlösungen, die von Laien über geeignete User-Interfaces im hohem Maße anpassbar sind, z.B. mit graphischen Tools, die das Zeichnen von Workflows ermöglichen, und die dann in entsprechende Dialoge und Datenflüsse in der Software umgesetzt werden. Hier ging es z.B. um Service-orientied-Architectures (SOA). Dabei werden häufig benötigte Grundfunktionen als Web-Services realisiert, die sich dann flexibel zu komplexeren Abläufen kombinieren lassen.
     
    Im letzten Abschnitt "Prozesscontrolling" geht es um:
    - Messung von Prozesskennzahlen
    - Planung und Steuerung von Prozessen
    - Real Time Enterprise
    - Ständige Prozessverbesserung
     
    Insbesondere die Definition von Kennzahlen ist sehr wichtig, um den Erfolg von eingeführten Veränderungen beurteilen zu können.
    Interessant war für mich vor allem der Abschnitt über Real Time Enterprise. Hier geht es um die Fähigkeit von Unternehmen (mit Hilfe von Informationssystemen) auf wichtige Ereignisse sehr schnell reagieren und sich flexibel anpassen zu können, z.B. auf Veränderungen der Nachfrage, eine örtliche Verlagerung von Nachfrage, schnell steigende oder sinkende Zahlen von Service-Anfragen, eine sich schnell verändernde Wettbewerbssituation und ähnliche Szenarien. Dazu sammeln IT-Systeme fortlaufend relevante Daten und präsentieren sie Entscheidungsträgern in geeigneter Form. Dazu gehören z.B. auch automatisch generierte Benachrichtigungen, Warnungen und dergleichen.
     
    Präsenzklausur
     
    Die Klausur deckte die verschiedenen Themen des Moduls breit ab. Das Zeichnen von Diagrammen spielte - wenig überraschend - eine große Rolle, sowohl im Hinblick auf Punkte als auch im Hinblick auf die Bearbeitungszeit. Insgesamt empfand ich die Zeit als recht knapp, um alles schaffen zu können. Es gab viele kleinere Aufgaben. In der Vorbereitung würde ich den Schwerpunkt auf den Kursteil "Prozessentwurf" legen. Das Zeichnen von Diagrammen auf Papier sollte man geübt haben. Insgesamt fand ich die Klausur fair gestellt. Ob ich das auch in eine erfreuliche Note umsetzen kann, bleibt abzuwarten.
     
    Fazit
     
    Erste Grundlage des Moduls Geschäftsprozessmanagement ist das verständlich geschriebene Lehrbuch von Thomas Allweyer. Durch die gute Verzahnung mit den Online-Tests und Aufgaben wird ein didaktisch hervorragendes Modul daraus. Ich schreibe das, obwohl mir das Thema überhaupt nicht lag. Zwar empfand ich GPM als wesentlich spannender als BWL1, aber meine grundsätzlichen Schwierigkeiten mit BWL-Themen machten sich auch hier bemerkbar. Das Modul war aber so beschaffen, dass man mit Fleiß und Ausdauer weit kommen konnte. Ein bisschen Spaß hatte ich unterwegs dann doch. Insbesondere wurde immer wieder ein klarer Bezug zur Informatik hergestellt, was natürlich meinen Interessen eher entsprach.
     
    Ich glaube, dass der Stoff des Moduls sehr nützlich ist, wenn man Software im Unternehmenskontext entwickelt und mit Menschen kommunizieren muss, die betriebswirtschaftlich denken. Insofern habe ich mich bemüht, die hier dargebotenen Inhalte mit Offenheit und wachem Geist aufzunehmen. Allerdings hoffe ich nun auch, dass mit der Klausur das Modul geschafft ist und der zwar nicht allzu große aber für mich doch recht einschüchternde Hügel BWL wieder ein bisschen kleiner geworden ist.
     
    Ausblick
     
    Als nächstes möchte ich das Modul BWL2 bearbeiten. Da geht es um Unternehmensführung und Ökonomie (Volkswirtschaft). Ich erwarte, dass mir das mehr Spaß machen wird als BWL1 aber weniger als GPM. Aber warten wir mal ab, wie sich die Sache anlässt.
     
    Parallel dazu möchte ich gerne mit Text-Mining weiterkommen. Der Inhalt dieses Moduls ist mathematischer als ich vermutet hätte. Der Stoff ist sehr interessant aber leider auch nicht ganz einfach.
  16. kurtchen
    Mein erstes Modul bei der W3L war "Grundlagen der Informatik 1". Dies ist das erste von insgesamt 5 aufeinander aufbauenden Modulen zur Programmierung in Java. In GdI1 fängt man an mit strukturierter Programmierung. Objektorientierte Konzepte werden in diesem Modul noch umschifft. Das heißt auch, dass man lediglich Konsolenprogramme schreiben kann, denn der Umgang mit GUI-Bibliotheken setzt voraus, dass man objektorientierte Konzepte verstanden hat.
     
    Hier geht es zunächst einmal um grundlegende Dinge:
    - Datentypen
    - Probleme und Fehlerquellen bei Fließkommaarithmetik
    - Variablen und Zuweisungen, Konstanten
    - Felder
    - Funktionen bzw. Methoden
    - Lokale Variablen
    - Übergabe von Parametern
    - Call-by-value vs. call-by-reference
    - Bedingte Verzweigungen und andere Kontrollstrukturen
    - Schleifen
    - Darstellung des Programmflusses, zunächst mal klassisch mit Nassi-Shneidermann-Diagrammen
    - Und dann mit UML
    - Felder
    - einfaches Sortieren
    - Rekursion
     
    Es wird empfohlen, die Programmierübungen in der Entwicklungsumgebung BlueJ zu machen. Daran habe ich mich gehalten und ich fand das für den Einstieg gut.
     
    Es gibt ein erstes Kapitel über Software-Tests, z.B. über Regressionstests. Ferner gibt es ein Kapitel über Verifikation. Hier geht es darum, die Korrektheit eines Programms formal zu beweisen. Dies war das einzige Kapitel, das ich nicht so gut verständlich fand. Hier ist es mir auch nicht gelungen, die Einsendeaufgabe zur vollen Zufriedenheit meiner Tutorin zu lösen.
     
    Um auch mal etwas anderes kennen zu lernen, endet der Kurs mit zwei recht knappen Kapiteln über andere Programmiersprachen. Man experimentiert ein wenig mit C. Das ist aber vom Umfang her nicht genug, um diese Sprache zu lernen. Eher bekommt man ein Bewusstsein dafür, was Java einem alles abnimmt und worum man sich in einer vergleichweise maschinennahen Sprache selber kümmern muss. Und dann kam noch ein recht kurzes Kapitel über Processing. In dieser Sprache kann man mit geringen Vorkenntnissen Grafik und Animationen programmieren. Processing basiert letztlich auf Java. Ich habe das als spaßiges Element erlebt, um am Ende auch mal etwas anderes zu machen als immer nur Konsolenanwendungen.
     
    Die wenigsten Inhalte des Kurses waren völlig neu für mich. Aber ich fand den didaktischen Aufbau recht gelungen und habe noch einmal viele eigentlich bekannte Dinge in einem anderen Licht oder in einem anderen Zusammenhang gesehen. So war ich am Ende doch sehr froh, diesen Kurs als solide Grundlage gemacht zu haben.
     
    Die Rückmeldungen und Antworten meiner Tutorin waren in diesem Kurs besonders ausführlich. Hier gab es ein erkennbares Bemühen, dem Einsteiger ein bisschen mehr Hilfe zu geben. Die Rückmeldungen in den fortgeschritteneren Kursen sind deutlich knapper, vor allem, wenn die eingereichten Lösungen passen.
     
    Einen kleinen Schock erlebte ich, als ich durch die freiwillige Online-Klausur am Ende des Kurses durchgefallen bin. Hier hatte ich mich zeitlich völlig verzettelt. Außerdem hatte ich unterschätzt, dass ich ein wenig Zeit extra einplanen musste, um Lösungen zu zippen und hochzuladen. In der Bedienung der Lernplattform war ich noch etwas unerfahren und ungeschickt. Darum gab es da ein paar Fehlbedienungen und am Ende war die Zeit um, bevor ich alles hochladen konnte.
     
    Hier hat mir sehr weitergeholfen, dass meine Tutorin mich motiviert hat, trotzdem zügig die Präsenzklausur anzugehen. Ich habe auch ein paar gute Tipps zur Zeiteinteilung in der Klausur bekommen und generell zum Thema Prüfungsvorbereitung. Im Grunde alles Sachen, die einem der gesunden Menschenverstand hätte sagen sollen, aber es war für mich schon lange her, dass ich mich einer Prüfung unterzogen hatte. Und so war das wirklich sehr hilfreich, das noch mal so gesagt zu bekommen. (In späteren Modulen wird allerdings schon vorausgesetzt, dass man seine Lerntechnik drauf hat, sich selbst motivieren und auch mit Rückschlägen umgehen kann.)
     
    Nach der verpatzten Online-Klausur bin ich doch mit großen Respekt und ziemlichem Bammel in die Präsenzklausur gegangen. Ungewohnt war hier, nur mit Papier und Stift arbeiten zu können und keine IDE zu haben. Darauf hatte mich meine Tutorin aber vorbereitet und mir geraten, auch mal zu üben, ein paar Aufgaben nur mit Stift und Papier zu lösen, um ein bisschen auf Tempo zu kommen. Man schreibt ja heute nur noch selten mit der Hand. Zu meiner großen Überraschung, fiel mir die Präsenzklausur dann recht leicht. Ich war innerlich ruhig, konnte mich gut konzentrieren, mir die Zeit gut einteilen und meine Leistung erbringen. Mit dem Ergebnis war ich dann auch zufrieden.
     
    Nach dem Abschlusstest jedes Moduls bekommt man einen Link zu einer Online-Befragung geschickt. Hier kann man das Modul und auch seinen Tutor bewerten.
     
    Auf mein Klausurergebnis musste ich ca. 3 Wochen warten. Das kam mir ewig vor, aber heute weiß ich, dass das eigentlich ein recht guter Wert war. Meistens dauert es noch ein bis zwei Wochen länger.
     
    Fazit: Dieser Einstieg ins Studium hat mir viel Spaß gemacht, mein Selbstvertrauen gestärkt und mich stark motiviert, die nächsten Schritte zu gehen. Programmieren war natürlich auch ein bisschen das, was ich mir noch ganz naiv unter einem Informatik-Studium vorgestellt hatte. Mein nächstes Modul sollte dann "Rechnerstrukturen und Betriebssysteme" werden und das war natürlich ganz anders. Aber davon erzähle ich ein andermal.
  17. kurtchen
    Mein drittes Modul bei der W3L war "Grundlagen der Informatik 2". Dieses Modul ist eine Einführung in die objektorientierte Programmierung mit Java. Eigentlich wäre dieser Kurs erst für das zweite Semester vorgesehen gewesen, aber nachdem mir GdI1 so viel Spaß gemacht hatte, war ich neugierig, wie es weitergehen würde.
     
    Inhalte des Moduls sind:
    - Objekte, Klassen, Konstruktoren, Botschaften
    - Attribute, Klassenattribute, Klassenoperationen
    - Pakte
    - Nutzen vorhandener Klassen (z.B. aus der Klassenbibliothek)
    - Hüllklassen für einfache Typen, Autoboxing, Autounboxing
    - Ausnahmebehandlung
     
    Sehr schön finde ich, dass es ein eigenes Kapitel über Assoziationen gibt. Die werden als wichtiges Grundkonzept der objektorientierten Programmierung oft übersehen. Es geht um:
    - Beziehungen zwischen Objekten und zwischen Klassen
    - Rollen
    - Assoziationsklassen, die allein existieren, um bestimmte Objekte zu verknüpfen
    - Navigierbarkeit
    - Containerklassen
    - den Abschluss bildet eine Einführung in das Singleton-Muster als erstes Entwurfsmuster
     
    Weiter geht  es mit Vererbung:
    - Klonen vs. Kopieren
    - Identität vs. Gleichheit
    - Polymorphismus
     
    Echte Mehrfachvererbung gibt es in Java nicht. Einen gewissen Ersatz bietet das Schnittstellenkonzept.
     
    Um diese Konzepte zu vertiefen gab es eine sehr  schöne Einsendeaufgabe, bei der das Beladen einer Autofähre mit verschiedenen Fahrzeugtypen simuliert werden sollte. Die Fahrzeugtypen stehen untereinander in einer Vererbungsbeziehung. Außerdem braucht man eine Containerklasse, die Fahrzeuge verschiedener Typen aufnehmen kann. Diese Aufgabe war umfangreicher, hat aber auch besonders viel Spaß gemacht. In GdI2 arbeitet man noch immer mit der relativ einfach BlueJ-Umgebung. (Wird jedenfalls von der W3L so empfohlen. Kann man natürlich auch anders machen.) Hier ist sehr schön, dass Klassenbeziehungen in der IDE graphisch dargestellt werden, was das Verständnis an diesem Punkt des Lernprozesses erleichtert. Mit zunehmender Komplexität wird die Darstellung allerdings unübersichtlich und es beginnt zu dämmern, dass man nicht für alle Ewigkeit mit BlueJ arbeiten wird.
     
    Schön an dem Kurs ist auch, dass die UML eine große Rolle spielt. Alles, was man in Java lernt, wird parallel in UML gezeigt, so dass man nebenbei lernt, Klassen-, Objekt- und Sequenzdiagramme zu lesen und selbst anzufertigen. Die von der W3L empfohlenen Tools fand ich allerdings zu mächtig und ressourcenhungrig. Ich arbeite meist am Laptop, wo allein die Bildschirmgröße eine Rolle dafür spielt, wie viele Informationen ich gleichzeitig angezeigt bekommen möchte. Hier habe ich mir wesentlich einfachere Tools gesucht, z.B. UMLet, mit dem man  schnell einfache Klassendiagramme erstellen kann. Oder PlantUML, eine Skriptsprache zur Erstellung nicht nur von UML-Diagrammen. Um das Zeichnen von Diagrammen ging es immer wieder in den Einsendeaufgaben, nicht nur ums Programmieren.
     
    Es folgten Kapitel zu Persistenz und Datenhaltung. Hier ging es um:
    - sequentielles Lesen und Schreiben von Dateien
    - einfache Indexverwaltung
    - die Serialisierung von Objekten
    Schnittstellen zu Datenbanken blieben noch ausgeklammert. Das kommt erst in GdI3.
     
    Schließlich ging es um generische Programmierung. Hier verwendet man bei der Deklaration von Klassen und Methoden keine Typen sondern Platzhalter für Typen. So kann man eine Methode für alle möglichen Datentypen programmieren und behält trotzdem den Vorzug der Typsicherheit. Generische Programmierung kann man gut mit objektorientierter Programmierung kombinieren, aber jetzt wurde es schon ganz schön komplex.
     
    Nun kamen zwei Kapitel über Qualitätssicherung. Zuerst über konstruktive Qualitätssicherung. Hier geht es um Prinzipien des guten Klassen- und Methodenentwurfs, so dass Code zum Beispiel gut zu warten ist oder später leichter refaktoriert werden kann. Dieses Kapitel fand ich sehr interessant. Letztlich sind es Strategien, Qualität zu sichern, indem man Software auf saubere Weise plant und konzipiert. Dann ging es um analytische Qualitätssicherung. Das bedeutet, Qualität im Nachhinein zu messen, z.B. indem man Software testet. Dieses Kapitel fand ich sehr trocken, weswegen ich es nur halbherzig bearbeitet habe. Hier wollte ich auf Lücke lernen.
     
    Den Abschluss bildeten 2 kurze Kapitel über C++ und C# als Beispiele für andere objektorientierte Programmiersprachen als Java. Die waren allerdings viel zu kurz, um hinterher in diesen Sprachen programmieren zu können. Sie dienten eher dazu, ein gewisses Bewusstsein für die Besonderheiten von Java zu entwickeln. Am Beispiel von C++ kann man zum Beispiel lernen, was echte Mehrfachvererbung ist und wie diese sich von der Schnittstellenvererbung von Java unterscheidet. Außerdem begreift man, wieviel Arbeit einem Java mit der Garbage-Collection abnimmt. C# ist deswegen interessant, weil es für den .NET-Framework viele Sprachen gibt. Das Kapitel über C# ist auch nützlich, weil man in einem späteren Modul zur Webprogrammierung in ASP-NET reinschnuppert. Da ist es nützlich, C# einmal ausprobiert zu haben.
     
    In der Klausur hatte ich zwar ein zufriedenstellendes Ergebnis, aber das vor allem dank der Bonuspunkte, die ich in diesem Modul einfahren konnte. Rückblickend hätte  ich mich ganz anders vorbereiten müssen. Nach den Erfahrungen mit GdI1 hatte ich erwartet, wieder viel Code schreiben zu müssen. Stattdessen spielte das Zeichnen von UML-Diagrammen eine große Rolle. Es wäre sinnvoll gewesen, solche Diagramme öfter von Hand zu zeichnen. Das hatte ich in der Bearbeitung des Moduls immer mit Software erledigt. Die kümmert sich darum, dass alles richtig proportioniert ist und auf die Seite passt. Beim Zeichnen von Hand muss man etwas vorausdenken. Das hätte man gut üben können und das hätte mir in der Klausur viel Zeit und damit verbundenen Stress erspart. Außerdem spielte die analytische Qualitätssicherung in der Klausur eine Rolle. Hier hatte ich nichts wiederholt, weil ich gehofft hatte, dieses für mich nicht so spannende Thema würde ausgespart bleiben. Auch, weil es ein eigenes Pflichtmodul zum Softwaretesten gibt. Aber nein, alles kann drankommen. Anderen Studierenden würde ich raten, in der Vorbereitung auf die Klausur alle Themen abzudecken und sich dabei auf die Grundkonzepte zu konzentrieren.
     
    Rückblickend betrachtet ist das Anliegen dieses Kurses nicht allein die Programmierung in Java sondern vor allem die Vermittlung objektorientierter Grundkonzepte. Diesen Kurs fand ich didaktisch sehr gelungen. Allerdings bin ich mit Vorkenntnissen hineingegangen. Ich hatte  zuvor das Buch "Java lernen mit BlueJ" von David Barnes und Michael Kölling durchgearbeitet. Das war eine sehr  gute Vorbereitung auf das, was mir in GdI2 abverlangt wurde. Dieses Buch kann ich jedem empfehlen, der sich auf einen einführenden Kurs in objektorientierter  Programmierung vorbereiten möchte. Besonders ist hier der "objects first"-Ansatz. Während die meisten Lehrbücher zunächst einmal strukturierte Programmierung zeigen und dann die objektorientierten Konzepte nachschieben, beginnen Barnes und Kölling mit Objekten und Klassen. Möglich wird dies durch die BlueJ-Umgebung, einer IDE die nicht  nach Produktivitäts- sondern nach didaktischen Gesichtspunkten konzipiert ist. Und durch viele halbfertige Projekte, wo schon viel Code da ist, den man noch nicht im Detail verstehen muss. Aber beim Arbeiten mit diesen Bausteinen lernt man viel über die objektorientierten Konzepte. Vieles in GdI2 wäre mir ohne diese Grundlage schwerer gefallen.
     
    Lobend erwähnen möchte ich auch meinen sehr guten Tutor, der mir viele Fragen beantwortete, die nicht direkt mit den Anforderungen des Kurses zu tun hatten. Bei ihm merkte man deutlich, dass er aus der Praxis kommt. Im Gegensatz zur Tutorin aus GdI1 forderte er an vielen Stellen schon einen knapperen, weniger expliziten Programmierstil.
  18. kurtchen
    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.
  19. kurtchen
    Das Modul "Mathematik für Informatiker" ist das zweite von insgesamt 4 Mathematik-Modulen im Studiengang "Web- und Medieninformatik". Die Studierenden im Studiengang "Wirtschaftsinformatik" belegen ein Mathematik-Modul weniger. Aber dieses Modul ist auch für sie verpflichtend. Im Jargon der Studierenden heißt dieses Modul einfach Mathe2.
     
    Nachdem in Mathe1 mit Logik, Mengenlehre, Relationen, Graphentheorie, Abbildungen und algebraischen Strukturen eine mathematische Grundlage vermittelt wurde, geht es in diesem Kurs um die klassischen Themen Analysis und Lineare Algebra, die wohl Teil von jedes Informatik-Studiums sein dürften. Dazu verwendet der Kurs zwei Lehrbücher von Professor Burkhard Lenze (FH Dortmund). Das Modul zerfällt in zwei Online-Kurse. Das heißt, man muss hier zwei Online-Tests bestehen und darf zwei Online-Klausuren schreiben. In der Präsenzprüfung wird das Wissen beider Kurse mit ziemlich gleicher Gewichtung abgeprüft.
     
    Keine Angst vor Mathe2
     
    Wenn ich mich unter meinen Kommillitonen umhöre, gewinne ich den Eindruck, dass speziell dieses Modul den meisten Studierenden Sorgen bereitet. Im Vorfeld ist Mathe2 ein Modul, vor dem viele Angst haben. Diejenigen, die es gerade belegen, klagen oft darüber, dass sie hier viel mehr Zeit investieren als in andere Module. Und diejenigen, die es hinter sich haben, sind in der Regel erleichtert, es geschafft zu haben. Aus Sicht vieler Studierender und mancher Dozenten sollte man Mathe2 zügig angehen, weil das Projekt Studium an genau diesem Modul scheitern könnte.
     
    Die gute Nachricht: Mathe2 ist machbar. Die beiden Lehrbücher von Herr Lenze sind recht kompakt geschrieben, enthalten aber im Vergleich zu vielen anderen Lehrbüchern nicht allein Beweise sondern viele gerechnete Beispiele. Mathe2 ist ein Kurs auf FH-Niveau. Im Gegensatz zur Mathematik an der Uni geht es nicht allein um Beweise sondern um angewendungsbezogenes Rechnen. Mathe2 legt damit eine Grundlage für Mathe3 "Angewandte Mathematik". Wie der Name vermuten lässt, ist speziell Mathe3 für einen Mathe-Kurs schon wieder recht praxisbezogen und ein klarer Bezug zur Informatik ist erkennbar. Also beißt euch durch Mathe2. Danach wird es schon wieder besser.
     
    Nutzt das Tutorium am Präsenztag
     
    Die W3L unterstützt die Studierenden in diesem Modul mit einem Tutorium, dass an den Präsenztagen angeboten wird. Ich habe mich im Vorfeld gefragt, was es denn nutzen kann, wenn in zwei mal zwei Stunden der Stoff von Analysis und linearer Algebra im Schweinsgalopp durchlaufen wird. Nachdem ich an solch einem Tutorium teilgenommen habe, weiß ich, es bringt etwas. Nicht weil man in dieser knappen Zeit den Stoff vermitteln könnte. Das kann man nicht. Den wird man sich schon selbst gründlich erarbeiten müssen. Schon eher, weil die Studierenden dazu aufgefordert werden, ihre Probleme mitzubringen, die sich bei der Bearbeitung des Moduls ergeben haben. Die Tutoren gehen flexibel darauf ein. Leider wurde diese Möglichkeit in dem Tutorium, das ich besucht habe, kaum genutzt. Ich selber konnte sie nicht nutzen, weil ich noch gar nicht angefangen hatte, das Modul zu bearbeiten. Ich vermute, dass es anderen Studierenden ebenso ging. Ideal wäre natürlich, wenn man vor dem Präsenztag ein gutes Stück aus beiden Themenbereichen bearbeitet hätte, um sich dann gezielt bei seinen Problemen weiterhelfen zu lassen.
     
    Warum hat mir das Tutorium trotzdem eine Menge gebracht? Weil wir gute Tipps bekommen haben, wie wir unseren Lernprozess und - in Mathe2 noch wichtiger - unseren Übungsprozess organisieren können. Für Menschen, die mathematisch sehr begabt sind, mag es reichen, Konzepte verstanden zu haben. Die meisten von uns müssen üben, üben, üben. Und merken erst dann, wie viel (oder wie wenig) sie verstanden haben.
     
    Außerdem wurde uns auch ein wenig "Klausurstrategie" vermittelt. Wie denkt ein Prüfer, der checken möchte, ob wir etwas verstanden haben. Wie kann man sich zumindest einen Grundstock an Punkten sichern, auch wenn man nicht den gesamten Stoff im Schlaf beherrscht. Für viele Studierende, die in diesem Modul keine Glanzleistung vollbringen sondern einfach bestehen möchten, können solche Tipps sehr nützlich sein.
     
    Last but not least erhält man Hinweise, welche Teile der Schulmathematik, die nicht explizit im Kurs behandelt werden, man sich besser noch einmal anschauen sollte. Ich hätte zum Beispiel Stein und Bein geschworen, dass ich natürlich in der Lage bin, quadratische Gleichungen mit der pq-Formel zu lösen. Und das mir selbstverständlich alle wichtigen Potenz-, Wurzel- und Logarithmengesetze bekannt sind. Bis ich es praktisch ausprobiert habe und feststellen musste: So richtig sicher sitzt das nicht mehr. Besser noch mal ÜBEN.
     
    Mathe2: Die Inhalte
     
    Um diese Selbsterkenntnis reicher begann ich nun nach dem Tutorium mit der Bearbeitung des Moduls, für das ich deutlich mehr Zeit eingeplant hatte, als für andere Module. Es wird empfohlen, erst Analysis und dann lineare Algebra zu bearbeiten. Ich habe mit linearer Algebra angefangen, weil mir da mein Schulwissen aus Abiturzeiten noch geläufiger erschien und ich einen guten Start erleben wollte. Darum geht's in linearer Algebra:
    - Vektoren: Rechenregeln, lineare Unabhängigkeit, Skalarprodukt, Vektorprodukt Spatprodukt, die Cauchy-Schwarzsche Ungleichung und die Dreiecksungleichung.
    - Matrizen: Rechenregeln, Matrizenmultiplikation und einfacher Gauß-Algorithmus.
    - Determinanten: 2,2-Determinanten, 3,3-Determinaten und die Regel von Sarrus, n,n-Determinanten und der Laplacesche Entwicklungssatz. Geometrische Anwendungen spielen eine Rolle.
    - Allgemeine lineare Gleichungssysteme: Die lösen wir vor allem mit dem Gauß-Algorithmus. Wir unterscheiden homogene und inhomogene lineare Gleichungssysteme und lernen was Fundamentalsysteme sind.
    - Reguläre lineare Gleichungssysteme: Hier entwickeln wir den einfachen Gauß-Algorithmus weiter zum vollständigen Gauß-Algorithmus. Den sollte man für die Klausur im Schlaf können. Er ist für alle möglichen Anwendungen sehr nützlich. Weiterhin geht es um die Cramersche Regel und die erweiterte Cramersche Regel. Sie verbindet das Kapitel über Determinanten mit diesem Kapitel. Schließlich geht es um LR-Zerlegungen und QR-Zerlegungen. Und natürlich muss man wissen, wie man Matrizen invertiert. Und wie man all das nutzen kann, um lineare Gleichungssysteme effizient zu lösen.
    - Geraden und Ebenen: Hier kommen nun geometrische Anwendungsmöglichkeiten für das Wissen, das man sich bis hier aufgebaut hat.
    - Komplexe Zahlen: Darstellungsformen, Rechenregeln, Polynomfaktorisierung
    - Eigenwerte und Eigenvektoren
    - Spezielle quadratische Matrizen: Diagonalähnliche Matrizen, symmetrische und hermitesche Matrizen, orthogonale und unitäre Matrizen.
    - Transformationen: Hier geht es um verschiedene Abbildungen, die man mit Matrizen, realisieren kann. Man beginnt mit der kartesischen und baryzentrischen Transformation, arbeitet weiter mit Parallel- und Zentralprojektionen und endet irgendwann bei Fourier- und Haar-Wavelet-Transformationen.
     
    Und in Analysis geht es um:
    - Wiederholung der vollständigen Induktion
    - Funktionen: Neu sind hier die parametrisierten ebenen Kurven, die ganzrationalen und die gebrochenrationalen Bezierkurven. Die kannte ich aus Schulzeiten noch nicht. (An dieser Stelle ein Hinweise: Die Bezierkurven sind nicht klausurrelevant. Aber in Mathe3 spielen sie eine große Rolle. Darum diesen Teil NICHT überspringen.)
    - Folgen und Reihen: Hier geht es darum Grenzwerte für Folgen zu berechnen, was viele aus Schulzeiten kennen dürften. Und Konvergenzkriterien für Reihen anzuwenden, was schon schwieriger ist.
    - Transzendente Funktionen: Diese werden auf verschiedene Eigenschaften hin untersucht. Verschafft einem einen guten Überblick und frischt vieles vergessene aus Schulzeiten noch mal auf.
    - Rechenregeln für stetige Funktionen
    - Differenzierbare Funktionen: Hier geht es um Rechenregeln für differenzierbare Funktionen und deren Anwendung zur Extremwertbestimmung. Das kennen wohl die meisten aus der Schule. (Ferner geht es um kardinale kubische B-Splines, ganzrationale B-Spline-Kurven und gebrochenrationale B-Spline-Kurven. Zum Glück nicht klausurrelevant.)
    - Integrierbare Funktionen: Hauptsatz der Differential und Integralrechnung, Rechenregeln für integrierbare Funktionen, Längen-, Flächen- und Volumenberechnung. Eine Herausforderung für mich waren die Techniken der partiellen Integration und der Integration durch Substitution. Beides hatte ich in der Schule gelernt, aber leider wieder vergessen. Da war viel Übung nötig, um das wieder flüssig zu können.
     
    Diejenigen unter euch, deren Abitur noch nicht so lange her ist und die damals stark in Mathe waren, dürfen sich nun ein bisschen freuen. Ihr dürftet einige Themen wiedererkennen und habt einen Startvorteil.
     
    An manchen Stellen im Kurs gibt es kleine Anwendungsbeispiele aus der Informatik (in Java). Das ist interessant, aber nicht prüfungsrelevant.
     
    PDF-Tools: Die Geheimwaffe
     
    Die Beweise in den Lehrbüchern habe ich nicht immer nachvollziehen zu können. Die Stärke dieser Module sind aber nicht die Lehrbücher. Herr Lenze liefert PDF-Tools mit, die man sich runterladen kann. Ein PDF-Tool ist eine Seite mit einer Übungsaufgabe eines bestimmten Typs, z.B. invertieren einer Matrix, knacken eines Integrals und solche Dinge. Im PDF stehen aber keine konkreten Werte sondern eine allgemeine Formel mit verschiedenen Parametern. Ein Knopfdruck generiert dann die Werte und zeigt sie in einer Alert-Box: a=7.4, b=sin(33), c=ln(9) usw. Diese Parameter setzt man für die Variablen ein und hat nun seine konkrete Übungsaufgabe. Ist man fertig, kann man durch Druck auf einen weiteren Knopf die Lösung sehen. Manchmal werden hier auch noch Zwischenergebnisse angezeigt, so dass man nachvollziehen kann, wo es gehakt hat. Mit diesen Tools kann man üben, bis man merkt, dass man richtig sicher ist. Herr Lenze empfiehlt, wirklich auf Tempo zu üben, denn in der Klausur muss man schnell sein.
     
    Übrigens: In der Klausur darf man keinen Taschenrechner benutzen. Das hat mich überrascht, weil ich es aus Schulzeiten anders kannte. Die Werte in den Aufgaben sind so gewählt, dass man auch keinen braucht. Aber wer schon ewig nicht mehr im Kopf oder mit Stift und Papier gerechnet hat, sollte das üben. Also: PDF-Tool öffen, Aufgaben generieren, Bleistift spitzen und los. Ich habe mich oft geärgert, weil ich einen Aufgabentyp grundsätzlich konnte, aber blöde Vorzeichenfehler gemacht habe. Gerade bei den Aufgaben in der linearen Algebra ziehen sich Fehler schön durch. Da muss man eine gewisse Sorgfalt lernen.
     
    Die Hinweise im Forum nutzen
     
    Damit komme ich zu einen wichtigen Grund, warum jeder Studierende eine realistische Chance hat, dieses Modul erfolgreich abzuschließen. Für die Präsenzklausur ist NICHT der gesamte Stoff des Moduls relevant. Ein Beispiel: In der Präsenzklausur kann verlangt werden, die LR-Zerlegung einer Matrix zu finden, aber nicht die QR-Zerlegung. Was genau klausurrelevant ist und was nicht, veröffentlicht Herr Lenze im Forum zum Kurs. Da in den Foren oft wenig los ist, hatte ich dort anfangs gar nicht reingeschaut, bis mich Herr Lenze, ausdrücklich darauf hinwies. Also schaut ins Forum und nutzt die dort gegebenen Hinweise.
     
    Aber Vorsicht! In der Online-Klausur können mehr Themen drankommen. Und beim Online-Test, dessen Bestehen ja Voraussetzung dafür ist, überhaupt zur Klausur zugelassen zu werden, kann ALLES abgeprüft werden. Wer sich also möglichst viele Bonuspunkte erarbeiten will, um etwas gelassener in die Präsenzklausur zu gehen, der muss sich schon mit dem gesamten Stoff auseinander setzen. Wer einfach nur bestehen möchte, kann zuschauen, dass er für die Klausur die im Forum genannten Themen intensiv vorbereitet. Er hat dann auch ohne Bonuspunktepolster eine gute Chance, das Modul abzuschließen.
     
    Die Betreuung durch Herrn Lenze war sehr gut. Das Feedback zu Einsendeaufgaben war unheimlich schnell. Auch auf Fragen reagierte er meist innerhalb von 24 Stunden und seine Hinweise haben mir immer weitergeholfen.
     
    Die Klausur
     
    In der Präsenzklausur entfielen 55 Punkte auf lineare Algebra und 45 auf Analysis. Wenn man den vollständigen Gauß-Algorithmus sicher beherrscht, kann man sich in linearer Algebra eine gewisse Punktegrundlage erarbeiten, weil man den für verschiedene Aufgabentypen braucht. Aus Gesprächen mit anderen Kommilitonen weiß ich, dass das auch in vergangenen Klausuren oft so war. In der Analysis waren bei mir die Themen breit gestreut. Partielle Integration und Integration durch Substitution sollte man üben.
     
    Tipps für die Vorbereitung
     
    Da Mathe2 für viele Studierende ein Angstfach ist, zum Schluss noch ein paar Tipps:
    - Lasst euch nicht verunsichern, wenn ihr in den Lehrbüchern nicht jeden Beweis im Detail nachvollziehen könnt. Konzentriert euch auf das Üben mit den PDF-Tools.
    - Es gibt im Kurs vergleichsweise wenige Einsendeaufgaben. Manche Studierende machen nur diese Aufgaben und wundern sich dann, wenn sie im ersten Anlauf durch die Prüfung rasseln. So ist es nicht gedacht. Die Einsendeaufgaben prüfen in Abständen, ob man im Kurs vorankommt. Sie ersetzen auf keinen Fall das Üben mit den Tools, die den gesamten Stoff abdecken.
    - Übt die PDF-Aufgaben ohne Taschenrechner, auch wenn es verführerisch ist, ihn zu benutzen. Nur dann bekommt ihr ein Gefühl dafür, wieviel ihr in der Klausur in welcher Zeit schaffen könnt. Es ist gut möglich, dass ihr eine taktische Entscheidung treffen müsst, ob ihr in der verbliebenen Zeit noch diese ohne jene Aufgabe versuchen wollt. Da braucht ihr ein Bauchgefühl dafür, was lange dauert und was schneller zu schaffen ist.
    - Ich habe verschiedene Tools genutzt, die nicht zum Kurs gehörten. Zunächst mal einen Funktionenplotter. Die gibt es als Desktopanwendungen, aber ich habe mit einer Online-Version gearbeitet. Da kann man eine Funktionsvorschrift eingeben, sich die Kurve plotten lassen, auch Ableitungen und Integrale. Das kann natürlich nicht das eigene Arbeiten ersetzen. Aber man kann so gut vergleichen, ob die eigenen Ableitungen und Integrale stimmen. Oder Teillösungen. Oder eine Idee entwicklen, was man falsch gemacht hat.
    - Außerdem gibt es Online-Tools, um Funktionen zu differenzieren und integrieren. Manche von denen können einem einen kompletten Rechenweg anzeigen. Das hilft ebenfalls, eigene Fehler nachzuvollziehen. Mir hat das sehr geholfen, bei der partiellen Integration und der Integration durch Substitution, eine gewisse Routine zu entwickeln. Bei der partiellen Integration muss man sich entscheiden: Was ist mein u? was ist mein v? Wenn man sich hier falsch entscheidet, muss man wieder von vorne anfangen, was Zeit kostet. Ebenso bei der Substitution: Was substituiere ich? Und überhaupt: Substituiere ich oder nutze ich partielle Integration? Bei manchen Aufgaben sieht man nicht sofort, was sich anbietet. Dafür bekommt man ein Gefühl, wenn man viele Beispiele gesehen hat. Und dabei helfen solche Online-Tools. Aber nicht das Tool die ganze Arbeit machen lassen, sondern aktiv mitarbeiten, möglichst viel selber machen und dann Schritt für Schritt durchgehen, wo es gehakt hat.
    - Ebenso gibt es tolle Online-Tools für die Themen der linearen Algebra. Das hat mir besonders beim Lösen von Gleichungssystemen und umfangreicheren Rechnungen mit Matrizen und Determinanten geholfen. Hier hat man oft sehr viele einfache Rechenoperationen, die aufeinander aufbauen. Ein dummer Vorzeichenfehler am Anfang und man produziert in der Folge nur noch Mist. Dank der Tools konnte ich meine eigenen Fehlerquellen identifizieren (bei mir vor allem Vorzeichenwechsel) und dann genau darauf verstärkt achten.
    - Laut Studienbüro liegt die Durchfallquote in diesem Modul beim ersten Anlauf bei 20-25%. Man sollte sich nicht entmutigen lassen, wenn man dazu gehört. Ich habe mehrere Kommillitonen kennengelernt, die Mathe-Module wiederholen mussten und in zweiten Anlauf geschafft haben, was beim ersten mal nicht klappte.
     
    Fazit
     
    Die lineare Algebra hat mir richtig Spaß gemacht. Analysis musste sein, aber da bin ich froh, dass es jetzt vorbei ist. Ich habe noch nicht das Ergebnis der Klausur, aber ich bin mir ziemlich sicher, dass ich sie nicht noch einmal schreiben muss. Mathe2 ist machbar.
     
    Nachtrag: Das Ergebnis
     
    Heute habe ich das Ergebnis zu Mathe2 erhalten. 88 von 100 Punkten in der Präsenzklausur. Das wäre eine 1,7, aber da die Online-Tests und die Online-Klausuren ziemlich gut gelaufen waren, konnte ich mit Bonuspunkten über die magische Schwelle von 95 Punkten kommen. So ist es am Ende eine glatte 1 geworden. Ich freue mich sehr, weil ich in Mathe2 wirklich eine Menge Arbeit gesteckt habe.
     
    Bloß nicht aufgeben in Mathe! Das war auch an den Präsenztagen immer wieder Thema: Es gibt zwar nur wenige Leute, denen Mathe auf Anhieb leicht fällt. Aber mit Übung wird vieles erreichbar, was am Anfang unmöglich erscheint. Also packt's an!
  20. kurtchen
    Das Modul Mathe1 - "Mathematisch-logische Grundlagen der Informatik" hat drei Autoren. Man bearbeitet ein Lehrbuch von etwa 300 Seiten. Da die Mathematik als Wissenschaftsdisziplin eine sehr komprimierte formale Ausdrucksform entwickelt hat, kann man auf wenigen Seiten viel sagen. Im Vergleich zu anderen Lehrbüchern auf FH-Niveau, die mir bekannt sind, beschränkt sich dieses Buch nicht allein auf die knappe formale Darstellung, z.B. bei Beweisen. Es hat auch viele ausführliche, beschreibende, kommentierende und informierende Passagen. Man kommt also beim Lesen stellenweise recht fix voran und hält sich dann wieder längere Zeit an wenigen Seiten, manchmal sogar an wenigen Zeilen auf. Ich nehme an, dies liegt in der Natur der Sache.
     
    Wie bei der W3L üblich, ist der gesamte Lehrtext in der Lernplattform aufbereitet verfügbar. Dort steht er im Mix mit Online-Tests, Einsendeaufgaben und natürlich Abschlusstest und Online-Klausur. Ich finde es entspannter und effektiver, mit dem Buch zu arbeiten. Mit Stift und Papier daneben, um Beispiele und Beweise gleich aktiv nachvollziehen zu können. Die Lernplattform rufe ich dann für Tests und Aufgaben auf. (Dies hat den Nachteil, dass die automatisch erstellte Statistik zur Bearbeitungszeit des Moduls nichts aussagt.)
     
    Das Buch soll erkennbar einen sanften Einstieg in das Thema Mathematik bieten, das für Informatik-Studiengänge unumgänglich aber auch bei vielen Studierenden unbeliebt und zum Teil sogar gefürchtet ist. Zunächst geht es um:
    - Aussagenlogik
    - Prädikatenlogik

    Hier gibt es inhaltliche Bezüge zum Modul "Rechnerstrukturen und Betriebssysteme", wo man z.B. Schaltnetze und Schaltwerke aufbaut. Dort ist sozusagen die Aussagenlogik in Hardware realisiert. Hier nähert man sich dem Thema auf formale Weise, arbeitet mit Stift und Papier. Dieser Abschnitt des Kurses fiel mir recht leicht, weil ich einmal an der Uni meiner Heimatstadt mehrere Kurse in formaler Logik belegt hatte. Das war an der philosophischen Fakultät, die auch einen Schwerpunkt in analytischer Philosophie hatte und darum viele Veranstaltungen zum Thema Logik und formale Sprachen anbot. Bei mir war es das Interesse an den Arbeiten von Ludwig Wittgenstein, das mich in diese Veranstaltungen getrieben hat. Dort haben wir zum Beispiel Vollständigkeitsbeweise geführt. Im Modul der W3L wird vergleichsweise weniger verlangt, gerade im Bereich der Prädikatenlogik.
     
    Für Leser, die im Bereich der Logik noch wenig Vorkenntnisse haben: In der Aussagenlogik ist die kleinstmögliche Einheit, die betrachtet werden kann, die Aussage. Sie kann wahr oder falsch sein. Einfache Aussagen werden nun mit Verknüpfungen wie "und" und "oder" oder auch der "Implikation" verknüpft zu komplexeren Aussagen und man möchte untersuchen, welche Wahrheitswerte diese komplexeren Aussagen in Abhängigkeit von den Wahrheitswerten der einfachen Aussagen annehmen. Elektronisch kann man die Verknüpfungen in Formen von Logik-Bausteinen realisieren und Spannung oder keine Spannung steht für wahr oder falsch. In der Programmierung begegnet einem die Aussagenlogik vor allem bei bedingten Verzweigungen im Programm, wenn verschiedene Bedingungen mit logischen Operatoren verknüpft werden, in Java z.B. mit "!","&&","||".
     
    In der Prädikatenlogik wird die Aussage logisch weiter zerlegt. "Der Ball ist rot." wäre in der Aussagenlogik eine atomare  (also nicht weiter zerlegbare) Aussage. In der Prädikatenlogik wird hier von einem Objekt behauptet, dass es eine Eigenschaft hat. Genauer gesagt, behauptet man von einem Objekt, dass es einer Klasse zugehörig ist. "Das Objekt Ball ist der Klasse der roten Dinge zugehörig." Interessant wird es, wenn man solche Aussagen mit sogenannten Quantoren verknüpft. Diese entsprechen dem natürlich-sprachlichen "es gibt ein..." und "für alle ... gilt ...". Hier kann man vielleicht schon ahnen, dass das schon eine Menge mit Mathematik und mathematischen Beweisen zu tun hat. Es ist auch der Stoff, aus dem viele Logikrätsel in Zeitschriften sind.
     
    Den Abschluss des Kapitels bietet ein kurzer Überblick über Thema Vollständigkeit, Konsistenz, Entscheidbarkeit. Gödels Unvollständigkeitssatz wird erwähnt, auch seine Bezüge zum Halteproblem in der Informatik. Erwähnt wird auch, dass sich für die Aussagenlogik und Prädikatenlogik sowohl die Widerspruchsfreiheit als auch die Vollständigkeit beweisen lässt. Geführt wird dieser Beweis im Lehrbuch allerdings nicht. Hier wird von Philosophiestudenten der ersten Semester mehr erwartet als von angehenden FH-Informatikern. Schön finde ich trotzdem, dass das Thema vorgestellt wurde, denn es hat interessante erkenntnistheoretische Implikationen, auch wenn es für die Programmierung nicht direkt relevant ist. Wer Lust hat, sich diesem Thema einmal auf recht amüsante und gut verdauliche Weise zu nähern, dem möchte ich gerne das Comic "Logicomix: Eine epische Suche nach Wahrheit" von Apostolos Doxiadis und Christos Papadimitriou empfehlen. Es handelt vom Leben Bertrand Russells und dem Projekt des logischen Positivismus. Gödel, Wittgenstein und Frege treten als Nebenfiguren auf. Es macht viel Spaß.
     
    Im nächsten Kapitel werden zwei Anwendungen der klassischen Logik vorgestellt:
    - Boolesche-Netze
    - Expertensysteme
    Expertensysteme sind ja vielen im Zusammenhang mit dem Thema klassische KI geläufig. Von booleschen Netzen hatte ich noch nicht gehört. Sie sind letztlich eine Dynamisierung der Aussagenlogik. Es gibt ein Netz aus Knoten, die miteinander verbunden sein können. Jeder Knoten hat einen von 2 Zuständen - wahr oder falsch. Insofern entsprechen die Knoten Aussagen. Das Netz hat zu jedem Zeitpunkt einen Zustand - die Wahrheitswerte der Knoten. Das interessante ist nun, dass Knoten im Booleschen Netz ihren Zustand an verknüpfte Knoten senden und deren Zustand empfangen. Es sind logische Verknüpfungen (Junktoren) definiert, wie sich der Zustand jedes Knotens in Abhängigkeit vom Zustand  der verknüpften Knoten ändert. Das ist die Dynamik. Nun untersucht man, ob wie das System in einen stabilen Zustand (Attraktor) hineinläuft. Man kann zeigen, dass boolesche Netze äquivalent zu Turingmaschinen sind. Aber keine Angst, das ist dann nicht  mehr Gegenstand dieses Moduls. Für die Klausur  erwartet wird lediglich, dass man in einem gegebenen booleschen Netz Folgezustände aus einem Anfangszustand berechnen kann und etwas über Attraktoren und nach welcher Vorperiode sie erreicht werden sagen kann.
     
    Es folgt ein kleiner Ausflug in die Modallogik, eine Erweiterung der klassischen Logik. Sie ermöglicht Aussagen über das MÖGLICHE und das NOTWENDIGE. Philosophisch betrachtet kann man sich  vorstellen, dass es etwas, das falsch ist, in einer alternativen Welt war sein könnte. (Möglichkeit) Oder dass etwas, das wahr  ist, in jeder alternativen Welt wahr sein muss. (Notwendigkeit) Dieses Kapitel ist NICHT klausurrelevant. Ich erwähne das, weil es im Modul immer wieder kleinere Ausflüge in benachbarte Themengebiete gibt, um Bezüge zwischen Mathematik/Logik und anderen Wissensgebieten zu zeigen. Die Modallogik ist z.B. vor allem für Philosophen interessant. Wer möchte, kann sich hier ein bisschen breitere Bildung holen. Wer nur auf Bestehen der Klausur aus ist, könnte hier auch ein paar Seiten überspringen, würde aber etwas verpassen. Insgesamt bemühen sich die Autoren sehr, immer wieder Verknüpfungen zwischen der Mathematik, praktischen Anwendungen und anderen Wissenschaftsdisziplinen herzustellen, was diesen Kurs für mich auch zu einem ästhetischen Erlebnis gemacht hat.
     
    Nun kommt ein - für mich eher trockenes - Kapitel über Beweistechniken. Die größte Herausforderung für Studierende ohne Abitur dürfte hier das Prinzip der vollständigen Induktion sein, dass einem in diesem Modul immer wieder begegnet und auch in den Modulen Mathe2 und Mathe3 immer wieder aufblitzt. Wenn ich mich recht erinnere, tauchte das Thema bei mir auch in der Abschlussklausur auf. Wer also gerne richtig gut abschneiden möchte, sollte hier die praktischen Übungen (kleinere Beweise) nicht überspringen. Wer nur bestehen möchte, kann sich durchaus eine Lücke erlauben, aber seid vorgewarnt: Das Thema vollständige Induktion ist grundlegend und ihr werdet es so schnell nicht los.
     
    Weiter geht es mit  Mengenlehre, die manchen älteren Semestern vielleicht noch aus der Schule bekannt sein dürfte. Unmögliches wird hier nicht verlangt. Die Mengenlehre war ja früher Teil des Schulcurriculums und war vor allem bei Eltern sehr unbeliebt, die nicht verstanden haben, warum man "so einen Blödsinn" lernt, statt im Mathematik-Unterricht anständig zu rechnen. Für Mathematiker ist Mengenlehre ein ungeheuer mächtiges Ausdrucksmittel und ein Werkzeug, mit dem sich viele Beweise führen lassen. Darum ist es gut, sich damit einmal auseinander zu setzen, auch im Hinblick auf spätere Module. Für die Klausur wichtig sind auch Betrachtungen zur Kombinatorik, also wie viele Kombinationen von a Elementen kann ich aus einer Auswahl von b Elementen bilden, je nachdem ob das gleiche Element mehrfach vorkommen darf oder auch nicht. Hier treten Begriffe wie Fakultät oder auch Binomialkoeffizient auf. Auch das wird in späteren Modulen wichtig, wenn es zum Beispiel um Bernstein-Grundpolynome geht.
     
    Bis hierhin bin ich gut zurechtgekommen, aber nun kam das Kapitel "Relationen". Und spätestens beim Thema "Ordnungsrelationen" wurde die Darstellung dann schon recht formal. Im Grunde beschreiben Ordnungsrelationen etwas einfaches. Sie stellen in einer Menge eine Rangfolge von Elementen her. Zum ordnet die Relation "x ist größer als y" die Menge der natürlichen Zahlen. Es gibt aber z.B. auch Ordnungen, in denen ein Element  mehrere verschiedenen Nachfolger oder Vorgänger haben kann. Und dann kann es auch Elemente geben, die ich nicht paarweise vergleichen kann. Hier waren bei den Übungen durchaus Nüsse dabei, die ich nicht mehr knacken konnte. Und das bringt mich zu einem wichtigen Thema für Leute, die dieses Modul bearbeiten und auf Schwierigkeiten stoßen: Die Autoren EMPFEHLEN sehr viele Übungen und VERLANGEN die Bearbeitung von Online-Tests und Einsende-Aufgaben. Der Schwierigkeitsgrad der Übungen ist zum Teil viel höher als der der Einsendeaufgaben und Tests. Lasst euch also nicht entmutigen, wenn ihr nicht alle vorgeschlagenen Übungen schafft. In der Klausur werden vor allem die grundlegenden Konzepte aus den Themengebieten abgeprüft, keine Spitzfindigkeiten und Spezialfälle. Die Übungen sind eine Einladung, sich einmal herauszufordern und sich wesentlich gründlicher für die Prüfung vorzubereiten.
     
    Im Kapitel Relationen ging es dann auch um die sehr grundlegenden Begriffe der Abbildungen und Funktionen. Hier muss man z.B. prüfen, ob eine gegebene Funktion injektiv, surjektiv oder sogar beides (also bijektiv) ist. Außerdem geht es um Komposition von Abbildungen oder auch ihre Umkehrbarkeit. Wirkt alles oft sehr theoretisch, aber Achtung: Diese Konzepte kommen in den höheren Modulen wieder. Schafft euch hier eine solide Grundlage und ihr habt es später leichter.
     
    Es folgt das sehr ästhetische Kapitel  über Graphentheorie, ein Thema, von dem die meisten Schulabgänger nie gehört haben. Graphen begegnen einem in der Informatik tatsächlich ständig. Viele Strukturen in der realen Welt lassen sich damit sehr schön und kompakt beschreiben. Das ist ein Kapitel, das mir Spaß gemacht hat, weil man auch immer wieder viel zeichnet und es überhaupt recht graphisch zugeht. Hier lernt man als kleinen Nebenschauplatz das berühmte "Königsberger Brückenproblem" kennen, das man in verschiedenen Variationen aus Rätselbüchern kennen könnte. Graphenalgorithmen spielen keine Rolle. Hier geht es um die begrifflichen Grundlagen. Die sind auch der klausurrelevante Stoff. Die Inhalte dieses Kapitels werden euch wieder begegnen in Modulen wie "Softwaretechnik", "XML", "Web-Anwendungen", "Algorithmen und Datenstrukturen" oder "Computernetze". Haltet den Stoff nicht für irrelevant, bloß weil hier Formeln eine weniger dominante Rolle spielen.
     
    Das Kapitel über Topologie hat mich intellektuell zum Teil überfordert. Zum Glück ist es nicht klausurrelevant.
     
    Nun kam das sehr wichtige Kapitel über algebraische Strukturen. Wichtig, weil es zum Beispiel im Modul Mathe3 "Angewandte Mathematik" wieder auftaucht, und zwar in den Kapiteln zur Kryptik. Dort wird zwar alles noch mal schnell wiederholt, aber arbeitet lieber hier gründlich, dann habt ihr es später leichter. Knapp gesagt geht es um Gruppen, Ringe, Körper und Vektorräume. Für die Klausur bekommt man zum Beispiel eine Menge und Verknüpfungen und muss dannuntersuchen, ob man es mit einem Körper zu tun hat. Macht das gründlich, auch wenn es euch zunächst sehr abstrakt vorkommt, und ihr nicht seht, wofür man es brauchen kann. Ihr werdet es brauchen, nicht nur für die Abschluss-Klausur.
     
    Im nächsten Kapitel geht es um Rekursivität. Die Konzepte und Begriffe, die ihr hier lernt, tauchen z.B. in den Programmiermodulen wieder auf, und zwar durchaus in sehr praxisrelevanter Form. Zur Auflockerung gibt es hier einen kleinen Ausflug in die fraktale Geometrie, der nicht klausurrelevant ist. Wenn ihr schon immer mal wissen wolltet, was es mit dem schönen "Apfelmännchen" auf sich hat, das ja zwischenzeitlich mal zur populären Ikone wurde, dann gönnt euch den Spaß. Sonst könntet ihr hier auch ein paar Seiten überspringen.

    Wichtiger für den angehenden Informatiker ist der Ausflug in die theoretische Informatik. Hier geht es um Zustandsautomaten und formale Sprachen. Das ganze wird nur angerissen und hier bedauere ich ein wenig, dass ein eigenes Modul "Theoretische Informatik" im Curriculum der W3L NICHT vorgesehen ist. Ein paar Themen tauchen in "Softwaretechnik 1" noch einmal vertiefter auf. Wer mehr "Appetit" auf so etwas hat, muss sich sein "Futter" woanders suchen.
     
    Erwähnt wird in diesem Kapitel auch die ungewöhnliche deklarative Programmiersprache PROLOG, mit der man logische Beziehungen gut ausdrücken kann. Leider viel zu knapp, um wirklich etwas damit anfangen zu können, aber immerhin schön, dass hier ein wenig Neugierde geweckt wurde. Praxisrelevanter sind die Abschnitte über "Wege aus endlosen Schleifen". Konkret geht es darum, dass Programme in der Regel irgendwann halten sollten, statt unendlich weiter zu laufen, und wie man das sicherstellen kann.
     
    Im folgenden Kapitel geht es um eine interessante Erweiterung der klassischen Logik - die sogenannte Fuzzy Logic, die eigentlich eher ein Fuzzy Set Theory ist. In der klassischen Mengenlehre ist ein "Ding" Element einer Menge oder nicht. In der Fuzzy Set Theory, kann es unterschiedliche Grade der Zugehörigkeit geben. Eine Schwalbe wäre dann "vogeliger" als ein "Pinguin" und eine Fledermaus, die in der klassischen Mengenlehre kein Vogel ist, könnte doch ein bisschen "vogelig" sein. Der Grad der Zugehörigkeit wird in der Regel als Zahl zwischen 0 und 1 ausgedrückt. Verknüpfe ich nun Aussagen über diese unscharfe Zugehörigkeit, bin ich bei der unscharfen Logik. Die kann man tatsächlich praktisch anwenden, zum Beispiel in der Steuerung. Klassisches Beispiel ist das Beschleunigen und Bremsen eines Portalkrans mit einer darunter hängenden Nutzlast. Das schöne an der Fuzzy Logic ist, dass man damit gut Faustregeln von Praktikern oder Fachleuten in einem Gebiet modellieren kann, so dass ein technisches System mit Faustregeln arbeiten kann. Im Kurs geht es allerdings zunächst mal um die begrifflichen Grundlagen, nicht um das, was der Ingenieur macht. Die Fuzzy Set Theory ist klausurrelevant.
     
    Den Abschluss bildet ein sehr knappes Kapitel über Komplexitätstheorie. Das Thema taucht zum Beispiel im Modul "Algorithmen und Datenstrukturen" wieder auf, wenn man verschiedene Such- und Sortieralgorithmen vergleicht. Ein wenig beschäftigt man sich auch mit zellulären Automaten, aber das ist eher ein reinschnuppern und hier würde ich mir für spätere Module mehr "Futter" erwarten.
     
    Insgesamt hat mir das Modul sehr viel Spaß gemacht. Ich kann mich noch gut an mein Heureka-Erlebnis  erinnern, als ich Cantors Diagonalverfahren begriffen habe und endlich verstanden habe, warum es zwar unendlich viele natürliche Zahlen, rationale Zahlen und reele Zahlen gibt, aber wieso es gleich viele rationale und natürliche Zahlen aber mehr reele Zahlen gibt. Für so etwas zahlt einem später niemand ein Gehalt, aber der Mensch lebt nicht vom Brot allein.
     
    Zum Spaß am Modul hat auch die hervorragende Betreuung durch meinen Tutor beigetragen. Als ich mich ihm vorgestellt habe, habe ich gleich erwähnt, dass ich aus einem fachfremden Beruf komme und lange aus dem Thema Mathematik "raus" bin. Er hat mir ein wenig von seinem eigenen Werdegang erzählt, der ihn mehrmals über Fachgrenzen geführt hat, und mich sehr ermutigt, meinen Weg zu gehen. Wir hatten immer wieder einen interessanten fachlichen Austausch. In diesem Modul nicht allein zu konkreten Problemen mit Aufgaben, denn ich kam ganz gut zurecht. Ich hatte auch Fragen zu den vielen Ausflügen in benachbarte Themengebiete, die im Kurs skizziert waren. Hier merkte ich deutlich: Ich habe es mit einem Menschen zu tun, der gewohnt ist, über die Grenzen seines fachlichen Biotops hinaus zu denken und Wissensgebiete zu verknüpfen. So etwas gefällt mir grundsätzlich und so habe ich hier viele Anregungen für mich mitgenommen. Sehr spürbar war in diesem Modul auch ein aufrichtiges Bemühen, den Wieder- und Neueinsteigern ein bisschen mehr Begleitung zukommen zu lassen. Für das Modul Mathe1 aus meiner Sicht optimal. In den späteren Modulen ist die Betreuung auch sehr gut, aber die Atmosphäre ist ein bisschen sachlicher, der Ton etwas knapper und es wird schon mehr Selbstständigkeit erwartet. Das passt aus meiner Sicht alles gut zusammen.
  21. kurtchen
    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.
  22. kurtchen
    Einordnung und Voraussetzungen
     
    Das Modul "nichtsequentielle Programmierung" (NSP) ist für Studierende im Studiengang "Web- und Medieninformatik" das letzte im Fachgebiet "Grundlagen der Informatik und Programmierung". Springer Campus empfiehlt, es im 5. Semester zu belegen. Die Module "Grundlagen der Informatik 1 & 2" werden als inhaltliche Voraussetzung genannt. Konkret heißt das, dass man Grundkenntnisse in strukturierter, prozeduraler und objektorientierter Programmierung in Java braucht. Auch Kenntnisse der generischen Programmierung, wie sie GdI2 vermittelt, sind unbedingt nötig.
     
    Meiner Meinung nach reicht das aber nicht. Ich möchte ergänzen, dass das Modul "Rechnerstrukturen und Betriebssysteme" eine nötige Vorbereitung ist, weil man hier einiges an Hintergrundwissen über Speicher- und Prozessverwaltung lernt. Auch GdI3 sollte man meiner Meinung nach belegt haben, weil die Kursteile zu Nebenläufigkeit und GUIs eigentlich voraussetzen, dass man sich ein bisschen mit Swing und dem AWT auskennt. Schließlich halte ich auch GdI4 "Algorithmen und Datenstrukturen" für zumindest sinnvoll, weil es bei der nichtsequentiellen Programmierung auch um den nebenläufigen Zugriff auf verschiedene Datenstrukturen geht. Es ist sinnvoll, wenn man diese kennt und versteht.
     
    Studierende im Studiengang Wirtschaftsinformatik müssen NSP nicht absolvieren, können es aber als Vertiefung belegen. Außerdem ist NSP ein Pflichtmodul der wissenschaftlichen Weiterbildung "Anwendungsprogrammierer". Das könnte für manche Studierende interessant sein, die sich unsicher sind, ob ihre Ausdauer für ein komplettes Bachelorstudium reicht.
     
    Das Lehrbuch
     
    Grundlage für den Kurs ist das Lehrbuch "Java: Nebenläufige und verteilte Programmierung" von Peter Ziesche und Doga Arinir. Es hat an die 360 Seiten, aber wegen recht umfangreicher Anhänge kommt der reine Kurstext auf nur ca. 330 Seiten, was für einen Springer Campus Kurs eher im unteren Mittelfeld liegt. Diese 330 Seiten haben es allerdings in sich. Ich empfinde NSP als das herausfordernste der Java-Module.
     
    Der Titel ist Programm. Nebenläufige Programmierung heißt, dass es mehr als einen Kontrollfluss gibt. Verteilte Programmierung heißt, dass Teile einer Anwendung auf verschiedenen Rechnern ausgeführt werden, sozusagen Nebenläufigkeit plus Entfernung. Wichtig ist zunächst die grundlegende Unterscheidung zwischen Prozessen und Threads. Prozesses laufen in je eigenen Speicherbereichen, während sich Threads als leichtgewichtige Prozesse einen Speicherbereich teilen. Die Möglichkeit, so auf gemeinsamen Daten zu arbeiten, erleichtert einerseits die Kommunikation und Kooperation zwischen den Threads. Andererseits schafft das viele Probleme, die erst zur Laufzeit auftreten und schwer reproduzierbar sind.
     
    Warum ist nebenläufige Programmierung schwierig?
     
    Als Programmierer kann man sich vorstellen, dass nebenläufige Programmteile auf verschiedenen CPUs zur Ausführung kommen. In modernen Multicore-Systemen kann und wird das auch tatsächlich so sein. Da in modernen Betriebssystemen stets Dutzende von Prozessen laufen, werden nebenläufige Programmteile de facto häufig auf einer CPU oder einem Kern ausgeführt werden, der zwischen verschiedenen Threads umschaltet. Es ist nicht vorhersehbar, in welcher Reihenfolge die Threads zur Ausführung kommen werden. Wenn Threads eine gemeinsame Datenstruktur manipulieren, kann man also nicht vorhersagen, was in welcher Reihenfolge passieren wird. Genau hier liegt eine der großen Herausforderungen. Als Programmierer gewöhnt man sich nämlich zunächst an das schön planbare Nacheinander eines Programmablaufs. Man trainiert sich an, in Sequenzen zu denken, Abläufe in Arbeitsschritte und Zustandsabfolgen zu zerlegen. Der Programmzustand ist so zu jedem Zeitpunkt das Ergebnis dessen, was zuvor passiert ist. Bei nebenläufigen Programmen ist das im Prinzip auch so, aber es gibt Ungewissheit, was in welcher Reihenfolge passieren wird. Man ist gezwungen, viel darüber nachzudenken, welche Ausführungsreihenfolgen möglich sind und welche Folgen das haben könnte. Auch wird das Testen eines Programmes schwieriger. Ein Programm kann bei Tests hervorragend laufen und im Dauerbetrieb kommt es zu bizarren Bugs, mit denen man nie gerechnet hätte. Nebenläufige Programmierung ist leider komplex.
     
    Theoretische Konzepte
     
    Kommen wir zum Aufbau des Kurses. Die ersten 60 Seiten sind eine Einführung in die nebenläufige Programmierung. Es beginnt mit grundlegenden Konzepten:
    - Anwendungen und Prozesse
    - Threads und Scheduling
    - Speicherverwaltung mit Stapel und Halde, zunächst sequentiell
    - und Speicherverwaltung bei mehreren Threads
    - Vorteile von Nebenläufigkeit: Bessere Performance und bessere Reaktionszeiten, vor allen in Multicore-Umgebungen
    - Probleme nebenläufiger Programme
    - Synchronisation und kritische Abschnitte
    - Monitore
    - Lebendigkeit
    - Verklemmungen
     
    Insbesondere bei den Ausführungen zur Speicherverwaltung musste ich schon sehr konzentriert lesen, um nachvollziehen zu können, was genau auf Stapel und Halde z.B. bei der Initialisierung eines GUIs passiert. Auch wenn hier Codebeispiele in Java gegeben werden, geht es in diesem Kursteil nicht um die Programmiersprache Java sondern um Konzepte.
     
    Die Umsetzung in Java
     
    Diese Konzepte werden in den folgenden 60 Seiten mit Leben erfüllt, denn nun geht es um die Realisierung in Java. Man lernt:
    - Threads zu erzeugen, indem man von Thread abgeleitete Klassen programmiert.
    - Die Schnittstelle Runnable zu nutzen, um Aufträge einem Thread zur Ausführung zu übergeben.
    - Gegenseitigen Ausschluss zu realisieren, indem man Methoden oder Codeabschnitte als synchronized kennzeichnet.
    - Monitore in Java zu implementieren, in denen Threads schlafen gelegt werden, die auf Ressourcen warten müssen.
    - Erste Strategien, um Verklemmungen zu vermeiden.
     
    Das Kapitel endet mit einem Fallbeispiel "Generisches Suchsystem", an dem die neuen Konzepte in einer Anwendungssituation gezeigt werden sollen. Dieses Fallbeispiel, dass sich durch den Kurs zieht, ist einer meiner wenigen Kritikpunkte. Während das Fallbeispiel Auftragsverwaltung aus GdI3 komplett und ausführbar vorlag und ausprobiert werden konnte, ist das generische Suchsystem nicht lauffähig, weil nicht komplett ausprogrammiert. Man kann die Klassen compilieren, aber man kann es nicht in Aktion erleben. So hat man nur eine statische Sicht auf den Code: Das hat didaktisch zwar auch einen hohen Wert, aber mir hätte es geholfen, mit dem Fallbeispiel herumspielen zu können, den Code in der Ausführung zu erleben. Dieser Aspekt hat mir bei diesem Kurs gefehlt. Zum Glück gibt es viele andere Codebeispiele im Kurs, die ausführbar sind und zum Experimentieren einladen.
     
    Modellierung von Nebenläufigkeit in UML
     
    Es folgt ein kurzes Kapitel über die Modellierung von Nebenläufigkeit in der UML. In den sonst so wichtigen Klassendiagrammen ist sie nicht so gut darstellbar. Nebenläufigkeit ist etwas, dass sich zur Laufzeit entfaltet. Sie kann daher besser mit Aktivitätsdiagrammen, Sequenzdiagrammen und Zustandsautomaten dargestellt werden. Hier wird auch auf den Anhang verwiesen, bei dem noch einmal die Petri-Netze knapp wiederholt werden, die ich ja schon aus Softwaretechnik 1 kannte. Die Markenwanderung im Petri-Netz hilft nämlich, Aktivitätsdiagramme besser zu verstehen. Hier sieht man, dass die Module oft schön untereinander vernetzt sind. Dieses Kapitel ist kurz, aber für die Präsenzklausur sollte man sich das gut anschauen.
     
    Vertiefende Kapitel zur Nebenläufigkeit in Java
     
    Nun kommt ein Kapitel zum Entwurf nebenläufiger Anwendungen in Java. Dieses Kapitel ist eine Sammlung verschiedener Klassen, die beim Entwurf nebenläufiger Anwendungen hilfreich sein können. Sie stammen meist aus java.util.concurrent.

    Man lernt hier vieles über:
    - den Unterschied zwischen threadsicheren und nebenläufigen Klassen
    - verschiedene Arten von Warteschlangen und Puffern
    - Container mit copy-on-write-Semantik, deren Iteratoren bei nebenläufigen Schreibzugriffen weiter laufen können.
    - verschiedene nebenläufige Container
    - Auftragsdienste und Threadpools, die eine Anzahl von Threads zum Abarbeiten von Auftragen bereithalten.
    - Aufträge mit Ergebnis, die etwas komplizierter zu handhaben sind.
    - Flexible selbst implementierte Monitore mit eigenen Lock-Objekten und Conditions
    - Leser-Schreiber-Synchronisation
    - Atomare Operationen
     
    Als Anwendungsbeispiele dienen hier nebenläufige Matrizenmultiplikation und ein nebenläufiger Quicksort. Diese Beispiele eigenen sich gut für eigene Experimente.
     
    Ein Problem mit diesem Kursteil ist: Die einzelnen Klassen werden recht knapp vorgestellt. Die Codebeispiele sind ausreichend aber oft nur Skizzen. Es fehlt häufig die Einbettung in einen Anwendungskontext, wie sie z.B. bei der Matrizenmultiplikation gegeben ist. Oft wird auf die API-Dokumentation verwiesen, die man tatsächlich auch braucht, will man das alles verstehen. Das Kapitel ist eher eine Sammlung von Methoden und hat für mich keinen richtigen roten Faden.
     
    Dafür ist hier die Abstimmung mit den Einsendeaufgaben sehr gut. Die laufen meist darauf hinaus, etwas zu programmieren, bei dem die vorgestellten Klassen zum Einsatz kommen. Oft reicht am Ende wenig Code. Trotzdem habe ich hier regelmäßig gemerkt, was ich eben noch nicht verstanden hatte. Ich musste mich regelmäßig durch die API-Dokumentation wühlen, um Erfolg zu haben. Rückblickend meine ich, dass das mehr gebracht hat als ein Text, der von vorneherein alle Eventualitäten erklärt. Das Lehrbuch lässt genug offen, um in den Aufgaben Spielraum für eigene Erkundungen und Aha-Erlebnisse zu haben. Im Zusammenspiel mit den Aufgaben funktioniert das Buch sehr gut.
     
    Im nächsten Kapitel geht es um fortgeschrittene Konzepte von Nebenläufigkeit in Java. Hier geht es z.B. um:
    - das kontrollierte Beenden von Threads
    - Swing-GUIs und Nebenläufigkeit: Fallbeispiel ist hier die Fortschrittsanzeige eines nebenläufigen Auftrages. Eine alltägliche Situation, die komplizierter ist als man zunächst denkt.
    - Caches und Synchronisation
     
    Ans Eingemachte geht es mit den Abschnitten über Caches und Synchronisation. In modernen PCs haben die CPUs ja mehrstufige Caches, in denen sie oft benötige Daten ablegen. Arbeiten mehrere CPUs parallel, stehen im Cache eventuell Daten, die im RAM schon längst geändert wurden. Eine gemeinsam genutzte Variable kann so aus Sicht verschiedener CPUs oder Kerne zugleich verschiedene Werte haben, was dem intuitiven Verständnis von Speicherinhalt widerspricht. So etwas kann zu bizarren und schwer nachvollziehbaren Bugs führen. Java bietet Sprachkonstrukte, mit denen man einen Refresh oder Flush des Caches erzwingen kann. Diese sollte man aber nicht ständig einsetzen, weil so die Zugriffszeiten auf Speicherinhalte steigen und das Programm langsamer wird. Man kommt also nicht umhin, sich zu überlegen, was man tut. Auch in diesem Kapitel war die Verzahnung mit den Einsendeaufgaben sehr gut.
     
    Verteilte Programmierung
     
    Im letzten Kapitel geht es dann um verteilte Anwendungen mit RMI (Remote Methode Invocation). Eine Java-Anwendung kann auf mehrere Rechner verteilt sein, z.B. auf einen Client und einen Server. Ein Client kann Methoden auf dem Server aufrufen. Dazu erhält er über das Netz sogenannte Stummel-Objekte, die sozusagen nur die Schnittstelle und keine Implementierung enthalten. Arbeitet man mit RMI, so implementiert man viele Dinge etwas anders als bei einer Anwendung, die lokal läuft. Entfernte Methodenaufrufe dauern relativ lange. Darum bieten sich Methoden an, die z.B. mehrere Attribute eines Objektes auf einmal abfragen oder verändern.
     
    Es war  schwierig, zum Thema RMI gute und aktuelle Quellen neben dem Kursmaterial zu finden. Manche Codebeispiele liefen nicht mehr so wie im Buch beschrieben, weil inzwischen verschärfte Sicherheitskonzepte gelten. Ich habe hier nicht alles ausprobieren können. Verteilte Programmierung ist komplex. Dies gilt auch für die Verteilung und Installation von Anwendungen. Ich fand es gut, dass dieses Thema behandelt wurde, merkte aber an dem Punkt auch, dass es Grenzen gibt, wie viel Stoff ich für eine Modulprüfung verdauen kann.
     
    Zum Glück wies mein Tutor mich darauf hin, dass dieses letzte Kapitel nicht klausurrelevant ist. Für den Online-Test und die Online-Klausur ist es aber wichtig, also sollte man sich gut damit beschäftigen.
     
    Online-Tests und Online-Klausur
     
    Bei den Tests gab es in diesem Kurs eine Besonderheit. Es waren vergleichweise wenige und zu mehreren Kapiteln gab es gar keine. Der Abschluss-Test deckte aber auch diese Kapitel ab. Hier musste man also direkt liefern ohne zuvor an Fragen zum gleichen Stoff sein Verständnis überprüfen zu können. Es ist mein Eindruck, dass hier bewusst noch eine kleine Hürde vor den ersehnten Bonuspunkten eingezogen wurde. Tatsächlich habe ich bei diesem Kurs nur vergleichsweise wenige Bonuspunkte erringen können, sowohl im Online-Test als auch in der Online-Klausur, die ich ebenfalls als herausfordernd empfand. Der eigentliche Nutzen der Online-Klausur war denn auch das Feedback meines Tutors, das mir ermöglicht hat, die Aufgaben noch einmal zu überarbeiten und dabei noch einige Einsichten zu erlangen. Auch in der Online-Klausur kann Stoff aus dem gesamten Kurs drankommen, auch zu dem Kapitel über RMI.
     
    Präsenzklausur
     
    Für die Präsenzklausur habe ich das Lehrbuch insgesamt 3 mal durchgearbeitet und mit vielen Anmerkungen versehen. Außerdem habe ich mir zum Thema viel Sekundärliteratur aus der Unibibliothek besorgt. Einen konkreten Titel nennen möchte ich aber nicht, weil ich in den meisten Büchern immer nur kurze hilfreiche Abschnitte gefunden habe. Das Lehrbuch von Ziesche und Arinir ist schon sehr gut zusammengestellt und behandelt sehr viele Konzepte, die man anderswo weit verstreut zusammensuchen muss. So kam ich letztlich doch immer wieder darauf zurück. Ich würde für die Klausur empfehlen, die Kapitel 2 bis 5 gründlich zu wiederholen.
     
    Die Präsenzklausur war breit angelegt. Ein Mix aus Wissensfragen, Code analysieren, Code schreiben, UML-Diagramme zeichnen. Inhaltlich wurden eher die Grundkonzepte abgeprüft und nicht so sehr ausgefallene Klassen aus java.util.concurrent. Ich würde empfehlen, die theoretischen Grundlagen und die Kapitel zur UML gut zu wiederholen. Und die grundlegenden Kapitel zu Threads in Java. Damit hat man schon mal einen guten Teil abgedeckt. Strategisch würde ich bei dieser Klausur dazu raten, erst die leichteren Aufgaben mit weniger Punkten zu machen und erst dann die umfangreicheren. Ich habe es umgekehrt gemacht, aber das war hier klar die falsche Strategie, weil ich an irgendeinem Punkt abbrechen musste und später nur schwer wieder reinkam. Eine Aufgabe war etwas anspruchsvoller, weil ein Thema, dass im Kurs nur recht knapp vorgestellt wurde, nun in einer Anwendungssituation ausprogrammiert werden sollte. Mein Tipp: Wenn im Kurstext die Rede davon ist, sich gewisse Dinge noch einmal in der API anzuschauen, dann macht das. Kann auch nicht schaden, die knappen Codebeispiele abzutippen, auszuführen und selbst ein bisschen damit zu experimentieren. Das bezieht sich vor allem auf Kapitel 5.
     
    Fazit
     
    Insgesamt wieder ein schöner Kurs. Leider ist damit die Serie der Java-Module nun vorbei. Schade, denn gerade die haben mir besonders viel Spaß gemacht. Es wird noch ein Wiedersehen mit Java geben, weil auf mich noch der Kurs "Java Server Pages" aus dem Fachgebiet "Web- und Medieninformatik" wartet. Da geht es dann um serverseitige Anwendungen, die dynamisch HTML erzeugen. Das macht man meistens mit PHP aber bei Springer Campus eben mit Java.
     
    Nachtrag (08.12.2016)
     
    Heute kam das Ergebnis der Präsenzklausur. Ich hatte Glück und habe ziemlich gut abgeschnitten. Hier konnte ich wieder einmal lernen, dass ich mich nicht entmutigen lassen sollte, auch wenn der Stoff eines Moduls am Anfang schwer zu fassen ist. Nichtsequentielle Programmierung habe ich als das schwierigste der Java-Module empfunden. Ich habe hier ein paar Anläufe mehr gebraucht, um die Konzepte wirklich zu verstehen. Gerade die Online-Klausur, bei der noch vieles schief gelaufen ist, hat mir hier noch einmal wertvolle Rückmeldungen gebracht. Auch weil mein Tutor sich nicht damit begnügt hat, meine Arbeit nur mit Punkten zu bewerten sondern differenzierte inhaltliche Rückmeldungen gegeben hat, wo genau die Mängel meiner vorgelegten Lösungen waren. Das hat mir erlaubt, mich "auf den letzten Metern vor dem Ziel" noch einmal zu steigern.
     
    Ich denke, dass das ganze auch ein bisschen mit seelischer Reife zu tun hat. Wenn ich an mein Erststudium zurückdenke, so meine ich, dass ich mich damals von Schwierigkeiten viel schneller habe verunsichern lassen. Ich bin jetzt ein paar Jahre älter und habe in meinem Leben auch den einen oder anderen Misserfolg wegstecken müssen, privat wie beruflich. Da erlebt man, dass man nach einen Sturz auch wieder aufstehen kann. Dass Fehler vor allem den aktuellen Lernstand wiederspiegeln, aber eben längst nicht das eigene Potential für die Zukunft. Natürlich hatte ich das auch mit 19 Jahren schon einmal gehört. Aber jetzt ist das eigene Erfahrung und nicht der gute Rat anderer. Es macht viel mehr Spaß als früher, mit dieser veränderten Perspektive zu studieren.
  23. 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.
  24. kurtchen
    Mein zweites Modul bei der W3L war "Rechnerstrukturen und Betriebssysteme". Es ist eines von 4 Pflichtmodulen im Studienbereich IT-Systeme. Ich hatte es früh belegt, weil ich wusste, dass es dort auch um Digitalelektronik geht. Da hatte ich ein bisschen Vorkenntnisse, weil ich in der 9. und 10. Klasse einen Differenzierungskurs Mathematik belegt hatte, und da hatten wir uns ein halbes Jahr lang mit Digitalelektronik beschäftigt und z.B. Serienaddierer gebaut. Insofern hatte ich gehofft, dass mir dieses Modul etwas leichter fallen würde, was für den Einstieg ins Studium ja nicht schlecht gewesen wäre. Ein bisschen Zweifel an dieser Entscheidung kamen auf, als beim Präsenztag mehrere Kommilitonen meinten, dieses Modul habe es in sich. Aber da hatte ich schon gebucht und musste die Sache angehen.
     
    Inhalte des Moduls waren:
    - Codierung von Zahlen.
    - Boolesche Algebra:  Ausdrücke, Funktionen, Normalformen
    - Umformung und Minimierung boolescher Ausdrücke
    - darauf aufbauend Schaltnetze: Das sind zustandslose Schaltungen, die bei einem bestimmten Eingangsvektor immer den gleichen Ausgangsvektor liefern.
    - und Schaltwerke: Die haben einen inneren Zustand, der mit dem Eingangsvektor verknüpft wird. Und darum liefern die nicht immer den gleichen Ausgangsvektor bei gleichem Eingangsvektor.
    - Rückkopplungselemente, Flip-Flops, Steuerwerke
     
    Bis  hierhin kam ich mit meinem Schulwissen ziemlich gut mit.
     
    Aber nun ging es weiter mit:
    - Grundstruktur des Prozessors
    - Rechenwerk des Prozessors
    - Steuerwerk des Prozessors
    - Prozessorarchitekturen
    - Befehls- und Programmabarbeitung
    - Koprozessoren
    - Optimierungskonzepte
    - Multiprozessorsysteme
    - Prozessorcaches
    - Ein-/Ausgabe-Komponenten
     
    Da hatte ich weniger Vorkenntnisse und das fiel mir schon schwerer.
     
    Nun kam der Schwenk zur Software also zu Betriebssystemen. Hier ging es vor allem um:
    - Prozessverwaltung
    - Speicherverwaltung
    - Dateiverwaltung
     
    Einsendeaufgaben waren z.B. einen Fehler in einem Schaltwerk finden, ein Schaltnetz vereinfachen, die Vorzüge verschiedenen Prozessorarchitekturen gegeneinander abwägen, virtuelle Speicheradressen berechnen.
     
    Eine Herausforderung bei diesem Kurs war, dass das Lehrbuch sehr dicht geschrieben war. Es hatte nur an die 200 Seiten, was mir zunächst sehr wenig vorkam. Aber die hatten es in sich. Jeder Satz zählte. Am Anfang hatte ich mit diesem Stil meine Schwierigkeiten. Ich hatte mir viel Sekundärliteratur aus der Uni-Bibliothek besorgt, um alles noch einmal und ausführlicher zu lesen. Nach einer Weile merkte ich jedoch: Das knappe Buch der W3L enthält alles was man braucht. Man muss nur sehr genau lesen und sich klar machen, dass jeder Satz wichtige Informationen enthält. Nachdem ich  das begriffen hatte, war ich von dem  Buch sogar ziemlich begeistert. Wegen der knappen Form konnte man es sehr gut zum Nachschlagen benutzen. Es dauerte nie lange, etwas zu finden.
     
    Sehr hilfreich war auch bei diesem Kurs die recht intensive Betreuung durch meinen Tutor, der viele weitergehende Fragen von meiner Seite in kurzer Zeit beantwortete und auch mal auf Nachfrage zusätzliches Material per PDF schickte. So bekam ich im Laufe der Zeit doch ziemlich viel Spaß an der Auseinandersetzung mit den Themen des Kurses.
     
    Die Klausur lief dann auch  ganz gut. Ich hatte sogar Zeit, vieles noch einmal gründlich zu checken. Geholfen hat mir hier, dass ich die Einsendeaufgaben in der Vorbereitung noch einmal  gründlich durchgegangen war und auch die Online-Klausur geschrieben hatte. Das gab schon einen ganz guten Eindruck von dem, was einen erwartete.
     
    Nach dem Kurs hätte ich Lust gehabt, vertiefende Kurse mit Hardwarebezug zu buchen. Internet of things ist ja ein aktuelles Schlagwort und es gibt auch immer mehr embedded systems, die in irgendeiner Weise vernetzt sind. Leider hat die W3L hierzu bislang nichts im Angebot. Das Studium heißt "Web- und Medieninformatik", insofern spielen Web-Technologien die entscheidende Rolle. Hardware ist eher ein Grundlagenthema, mit dem man sich einmal auseinander gesetzt haben sollte. Um mehr  davon zu bekommen, hätte ich wohl eher  technische  Informatik studieren müssen. Vielleicht kommt ja später einmal eine Gelegenheit, mich mit solchen Themen vertieft zu beschäftigen.
     
  25. kurtchen
    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.
×
×
  • Neu erstellen...