Unsere Studieneingangsphase besteht aus den aufeinander abgestimmten Modulen Einführung in die Informatik/Wirtschaftsinformatik und Arbeitstechniken. Mit dieser Eingangsphase versuchen wir, Euch den Übergang von der Schule oder dem Ausbildungs- oder Berufsleben in das Studium leichter zu machen. Studium bedeutet eine andere Form des Verhältnisses von vermittelten Inhalten und selbst zu Erarbeitetem als Ihr es möglicherweise von der Schule gewohnt seid. Grundsätzlich findet bei uns viel von Beginn an in Teamarbeit statt. Daran müsst Ihr Euch möglichst früh gewöhnen, denn Informatik und Wirtschaftsinformatik funktioniert ohne Teamfähigkeit nicht.
In der Einführungsveranstaltung arbeiten wir viel bereits mit den grundlegenden Werkzeugen, die Euch das ganze Studium begleiten sollen. Ihr lernt eine Skriptsprache (bash), einen Editor (vim), grundlegende Webtechnologien (Html, CSS), ein wenig Grundlagen von Netzwerken und vernetzten Systemen und Mechanismen zur Visualisierung.
All das geschieht in unserer Informatik-Infrastruktur, die von Studierenden höherer Semester unter Betreuung von Lehrenden seit Jahren entwickelt und gepflegt wird.
Wie seit mehreren Jahren bereits werden wir uns auch in diesem Jahr wieder mit AIS-Daten-Erfassung und deren Darstellung im Web beschäftigen. Schließlich liegt unsere Hochschule fast direkt an der Weser und wir haben einen eigenen kleinen Empfänger für die Positionierungsdaten der Schiffe im näheren Umfeld.
In diesem Jahr vertrete ich Nadija für die Veranstaltung Datenbanken II für das 5.Semester - also für diejenigen, die in älteren Prüfungsordnungen sind als derjenigen von 2024 und damit noch ein 3 CP Modul benötigen.
Es wird wie im Modulhandbuch beschrieben natürlich um Datenbankentwurf im Anschluss an die erste Datenbankveranstaltung im zweiten Semester gehen. Zudem spielen Transaktionskonzepte, Rollenkonzepte, Trigger, Partitionierung, prozedurale Datenbanksprachen und Replikation eine Rolle. Damit wir wieder praxisorientiert gemeinsam all die Konzepte untersuchen können, werden wir PostgreSQL einsetzen. Wir nutzen die Version 16, die in der Ubuntu 24.04 LTS Version mit apt installierbar ist. Ihr werdet also Eure VM aus dem zweiten Semester benötigen und Ihr solltet damit umgehen können.
Wir werden in der virtuellen Maschine, die Ihr im zweiten Semester auf Euren Notebooks installiert und kennengelernt habt, eine docker-basierte Umgebung aufbauen, die derjenigen ähnelt, die Ihr vom ersten Semester an auf turing in der Infrastruktur nutzt.
Das Hauptziel der Veranstaltung ist, dass Ihr Euch in einer vernetzten Umgebung mit IP-basierten Netzwerken auskennt und solch eine Umgebung aufbauen könnt. Natürlich spielen dabei IP-Adressen, TCP-IP, OSI-Schichtenmodell, Protokolle wie HTTP, HTTPS, SMTP etc. eine entscheidende Rolle. Neben diesen klassischen Rechnernetze Themen soll aber vor allem eine Systemarchitektur, die auf unterschiedliche Maschinen verteilt wird, aufgebaut werden. Die Rolle von Loadbalancer, Webserver, Datenbankserver, InMemory-Store, Message-Handling in einem größeren System wird untersucht, indem wir mit docker auf Euren Notebooks in Euren virtuellen Maschinen eine Systemarchitektur entwickeln, monitoren, messen und visualisieren.
Ihr werdet dazu eine weitere Programmiersprache kennenlernen: PHP. Diese Sprache wird aber nicht die gleiche Rolle wie Java, C++ oder Javascript spielen. Wir benötigen lediglich eine Backend-Sprache neben der Bash, die für Euch leicht genug zu erlernen ist, dass Ihr mit Euren Grundkenntnissen schnell auf einen Stand kommt, auf dem Ihr Konzepte programmieren könnt, die wir dann untersuchen. PHP ist in der Weise, in der wir es Euch zeigen, von Euren Bash-Kenntnissen aus sehr schnell in wenigen Tagen zu erlernen.
Als Lernmethode werden wir wieder viel Live-Coding praktizieren. Ihr bekommt wöchentlich Hausaufgaben, die Ihr in den vier Stunden Zeit, die Ihr zum Lernen und Verinnerlichen der Inhalte zusätzlich zu der Veranstaltung aufbringen sollt, auch wirklich regelmäßig machen.
Nicht zuletzt wird es das Semester und die Veranstaltung sein, wo Ihr mit VSCodium vertraut werdet. VSCodium ist die OpenSource Version von VSCode mit der wir insbesondere das Entwickeln innerhalb einer verteilten Umgebung erarbeiten.
Zu den im ersten und zweiten Semester angeeigneten Werkzeugen kommen hinzu: VSCodium - PHP - HaProxy - Redis.
Git, Javascript, Bash, Queue, gnuplot, Html und CSS werden vertieft.
Das, was typischerweise vielleicht in einem Modul mit dem Namen Grundlagen der Systemintegration zu erwarten ist, vermitteln wir in Bremerhaven in den vorigen Modulen schon recht umfangreich. Zumindest, wenn das Wort Grundlagen verstanden wird als Einstiegsthemen. Versteht man aber unter Grundlagen eher die wesentlichen Prinzipien, kommt es dem, was wir darunter verstehen, näher.
Als Wahlpflichtmodul bietet es sich an, aktuelle Themen aus dem Bereich der Systemintegration aufzugreifen und zu untersuchen.
Technologisch schließen wir natürlich an den Themen des Moduls Vernetzte Systeme an: Virtuelle Maschinen, Docker, Netzwerke spielen natürlich immer eine Rolle.
In diesem Jahr möchte ich mit Euch das Thema Sovereign Cloud Stack untersuchen. Wir haben Kontakt zu Felix Kronlage-Dammers aus dem Projekt ECO:DIGIT. Zunächst werden wir uns mit den Begriffen aus dem Umfeld Souverän im Kontext von Cloud- und Rechenzentrumstechnologie auseinandersetzen - das Wort wird inflationär genutzt, um dem Wunsch, den Abhängigkeit von Hyperscalern zu entkommen, gerecht zu werden. Aber wer meint es ernst mit Souveränität? Das Gesamtprojekt Sovereign Cloud Stack mit offenen Standards und Referenzimplementierung von der Open Source Business Alliance wird im Zentrum der Veranstaltung stehen. Wir werden eine eigene Serverinfrastruktur mit der Referenzimplementierung bespielen und dabei versuchen, zu verstehen, wie mit SCS große und skalierbare Systeme aufgebaut werden.
In diesem Semester würde ich mich gerne mit Systemintegration und Dokumentenverwaltung beschäftigen. Dazu gehört die Untersuchung von Werkzeugen wie Libre* und MSOffice, bzw. der entsprechenden Formate und wie sie sich in einer serverbasierten Infrastruktur zu Abbildung von Prozessen einsetzen lassen.
In diesem Semester werden wir uns mit den Grundlagen von vernetzten Systemen beschäftigen - dazu gehören die Grundlagen von Rechnernetzen insgesamt aber auch die für moderne Infrastrukturen notwendigen Instrumente wie Docker und virtuelle Maschinen. Automatisierung spielt natürlich wieder eine besondere Rolle.
Gemeinsam mit Karin Vosseberg und Ulrike Erb führen wir in dieser Veranstaltung wieder die im ersten Semester Studierenden in die Grundlagen der Informatik anhand unserer Infrastruktur um hopper und shannon ein. Gelernt werden dabei neben den notwendigen Werkzeugen wie bash, vim und cgi grundlegende Denkweisen der Informatik von Listen über Bäume und deren typsche Anwendungen.
Das Programmierlabor am Mittwoch von 9:45 bis 11:45 in Raum Z2330 werde ich betreuen.
Erstmalig wird in diesem Semester die Vorlesung im zweiten Semester - also direkt im Anschluss an STEP - angeboten. Es wird erwartet, dass die Inhalte von STEP (bash, cgi, http, html, vim) bekannt sind.
Erstmalig wird in diesem Semester die Vorlesung Infrastruktur für Informatik-Studierende angeboten. Inhaltlich wird sie auf den Inhalten des STEP-Projektes aufsetzen und sich mit den technischen Grundlagen einer vernetzten Infrastruktur beschäftigen. Es wird erwartet, dass die Inhalte von STEP (bash, cgi, http, html, vim) bekannt sind.
Wie im vergangenen Jahr werden die Studierenden im ersten Semester mit einem konkreten Projekt in die Informatik/Wirtschaftsinformatik von Karin Vosseberg, Ulrike Erb und mir eingeführt.
Dieses Jahr werden wir mit AIS experimentieren: Die in der Gegend um Bremerhaven fahrenden Schiffe senden zur Kollisionsvermeidung regelmäßig Ihre Positionsdaten aus. Mit einem Raspberry und einem DVBT-Empfänger nehmen wir die Daten auf und stellen Sie als Datenstrom über TCP/IP zur Verfügung, so dass die Studierenden diese innerhalb der Infrastruktur mit grundlegenden Werkzeugen wie netcat auslesen und verarbeiten können. Dabei lernen Sie den Umgang mit der bash, html/http, git und vielen weiteren Werkzeugen, die sie im Rahmen des Studiums benötigen werden.
In dieser Veranstaltung wollen wir das automatisierte Erstellen von Modulhandbüchern für unterschiedliche Studiengänge einer gesamten Hochschule mit git, LaTeX und Webschnittstelle untersuchen. Der Fokus liegt auf Automatisierung, Codequalität durch Kompaktheit und Monitoring.
Von besonderer Bedeutung werden Automatisierungsmöglichkeiten mit git-Hooks sein. Softwareentwickler*innen kennen oft nur github als externen Dienst. Dass das Werkzeug git hinter der Bühne Ereignisse abfängt und wir uns mit Scripten in die Prozesskette einhängen können, ist oft nicht bekannt und so werden schwergewichtige Installationen großer, zusätzlicher Software bevorzugt, wo oft ein kleines Script verstehbarer ist und weit weniger Wartungsaufwand bedeutet.
In diesem Jahr wollen wir uns vor allem mit Microservices auseinandersetzen. Wir bauen gemeinsam in der Infrastruktur eine auf docker basierende Umgebung auf und vergleichen Komplexität und Verhalten unterschiedlicher Architekturen. Wie fast immer bei mir wird der Fokus auf Automatisierung gelegt. Anhand von zahlreichen Beispielen aus der Praxis werden gemeinsam gute, stabile und robuste Lösungen für alltägliche Services in der IT diskutiert und gemeinsam umgesetzt.
Typische Aufgabenstellung: Ein Unternehmen bietet seinen Kunden eine Webschnittstelle zum automatisierten Hochladen von Lebensmittel-Prüfergebnissen. Beim Hochladen muss gesichert werden, dass ein Ergebnis auf keinen Fall mehrfach in den Datenpool aufgenommen werden darf. Zwei Ergebnisse sind gleich, wenn die Inhalte der Dateien byteweise exakt gleich sind. Bei der bisherigen Lösung werden alle Ergebnis tagsüber entgegengenommen und nachts wird in einem cron-Job für jedes eingegangene Ergebnis ein Vergleich mit allen vorliegenden mittels des Programmes cmp durchgeführt. Da der Datenbestand mittlerweile ca 50000 Sätze zu je ca 1000000 Zeichen enthält, beginnt die nächtliche Bearbeitungsdauer die Grenzen des Vertretbaren zu sprengen. Die aktuelle Lösung der nächtlichen Abarbeitung sieht skizziert wie folgt aus:
#!/bin/bash
for infile in /opt/inqueue/*
do
isdoublet=false
for element in /opt/data/*
do
if cmp $infile $element
then
cp $infile /opt/doublet/
isdoublet=true
fi
done
if [ $isdoublet = false ]
then
cp $infile /opt/data/
fi
done
rm /opt/inqueue/*
Schätzen Sie die Bearbeitungsdauer auf einem Server mit einer Ausstattung ihrer Wahl bei täglich 100 neu ankommenden Datensätzen. Wie könnte eine deutliche Beschleunigung bei weniger Ressourcenverbrauch erreicht werden? Hilft eine andere Programmiersprache als in diesem Fall die Bash? Was würde Parallelisierung bringen und worauf wäre zu achten? Was ist, wenn sich im kommenden Jahr die erwartete Last um den Faktor 10 erhöht (500000 Datensätze a 1000000 Byte und 1000 tägliche neue Datensätze)?