Monday, September 25, 2006

Java kann keine Listen?

Martin Eisenhardt vom Blog node-0 verzweifelt an seinen Studenten, die überzeugt sind "Java kann keine Listen".

Nach einigen Hin und Her und natürlich den Verweis auf die Collections-Klassen folgt der Student A zum letzten und alles entscheidenen Argument aus:

M wird es langsam zu bunt. Er setzt ein Lächeln auf. Seine Stimme ist listig.

M: äh, erklär mir noch einmal, warum Du so sicher bist, dass es in Java keine Listen gibt?

A baut sich auf und schaut triumphierend, als er zum entscheidenden Schlag ausholt.

A: Weil wir in der Übung zu Algorithmen und Datenstrukturen die verkettete Liste selbst programmieren mussten!

M zweifelt kurz an der Welt, entscheidet dann aber, dass es halt solche und solche Studierende gibt, aber eben mehr solche als solche. :-D

Das Problem kenne ich noch aus der Zeit als ich "Grundlagen der Programmierung"-Tutor gewesen bin.

Datenstrukturen selbst entwickeln ist wichtig, aber wenn die API-Klassen nicht erwähnt werden, dann existieren sie auch für einen Teil(!) der Studenten nicht. Wir haben damals auch einige wichtige API-Klassen behandelt und auch versucht darzustellen, dass die Java-API eine Schatzkammer ist die man nutzen kann/sollte. Zumindest wenn es nicht explizit angegeben wurde z.B. wenn es Sinn der Übung gewesen ist, dass die Implementierung von bestimmten Strukturen geübt werden sollte.

Einige Studenten sind aber irgendwie nicht damit klar gekommen, eine verkettete Liste selbst entwickeln sollen, wenn es LinkedList doch schon fertig gibt.

Das erinnert mich auch an Leute (nicht von der Uni) die meinen C wäre deshalb eine schlechte Sprache, weil es keine vordefinierten Funktionen im Sprachumfang gibt.

Bachelorveranstaltungen im Studium Generale des Masterstudienganges

Das Studium Generale in den Informatikstudiengängen an der Universität Paderborn dient unter anderem dem Schließen von Wissenslücken.

Schon vor einigen Monaten wurde in diesem Blog kritisiert, dass die Universität Regeln aufgestellt hat, die genau dies effektiv verhindern:

"Regelung zum Übergang vom Bachelor- in den Masterstudiengang
(26.11.2004)
...
Veranstaltungen des Masterstudiengangs sind im Rahmen des Studium
Generale im Bachelorstudiengang nicht anrechenbar. Umgekehrt sind
Veranstaltungen des Bachelorstudiengangs im Masterstudiengang generell
(aber speziell auch im Rahmen des Studium Generale des
Masterstudiengangs) nicht anrechenbar."

Doch wie so oft an der Universität Paderborn sind die Regeln härter formuliert als die eigentlich gemeint sind.


Aus oft gut informierter Quelle (;-) ) weiß ich, dass es nur nicht erlaubt ist schon im Bachelorstudiengang regulär absolvierte Veranstaltungen im Master als Studium Generale anzurechnen. Veranstaltungen aus dem Katalog des Bachelorstudienganges über die regulär besuchten Veranstaltungen dürfen als Studum Generale besucht werden.

Eine solche Regelung ist natürlich ohne Zweifel sinnvoll. Wenn ich schon im Bachelorstudiengang besuchte Veranstaltungen als Studium Generale im Master anrechnenlassen könnte, dann würde niemand Studium Generale machen.

Der veröffentlichte Text zu den Übergangsregeln sagt aber nicht wirklich aus, was gemeint ist.

Hoffentlich wird der Text möglichst bald geändert und so angepasst, dass Klarheit besteht, was erlaubt ist und was nicht. Dies mag gerade deshalb wichtig sein, weil das Prüfungsekretariat 100%ig dem Wortlaut von Regeln folgt. Das ist auch ohne Zweifel richtig, aber dann sollten die Regeln auch sinnvoll sein.

Ich werde auf jeden Fall von der neuen Möglichkeit Gebrauch machen. Einige Veranstaltungen des Bachelorstudienganges z.B. die "Compilerbau"-Veranstaltung von Prof. Kastens möchte ich auf jeden Fall belegen, aber ich habe es im Bachelorstudiengang nicht geschafft.

Disclaimer: Auch wenn ich nicht glaube, dass Probleme auftreten werden: Alle Angaben ohne Gewähr. Bevor man Veranstaltungen aus dem Katalog des Bachelorstudienganges im Studium Generale des Master verwendet, sollte man sich bei den Verantwortlichen rückversichern. Dies würde dann vielleicht auch einen Druck erzeugen, die veröffentlichte Formulierung anzupassen.

Wednesday, September 13, 2006

Ich habe es geschafft!

Die Bachelorarbeit ist abgegeben, die Verteidigung durchgeführt. Und ehrlich: Das Wort "Verteidigung" passt. Es waren echte gute Fragen dabei.

Dies bedeutet: Ich bin fertig mit dem Bachelorstudiengang Informatik an der Universität Paderborn und warte nur noch auf die Note der Arbeit und die Endnote.

Die Arbeit und den Vortrag werde ich in Kürze in diesem Blog veröffentlichen.

Monday, September 11, 2006

Verteidigung meiner Bachelorarbeit

Am 13. September 2006, also diesen Mittwoch, verteidige ich im Raum E4.301 der Universität Paderborn meine Bachelorarbeit.

Der Titel lautet "Kategorisierung und Erfassung von Testwerkzeugen in einer generischen web-basierten Applikation". Die Aufgabestellung der Bachelorarbeit war:

Kategorisierung und Erfassung von Testwerkzeugen in einer generischen web-basierten Applikation Motivation Bei der Softwareentwicklung spielt "€žTesten" eine wichtige Rolle. In unterschiedlichen Phasen der Softwareentwicklung finden Testaktivitäten statt, deren Kosten die eigentlichen Entwicklungskosten mehrfach übersteigen können. Zur Reduzierung der Testkosten werden die Testvorgänge durch Werkzeuge unterstützt, z.B. für Automatisierung, Verwaltung, Dokumentation. Die Vielzahl von verfügbaren Testwerkzeugen macht es häufig schwer, die richtigen Testwerkzeuge für die eigenen Zwecke auszuwählen. Um den Auswahlprozess zu unterstützen, wird ein Kategorisierungswerkzeug für die vorhandenen Testwerkzeuge benötigt, das die Erfassung und die Suche von Testwerkzeugen ermöglicht.

Ziele In dieser Bachelorarbeit soll ein solches Werkzeug konzipiert und realisiert werden. Dabei kristallisieren sich die folgenden zwei Teilaufgaben heraus: 1. theoretischer Teil: Untersuchung der Literatur, existierender Klassifikationsschemata und der vorhandenen Werkzeuge zur Festlegung der Kategorisierungskriterien für Testwerkzeuge; Modellierung eines generischen web-basierten Kategorisierungswerkzeugs mit UML-Erweiterung "€žUWE" (UML-based Web Engineering) 2. praktischer Teil: Realisierung des web-basierten Kategorisierungswerkzeugs. Für diese Teilaufgabe kann eine vorhandene Applikation angepasst oder eine neue Applikation entwickelt werden. Besonderer Schwerpunkt bei der Erstellung dieses Werkzeuges ist die zukünftige Erweiterbarkeit der Kategorisierungsfunktion über eine Administrationsschnittstelle für weitere Kategorisierungskriterien und Werkzeugfamilien. Student: Dirk Meister Betreuer: Gregor Engels, Baris Güldali

Alle Interessierten sind herzlich eingeladen.

Die Bachelorarbeit selbst habe ich schon letzten Dienstag abgegeben, so das dies der letzte Schritt zum (ersten) Abschluss ist.

Auf das falsche Pferd gesetzt: Softwarequalitätssicherung

Vor ein paar Tagen musste ich festschreiben, welchem Master-Modul die Vorlesung "Modelchecking" zugeordnet werden soll. Man könnte wählen entweder "III.1.1 Softwaretechnik" oder "III.1.3 Semantik und Verifikation".

Ich habe mir für III.1.1 entschieden, da ich das Modul im nächsten Semester mit "Softwarequalitätssicherung" abschließen wollte. Heute wurde die Veranstaltung abgesagt, weil Jun-Prof. Giese für ein Jahr Vertretung am Hasso-Plattner-Institut macht.

Schnell mal in die Statisik geguckt: Softwarequalität war die einzige Veranstaltung in dem Modul.
Da kann man nur sagen: Auf das falsche Pferd gesetzt.

Hoffentlich kann man da mit dem Prüfungssekretariat reden und das Modul noch ändern.

Wednesday, September 06, 2006

Google CodeJam Qualifikationsrunde

Gestern war die Qualifikationsrunde des Programmierwettbewerbes Google CodeJam. Bei dem Wettbewerb werden kleine, aber feine Programmieraufgaben gestellt, die mit einer der Programmiersprachen C++, Java, Python, C# gelöst werden müssen. Bei der Qualifikationsrunde mussten zwei Probleme gelöst werden. Ein einfacherer Problem (mit 250 Punkte) und ein komplexeres Problem mit 750 Punkte. In dieser Runde wird das Feld (irgendwo habe ich etwas von ca. 50000 Teilnehmern gelesen) auf 1000 Teilnehmer zusammen gestaucht.

Ich war dabei. Leider kann man die Betonung auf "war" legen. Es hat total Spa߸ gemacht und im nächsten Jahr bin ich (besser trainiert und vorbereitet) wieder dabei. Die Zeit hat diesmal einfach nicht gereicht. Man hat 60 Minuten Codierzeit. Ich habe gedacht, dies wäre pro Problem und nicht für beide. Die Formulierung in der Anteilung war da in meinen Augen etwas undeutlich. Dort stand das man 60 Minuten Zeit hat, sobald man das Problem geöffnet hat. Es heisst dort auch:

You may have all problems open at the same time - but keep in mind that the timers for each problem will be counting down independent of other problems that may be open.
Also unabhägige Timer. Da stimmt wohl die Beschreibung nicht mehr ganz. Aber egal.

Die Entwicklungsumgebung ist schon ziemlich beschränkt: Kein Cut-and-Paste, kaum Syntaxchecks, etc. Im Grunde wie der Windows Editor (ohne Kopierfunktion) und javac. Mir als Eclipse verwöhnten Entwickler ist es wirklich schwergefallen, damit zu arbeiten.

Insgesamt haben mich die Probleme (die beiden Probleme aus dem Wettbewerb sowie die drei Übungsprobleme) sehr an die Veranstaltung "Methoden des Algorithmenentwurfes" bei Ulf-Peter Schröder erinnert. Alle Aufgaben war nichts, was Ulf-Peter auch nicht an einem guten Tag als Hausaufgabe gestellt hätte. So war eine Übungsaufgabe im Grunde nur ein Max-Flow-Problem mit Knotenbeschränkungen. Aber man sollte auch die Schwierigkeit nicht vergessen, die Idee und den Algorithmusansatz auch in einer Programmiersprache sauber zu programmieren. Dies macht man in "Algorithmenentwurf" typischerweise nicht.