Willkommen im Modul "Programmieren 2"! Hier finden Sie einige grundlegende Informationen zu dem Ablauf des Moduls.
Da die Interaktion, die der eigentliche Vorteil von Übungen in PC-Laboren ist, in Distanz nicht möglich ist, gibt es dieses Semester wieder das aus Programmierung 1 bekannte Format: Jeden Dienstag wird eine Hausaufgabe mit Aufgaben zu dem Skript der jeweiligen Woche freigeschaltet (erstmals am 13.4.2021 zu den Inhalten des Skripts aus Woche 02). Diese Aufgaben sind zum darauffolgenden Dienstag spätestens 02:00 (also in der Nacht von Montag zu Dienstag) abzugeben. Somit können Sie in Ihrem eigenen Tempo das Skript durcharbeiten und können beginnen, sich mit den Hausaufgaben auseinanderzusetzen. Vermutlich tauchen dabei aber Fragen auf. Diese können Sie dann in der Vorlesung am Freitag, also 3 Tage nach Freischaltung der Aufgaben, stellen. Zudem bearbeiten wir gemeinsam ähnliche Aufgaben in der Online-Vorlesung. Mit diesem erweiterten Wissen können Sie dann noch weitere 3 Tage an den Aufgaben arbeiten, bevor sie abzugeben sind. Dieser Turnus hat sich am Ende des letzten Semesters als vorteilhaft herauskristallisiert - sollten Sie aber andere Wünsche haben, steht Ihnen das Forum sowie die wöchentliche Online-Vorlesung natürlich zur Verfüung, um diese einzubringen!
Nachdem Sie im letzten Semester die grundlegenden Techniken der Programmierung erlernt haben, setzen wir dieses Semester die Puzzlestücke auf unterschiedliche Art zusammen - und lernen dabei auch die eine oder andere Technik kennen. Wieder gilt das Prinzip: Programmieren kann man nur lernen, indem man es tut! Also entwickeln Sie drei kleine Tools, mit deren Entwicklung Sie auch in Ihrem Arbeitsleben in ähnlicher Form beauftragt werden könnten.
Zudem arbeiten Sie in diesem Semester nicht mehr im LSF, sondern Sie verwalten Ihren Code - so, wie Sie es auch in realen Projekten später tun werden - mit einem Versionskontrollsystem. Über dieses geben Sie auch Ihre Hausaufgaben ab. Das bedeutet, dass Sie auf jeden Fall die Programmierung lokal auf Ihrem Computer durchführen müssen. Dafür schauen wir uns in diesem Semester eine weitere beliebte IDE an, nämlich IDEA von IntelliJ. Die erste Woche verbringen Sie damit, sich mit diesem neuen Tooling vertraut zu machen.
In den darauffolgenden 3-4 Wochen entwickeln Sie ein erstes Tool: Ein Programm zur Auswahl der richtigen Medikamente für HIV-Infizierte basierend auf Sequenzinformationen von aus ihrem Blut extrahierten Viren. Dabei lernen Sie, eigene Exceptions zu verwenden sowie mit mehreren Threads langwierige Berechnungen zu parallelisieren.
Im nächsten Projekt, welches wieder 3-4 Wochen dauert, erlernen Sie die Entwicklung von Graphical User Interfaces (GUIs). TODO: Thema - Krebsklassifikation? Oder Ausbruchrekonstruktion? Aber irgendwas wo man für die Visualisierung paint() überladen muss.
Das letzte, erneut 3- bis 4-wöchige Projekt ist eine Gelegenheit, all diese Fertigkeiten nochmal in mehr Detail und unter Verwendung des Model View Control-design patterns zusammenzufügen. Als Auftakt findet am 4.6. ein Workshop zu Design Thinking statt, in dem Sie das genaue Aussehen und Bedienkonzept Ihrer Software unter Berücksichtigung der Kundenanforderungen definieren.
Abschließend dürfen Sie als Prüfungsleistung in zwei Wochen eine letzte, den drei während des Semesters bearbeiteten Projekten ähnliche, Aufgabe bearbeiten.
Für jede der wöchentlichen Hausaufgaben gibt es maximal 10 Punkte. Um zur Prüfung zugelassen zu werden, müssen Sie 75% der Punkte über alle Übungen hinweg erreichen.
Die Prüfung wird dann in Form einer erweiterten Hausaufgabe stattfinden - Sie bekommen ein umfangreicheres Tool zu programmieren, das von der Art her den Übungsaufgaben ähnelt und ebenfalls über github classroom abgegeben wird.
Wie Sie sehen können, steht auch das Skript in github zur Verfügung. Wenn Sie Verbesserungsvorschläge haben oder Fehler finden, können Sie entweder einen issue aufmachen oder das Repository forken, die Verbesserung einführen, und einen pull request in dem Skript-Repository aufmachen. Damit üben Sie nicht nur die Arbeit mit github sondern tragen auch zu einer Verbesserung des Skriptes für die nächsten Semester bei. Entsprechend können Sie auf Ihre finale Zensur bis zu 5% Bonus bekommen: Für jeden pull request für das Skript, den ich annehme, bekommen Sie 2.5% Bonus, bis zu einem Maximum von insgesamt 5%. Eine kurze Einführung darin, wie Sie pull requests aufmachen, können Sie den Videos im Skript der nächsten Woche entnehmen.