Das dritte Semester Informatik an der TUB

Wieder kurz was zu allen Kursen des dritten Semesters.

MPGI3 – Softwaretechnik: Anforderungsbeschreibungen interpretieren und verschiedenste (UML-)Diagramm-Arten malen bzw. formale Definition in Object-Z aufschreiben. Exakte Übertragung der Klassen/Objektstrukturen aus den Modellen mittels Java. Etwas anstrengend an dem Kurs ist, dass bei der Modellierung nie eindeutig ist, wie etwas gelöst werden muss, weil es eben immer tausende korrekte Wege gibt. Man kann mit den Leuten in der Hausaufgabengruppe stundenlang darüber diskutieren, wie irgendetwas modelliert werden soll. Die Object-Z Aufgaben sind dann jedoch wieder klarer. Eine Arbeitsteilung in den Hausaufgaben ist fast unmöglich, da die Modelle in sich konsistent sein müssen – also ein Diagramm zu allen anderen passen muss. Die Arten der Aufgabenstellungen in den Klausuren (die Klausur war zweigeteilt, wobei beide Teile am gleichen Tag mit einigen Stunden Abstand stattfanden) waren glücklicherweise ziemlich an den Hausaufgaben orientiert.

MPGI4 – Praxis der Programmentwicklung: Im Prinzip werden alle größeren Themen von Java und dessen API durchgegangen: GUIs, Eingabe/Ausgabe, Exception Handling, Netzwerkverbindungen/Sockets, Applets, Threads, Remote Method Invocation, Servlets. Ich würd sagen für Programmierer noch einfacher als MPGI2, da es noch praxisnäher ist.

TechGI3 – Systemprogrammierung: Hausaufgaben werden in C programmiert. Für C gibt es keine Einführung, man sollte sich also unbedingt vorher schon damit beschäftigt haben – insbesondere mit den Aspekten, die C von Java unterscheidet wie Pointer, mit denen viele Leute anscheinend immer wieder Probleme haben. Die wesentlichen Bestandteile eines Multitaskingbetriebssystems werden theoretisch besprochen und teilweise nachgebaut: Scheduler, „Betriebsmittel“verwaltung (also z. B. Speicher), Prozesskommunikation. Nebenläufige Programmierung (teilweise mittels pthreads). Es gab auch einen (leider nur sehr kurzen) Einschub zu Assemblerprogrammierung auf dem ARM. In den Tutorien gab es eine Quasi-Anwesenheitspflicht, da man dort die Theorie- und Praxishausaufgaben vorstellen musste – sehr verschult. Bei den Themen fällt auf, dass von den Prinzipien her sehr ähnliche Themen mehrfach unter unterschiedlichen Namen auftauchen, was dann etwas langweilt (first in first out bzw. first come first served wurde gefühlte fünf Mal erklärt). Ich hätte mir gewünscht, dass bei manchen Themen nicht so sehr ins Detail gegangen wird (z. B. nicht alle 10 Schedulingverfahren genau durchgehen) sondern stattdessen mal an echten Beispielen (wie MINIX oder Linux) gezeigt wird, wie manche Sachen umgesetzt werden. Aber insgesamt ist TechGI3 schon recht interessant.

TheGI3 – Logiken und Kalküle: Aussagenlogik und Prädikatenlogik wird nochmal genau auseinander genommen und trainiert. Die Beweisführungen haben teils etwas meditatives, sofern man nicht versucht sie zu verstehen. Dazu mal ein Zitat von S. 236 des Mahr-Buchs zum Koinzidenzlemma: „Ist B eins Stern von Phi gleich T, so ist B eins Stern von Psi gleich F oder B eins Stern von Chi gleich T. Mit (13.3) folgt B zwei Stern von Psi gleich F oder B zwei Stern von Chi gleich T. Folglich ist dann B zwei Stern von Phi gleich T. Ist B eins Stern von Phi gleich F, so ist B eins Stern von Psi gleich T und B eins Stern von Chi gleich F. Mit (13.3) folgt B zwei Stern von Psi gleich T und B zwei Stern von Chi gleich F. Folglich ist dann B zwei Stern von Phi gleich F. Also ist in beiden Fällen B eins Stern von Phi gleich B zwei Stern von Phi“. Dies ist nur ein kleiner Teil der Begründung, dabei sagt das Koinzidenzlemma grob gesagt nur aus, dass wenn eine Variable, die in einer Formel nicht enthalten ist, anders belegt wird, sich der „Wert“ der Formel nicht verändert.

ANA2: Differential- und Integralrechnung im Mehrdimensionalen. Vergleichbar nervig wie ANA1.