Aktuelles und Spannendes aus dem Studiengang

Im Studiengang Informatik werden die vielfältigen Erkenntnisse aus den Vorlesungen in unterschiedlich gearteten Studierendenprojekten vertieft. Hier können Studierende ihrer Kreativität freien Lauf lassen und erfahren Möglichkeiten und Grenzen der IT.

"Das richtige Studium gewählt!"

Vor 30 Jahren – damals war die DHBW Mannheim noch Berufsakademie – schlossen sie ihr duales Informationstechnik-Studium ab. Am 01.10.2022 trafen sich die Absolvent*innen von 1992 an der DHBW Mannheim und haben eine klare Message für Informatik-Studierende: "Ihr habt das richtige Studium gewählt."

Für das Treffen wurde ein buntes Programm auf die Beine gestellt: Prof. Dr. Holger Gerhards präsentierte, wie die DHBW Mannheim und das Informatik-Studium heute funktionieren. Prof. Joachim Schmidt – Studiengangsleiter des Abschlussjahrgangs `92 – gab einen Rückblick und Wassilij Kaiser eine Laborführung, die auch einen Besuch bei der Roboterfußball-Mannschaft TIGERs beinhaltete. Selbstverständlich blieb auch genug Zeit für einen Erfahrungsaustausch der Teilnehmenden, deren Karriere mit einem dualen Studium startete. Einer davon ist Norbert Armbruster, der – bestätigt durch seinen beruflichen Werdegang – begeistert vom dualen Studienmodell und überzeugt von dessen Vorteilen ist:

"Mich persönlich hat die Weiterentwicklung der BA / DHBW sehr gefreut. Die Entscheidung, ein duales Studium an der BA zu beginnen, würde ich – auch jetzt nach 30 Jahren – jederzeit wieder treffen. Die theoretischen Grundlagen zusammen mit den Praxisphasen haben mir einen schnellen Übergang in den Beruf ermöglicht. Das gilt sowohl für den Beginn als Software Entwickler, als auch später als Projektleiter internationaler Projekte oder jetzt noch in meiner Rolle als Geschäftsführer unseres Professional Services.  Neben dem technischen Handwerkszeug tragen hierzu auch die in den BA-Projekten und Praxisphasen erlernten 'Softskills' für zielorientiertes Arbeiten in kleinen und großen Teams bei. Die entstandenen Freundschaften – wie wir gestern an der großen Teilnehmerzahl gesehen haben – scheinen bis heute zu tragen. Danke auch für die Führung durch die Labore. Moderne Technik zum Anfassen haben mir immer dabei geholfen, die Funktionsweisen zu begreifen und anzuwenden. Als ein einfaches Beispiel sind mir die Nachrichtentechnik-Vorlesungen in Erinnerung. Sequenz- und Statusdiagramme verwenden wir auch heute, wenn auch artfremd, bei der Systemintegration/ Business-Prozessmodellierung. Wie wir an den unterschiedlichen Lebensläufen gestern hören könnten, scheint das auch bei meinen Kommiliton*innen zu gelten. An Ihre Studierenden gerichtet bleibt mir nur zu sagen: Ihr habt das Richtige gewählt! Das duale Studium bereitet Euch optimal für das Berufsleben vor. Genau diese Kenntnisse benötigen wir in der Wirtschaft, um weiter wachsen und uns im internationalen Wettbewerb behaupten zu können."

Ausgerichtet wurde das Alumni-Treffen von Prof. Joachim Schmidt, Wassilij Kaiser, Prof. Dr. Holger Gerhards.

Studierende im Studiengang Informatik - Informationstechnik stellen ihre Studienarbeiten vor, an denen sie im 5. und 6. Semester gearbeitet und für die sie die Themen selbst gewählt haben.

50 Jahre alten Hauptprozessor auf neuer Hardware zum Leben erweckt: In ihrer Studienarbeit "Automatisierte Generierung von CPU Emulatoren" befassten sich Niklas Frondorf und Tobias Winkler damit, wie die Virtualisierung von "Central Processing Units" umgesetzt werden und wie sie einen Beitrag zur Plattformunabhängigkeit sowie Langlebigkeit von Software und für die Lehre leisten kann. Entstanden ist die Idee in der Vorlesung "Systemnahe Programmierung" (4. Semester). Warum? "Wir wollten gern noch tiefer in das Thema einsteigen. CPUs sind etwas sehr Praktisches – wir haben ein theoretisches Gerüst draufgebaut", berichten die beiden Studierenden.

IT-Studierende unterschiedlicher Jahrgänge lernen voneinander

Welche Schritte sie dafür gehen mussten, haben sie nicht nur in ihrer Studienarbeit formuliert, sondern berichteten auch dem Nachfolgekurs davon: Um ein Beschreibungsformat zum Emulieren und Programmieren von CPUs zu entwickeln, betrachteten sie die Funktionsweise von CPUs, wobei die Intel 4004 –  der erste Mikroprozessor (4 Bit) aus dem Jahr 1971, die ursprünglich für den Einsatz in Taschenrechnern konzipiert worden war – im Detail vorgestellt und emuliert wurde. Die beiden Studierenden beschrieben die Intel 4004 mit dem Format und entwickelten zwei Programme, die dieses Format zur Übersetzung von Assemblercode in Bytecode oder zur Generierung von Emulatoren nutzen. Des Weiteren emulierten sie auch die MOS Technology 6502 und designten, testeten und programmierten hierfür eine eigene CPU.

"Die heutigen CPUs sind zu komplex und zu kostspielig, um sie für Lehrzwecke zu nutzen. Die Intel 4004 war dafür genau richtig. Die schnelle und leichte Beschreibung von CPUs mit der Möglichkeit, diese anschließend emulieren zu können, kann Studierenden ein nachhaltiges Verständnis für hardwarenahe Programmierung und Computersysteme bieten. Um zu zeigen, zu was die Emulatoren fähig sind, haben wir das Retro-Spiel 'Pong' auf der Intel 4004 implementiert und auf einen modernen Mikroprozessor (Arduino Due) emuliert. Es war ein toller Moment, als es funktioniert hat!", so Niklas Frondorf und Tobias Winkler.

Ein Spiel als Lerngelegenheit:
Im Modul "Java-Programmierung" (2. Semester) geht es um die Prinzipien der objektorientierten Modellierung und Programmierung (OOM und OOP). Dafür eignen sich z. B. Mehrpersonenspiele. Im Jahr 2022 verwendeten wir dazu das taktische Mehrpersonen-Würfelspiel: Ziel 22.
Spielregeln:
Jeder Spieler würfelt mit einem üblichen W6-Würfel. Ziel ist es, die Augensumme 22 zu erreichen bzw. möglichst nahe an dieses Ziel 22 zu kommen. Es müssen genau 8 Würfe gewertet werden und es darf höchstens 13 Mal gewürfelt werden. Die gewerteten Augenzahlen werden addiert. Bei jedem Wurf entscheidet der Spieler sofort und endgültig, ob er diesen Wurf wertet oder nicht. Sieger ist bzw. sind, wer am nächsten am Ziel 22 ist.
Einstieg und Aufgabenstellung:
Das Spiel dient als Einstieg und wird anfangs direkt durch Benutzereingaben gespielt. Durch die verwendete IDE ist dies möglich ohne irgendeine Art von I/O-Programmierung. In der Problemanalyse werden die beteiligten Objekte identifiziert, geeignet in Klassen zusammen gefasst, diese Klassen erstellt und in Java implementiert. Nach Erarbeitung der Grundlagen von Objekten soll mit der Zeit das Spiel so auf dem Rechner implementiert werden, dass es ohne Benutzereingaben ablaufen kann. Das Rahmenprogramm wird im Kurs gemeinsam entwickelt. Jeder Kursteilnehmer kann dann seine eigene 'Spieler'-Klasse erstellen. Diese 'Spieler' treten in einer WM gegeneinander an. Das bringt einen Wettbewerbscharakter in die Vorlesung. Jeder entwirft eine oder zwei verschiedene Spielstrategien, natürlich ohne seine Ideen zu verraten, und implementiert sie jeweils in einer 'Spieler'-Klasse. Jede der Spielerklassen ist eine sog. Unterklasse der abstrakten, allgemeinen Oberklasse Spieler, die im Kurs bis dahin entwickelt wurde. So muss in der eigenen 'Spieler'-Klasse nur die Strategie selbst abgebildet werden, sonst nichts. Alles Sonstige ist bereits durch die Oberklasse Spieler gegeben; einer der großen Vorteile der Objektorientierung.
Eine einfache Strategie:
Das Spiel erlaubt sehr unterschiedliche Ansätze und Strategien. Manche sind einfach in Worten beschreibbar wie z.B.: "Wenn du noch entscheiden kannst, dann akzeptiere jeden Wurf, der keine 6 ist." Diese einfache Strategie wird im folgenden "Kl6Spieler" implementiert.

Ergebnis der Weltmeisterschaft:
Diese einfache Strategie Kl6Spieler ist weit schwächer als die von den Student*innen entwickelten Strategien, also Spielerklassen. Im Kurs wurde ein Rahmenprogramm mit Spielleiter und Spielern erstellt, das die verscheidenen Spielerklassen einbinden und den Wettkampf nach den im Kurs festgelegten Regeln durchführen konnte: In insgesamt 69420 Spielen wurde protokolliert, wer wie oft unter den Siegern war. In der kursinternen WM (Weltmeisterschaft) stellten sich vier von insgesamt ca. 30 am Endkampf teilnehmenden Strategien als sehr stark heraus.

Siegreiche Strategien:

  • Aljoscha Winckler: Meine Strategie bestimmt zunächst alle möglichen Abfolgen, um mit 8 Würfen das Ziel 22 zu erreichen wie 6-1-1-1-1-1-5-6 oder 3-1-4-2-2-3-4-3 samt den Augensummen nach n Würfen. Es gibt ca. 65000 solcher Abfolgen bezogen auf Augensummen. Die beiden genannten Abfolgen haben anfangs unterschiedliche Augensummen, nach 3 Würfen haben beide die gleiche Augensumme 8; danach unterscheiden sie sich wieder. Diese Daten werden in einer Liste gespeichert. Angenommen nach 3 Würfen hat man Augensumme 8. Dann gibt es noch 11340 mögliche Abfolgen, um 22 Punkte nach 8 Würfen zu erreichen. Da es 6 mögliche Wurfergebnisse gibt, sind dies im Schnitt 1890 (11340/6) mögliche Restfolgen. Ist der nächste Wurf eine 1 und wird akzeptiert, gibt es danach noch 2940 Möglichkeiten, bei einer 6 dagegen nur noch 735. Die Anzahl der Restfolgen bis zur 22 ist nicht gleichverteilt. Bei jedem Wurf wird daher (in der Liste) nachgesehen, wie groß die Wahrscheinlichkeit (W‘keit) ist, das Ziel 22 zu erreichen, wenn der Wurf akzeptiert wird, und wird verglichen mit der durchschnittlichen W‘keit der 6 möglichen Würfe. Ob der Wurf akzeptiert wird, hängt auch noch ab von der Anzahl der gewerteten und nicht gewerteten Würfe.
  • Dagh Zeppenfeld: Meine Strategie verwendet einen cleveren Brute-Force-Ansatz, indem sie die Gesamtanzahl der übrigen restlichen Wege sowie die Anzahl der Wege zu einem bestimmten Ergebnis berechnet. Da es in Ziel22 insgesamt 764.132.901.120 Wege = Würfelfolgen gibt, von welchen 29.939.020.560 zur 22 führen, ist diese Berechnung keineswegs trivial. Dafür wird dynamische Programmierung mit einem geeigneten Baum als Datenstruktur genutzt. Die Entscheidung, ob der Wurf akzeptiert wird, wird dann gefällt – abhängig von der besseren W‘keit, die 22 zu treffen.
  • Konrad Ebel: Ein Ansatz berechnet wie in den Ideen der anderen Sieger mittels W‘keitsrechnung alle Möglichkeiten, die mit der geworfenen Zahl noch zum Ziel 22 führen sowie alle, die zum Ziel führen, wenn der Wurf nicht gewertet wird. Beide Werte werden abgeglichen; dabei wird darauf geachtet auch Würfe zuzulassen, die zu Resultaten nahe 22 führen. In einem zweiten Ansatz erstelle ich nach vielen Erprobungen und nach Durchsicht anderer Strategien eine 4-dimensionale Tabelle, die abhängig von: aktuellem Stand, akt. Wurfanzahl, akt. Anzahl gewerteter Würfe sowie akt. Wurfwert angibt, ob der Wurf in dieser Situation gewertet wird oder nicht. Aus dieser Tabelle entnehme ich jeweils die Entscheidung.
  • Carlo B.: Bei jedem neuen Wurf wird die W‘keit berechnet, mit ihm die 22 zu erreichen. Steigt diese W‘keit mit diesem Wurf gegenüber dem bisherigen Wert, so wird der Wurf angenommen. Da man aber nur wenige Würfe ablehnen kann, soll der Algorithmus daher etwas toleranter sein, d.h. die "Annahmegrenze" wird abhängig der Zahl bereits gewerteter Würfe etwas herabgesetzt. Aus vielen Erprobungen konnte ich eine brauchbare "Annahmegrenze" gewinnen. Für den letzten möglichen Wurf wurden weitere Fallbetrachtungen hinzugenommen. So sollen z.B. nur Einsen und Zweien akzeptiert werden, wenn die Augensumme mindestens 22 ist. Wenn mehr als ein Reservewurf übrig ist, sollen nur genaue 22-Treffer akzeptiert werden, ist genau ein Reservewurf übrig, werden nur Augensummen zwischen 21 und 23 akzeptiert.

Kurswettbewerb als Lehrmethode:
Aus dem Mehrpersonenspiel heraus ergeben sich auf natürliche Weise Unterklassen und eine abstrakte Oberklasse sowie ein Wettbewerb. Der Wunsch, seine eigenen Ideen umzusetzen, führt dazu, dass man mit mehr Interresse arbeitet und mit mehr Ausdauer auch kleinere Hürden überwindet. Im Anschluss an die "Weltmeisterschaft" ist es sehr interessant, verschiedene Ideen auszutauschen und deren Implementierung zumindest teilweise nachzuvollziehen. Daran wird auch deutlich, welche Detailarbeit in der Umsetzung der Idee in eine lauffähige Implementierung steckt. Ebenso zeigt dies viele Grundlagen der objektorientierten Programmierung und erlaubt auch eine Differenzierung im Kurs.

Dozent: Theo Heußer; Vorlesung: Java-Programmierung