Programmierung 2
Pflichtvorlesung im Bachelorstudium
Sebastian Hack, Jeremias Rößler
Über die Vorlesung
Diese Vorlesung behandelt die Grundprinzipien der imperativen/objektorientierten Programmierung. Dabei wird primär Java als Programmiersprache verwendet. In dieser Vorlesung lernen Sie:
- mittelgroße objektorientierte Systeme in Java zu implementieren und zu testen.
- kleinere, wohlstrukturierte Programme in C/C++ zu schreiben - im Wesentlichen als Umsetzung/Übersetzung der entsprechenden Java-Konzepte.
- sich in wenigen Tagen eine neue imperative/objektorientierte Sprache anzueignen, um sich in ein bestehendes Projekt einzuarbeiten.
Anmeldung
Für die Verwaltung der Projekte war eine Anmeldung auf unserer Anmeldeseite bis zum 15.04.2010 nötig. Jetzt ist eine Anmeldung nur noch per Email (an roessler@cs.uni-saarland.de) und nur noch in Ausnahmefällen möglich.
Sie müssen sich zusätzlich für die Vorlesung im HISPOS sowie eventuell bei Ihrem jeweiligen Prüfungssekretariat anmelden.
Neuigkeiten
- 2010-09-06
- Die Scheine können ab morgen (08.09.2010) im Sekretariat von Prof. Zeller (E1 1, Zi. 1.12) abgeholt werden (von 8:30 bis 12:00).
- 2010-08-18
- Die Noten nach der Nachklausureinsicht sind online.
- 2010-08-18
- Die Noten nach der Nachklausur sind online.
- 2010-08-18
- Die Nachklausur wird im Hörsaal AudiMO in E2 2 durchgeführt.
- 2010-08-11
- Notenliste mit den Ergebnissen der Klausureinsicht korrigiert
- 2010-08-10
- Die Anmeldung zur Nachklausur ist jetzt hier möglich.
- 2010-08-10
- Noten nach der Hauptklausur online. Details über das Benotungsschema finden Sie hier.
- 2010-07-30
- Klausurergebnisse der Hauptklausur online
- 2010-07-29
- Code-Bewertung von Projekt 5 abgeschlossen [+]
- 2010-07-26
- Die Hörsaalverteilung der Hauptklausur ist jetzt online.
Termine
Die Vorlesung findet an folgenden Terminen statt:- Ort
- E2 2
- Zeit
- Dienstags 14:15-16:00
Freitags 8:30-10:00 - Beginn
- 2010-04-13
Da die Vorlesung 2 SWS umfasst, wird nicht jeden Dienstag und Freitag Vorlesung sein. Wir werden die Termine der Vorlesung an der Bearbeitung der Projektaufgaben ausrichten, so dass der benötigte Stoff immer besprochen worden ist. Insbesondere wird die Vorlesung in den ersten Wochen zweimal pro Woche stattfinden.
Alle Termine werden im Vorlesungskalender veröffentlicht:
Prüfungsmodalitäten
Es wird eine Endklausur geschrieben und eine Nachklausur angeboten. Es können beide Klausuren geschrieben werden, die bessere zählt. Um zur Klausur zugelassen zu werden, müssen mindestens 50% der Punkte aus 10 Minitests (zu den Übungsblättern) erreicht werden. Die Endnote setzt sich aus 50% der Projekt- und 50% der Klausurpunkte zusammen. Zum Bestehen der Vorlesung müssen mindestens 60% der Gesamtpunkte erreicht werden. Die Termine der Klausuren sind im Kalender vermerkt.
Die Liste der zur Klausur zugelassenen Studierenden ist jetzt online.
Hörsaalverteilung für die Hauptklausur
| Matrikelnummer m | Ort |
|---|---|
| m ≤ 2526241 | im AudiMO E2 2 |
| 2526256 ≤ m ≤ 2527278 | im Hörsaal II der Informatik in E1 3 |
| m ≥ 2527359 | im Hörsaal 1 der Mathematik in E2 5 |
Benotung
Die Noten für Programmierung 2 werden wie folgt berechnet: Aus den Anteilen der Punkte aus den Projekten und der Klausur wird der Mittelwert gebildet:
q = 0.5 * (Math.max(hauptklausur, nachklausur) / 80.0 + projekte / 100.0);Zum Bestehen muss q >= 0.6 sein. Bei q >= 0.9375 (entspricht 100 Punkten im Projekt und 70 Punkten in der Klausur) hat man eine 1.0. Dazwischen wird linear interpoliert. Dieses Benotungsschema wird auch für die Nachklausur beibehalten.
Vorlesung
| Satz Nr | Thema | Letzte Änderung | Zusätzliches Material |
|---|---|---|---|
| 0 | Organisatorisches | 2010-04-13 | |
| 1 | Imperative Programmierung | 2010-04-16 | |
| 2 | Java Start | 2010-04-13 | |
| 3 | Ausdrücke | 2010-04-20 | |
| 4 | Referenzen | 2010-04-23 | |
| 5 | Strukturiertes Programmieren | 2010-04-23 | |
| 6 | Dynamische Programmierung | 2010-04-27 | Java Implementierung der Beispiele aus der Vorlesung: |
| 7 | Vererbung | 2010-05-07 | |
| 8 | Sammlungen | 2010-05-25 | |
| 9 | Verschiedenes | 2010-05-25 | |
| 10 | Übersetzer (Frontend) | 2010-05-28 | |
| 11 | Übersetzer (Code-Erzeugung) | 2010-06-08 | |
| 12 | Refaktorisierung | 2010-06-15 | |
| 13 | Entwurfsmuster | 2010-06-15 | |
| 14 | GUI | 2010-06-22 | Beispiele |
| 15 | C | 2010-06-29 | |
| 16 | C++ | 2010-07-06 | |
| 17 | Zusicherungskalküle | 2010-07-02 |
Übung
Der Übungsbetrieb besteht aus 2 Teilen: wöchentlichen Papierübungen und mehrwöchigen Projekten.
Die "Prog2-Woche" beginnt immer Dienstags (Vorlesungstag) und die Übungen der entsprechenden Woche beginnen immer erst am Mittwoch. Entsprechend ist Montag der letzte Tag der alten Prog2-Woche (in Bezug auf Mini-Tests und Übungen). Es muss also niemand für die Tests "vorlernen". Die Zuordnung der Studenten zu den Tutorien können Sie hier einsehen.
Übungsblätter
Die Übungsblätter bitte am Abgabetag bis 18:00 in den "Programmierung 2" Kasten im Erdgeschoss von E1 3 einwerfen.
| Blatt | Ausgabe | Abgabe |
|---|---|---|
| Blatt 1 | 2010-04-20 | 2010-04-27 |
| Blatt 2 | 2010-04-27 | 2010-05-04 |
| Blatt 3 | 2010-05-04 | 2010-05-11 |
| Blatt 4 | 2010-05-11 | 2010-05-18 |
| Blatt 5 | 2010-05-18 | 2010-05-25 |
|
Blatt 6 Polynom.java |
2010-05-25 | 2010-06-01 |
|
Blatt 7 CollSpeed.java |
2010-06-01 | 2010-06-08 |
| Blatt 8 | 2010-06-08 | 2010-06-15 |
| Blatt 9 | 2010-06-22 | 2010-06-29 |
| Blatt 10 | 2010-06-29 | 2010-07-06 |
Projekte
Eine allgemeine Dokumentation über die Entwicklungswerkzeuge und den Abgabeprozess finden Sie in unserem HowTo. Eine Liste der häufig gestellten Fragen (samt Antworten) ist ebenfalls darin enthalten.
Bitte stellen Sie sicher, dass Sie, bevor Sie sich mit Fragen oder Problemen an einen Tutor wenden, diese Anleitung gelesen und das Forum durchsucht haben.
| Projekt | Ausgabe | Abgabe | Bearbeitungszeit | Anteil der Punkte | Zusatzpunkte | ID | Dokumentation |
|---|---|---|---|---|---|---|---|
| Hello World | 20.04.2010 | 27.04.2010 | 1 Woche | 5% | 1 | prog2.project1/helloworld | Projekt 1 |
| Spell Checker | 27.04.2010 | 13.05.2010 | 2 Wochen | 15% | 2 | prog2.project2/spellchecker | Projekt 2 |
| Red-Black-Tree | 11.05.2010 | 03.06.2010 | 3 Wochen | 25% | 3 | prog2.project3/redblacktree | Projekt 3 |
| Compiler | 01.06.2010 | 25.06.2010 | 3 Wochen | 25% | 7+ | prog2.project4/compiler | Projekt 4 |
| Tetris | 22.06.2010 | 22.07.2010 | 4 Wochen | 30% | prog2.project5/tetris | Projekt 5 |
Zum 5. Projekt gibt es ein Turnier sowie eine Wahl des besten GUI. Details zu ersterem finden Sie hier, Details zu letzterem in der Projekt-Dokumentation. Viel Spaß bei der Vorbereitung!
Die Bewertungskriterien und Ergebnisstatistiken zu den Projekten, sowie zusätzliche Kommentare können hier eingesehen werden.
Encoding / Umlaute
Aus aktuellem Anlass: Wenn von den nächtlichen Tests die Rückmeldung kommt:
unmappable character for encoding UTF8Dann stellen Sie bitte in Ihrem Eclipse das Encoding um:
Preferences -> General -> Workspace -> Text file encoding auf UTF-8 umstellen.
Ausgaben auf der Konsole
Wenn Sie etwas auf der Konsole ausgeben, achten Sie bitte darauf dies für die nächtlichen Testläufe zu deaktivieren. Da wir mitunter Ihre Implementierung mit sehr großen Datenmengen testen, kann das schnell zu einer Menge Ausgaben führen. Dies kann eventuell den Build-Server beeinträchtigen, sodass Sie dann keine Email mit dem Testergebnis mehr erhalten.
Forum
Unter https://forum.st.cs.uni-saarland.de finden Sie das Forum. Sie haben dort automatisch einen Account und können sich mit dem Ihnen zugesandten Benutzernamen und Passwort dort anmelden. Um die Anmeldeseite zu öffnen müssen Sie sich jedoch zuerst mit Benutzer und Passwort 'prog2-2010' authentifizieren.
Im Forum können Sie sich mit anderen Studenten und den Tutoren über die Vorlesung, die Übungen und die Projekte austauschen. Bei technischen Problemen und Verständnisfragen sollten Sie dort zuerst nachschauen, häufig findet sich dort die Lösung zu bekannten Problemen.
Bücher
Die Vorlesung folgt keinem Buch. Zu den Verschiedene Themen sind unterschiedliche Bücher hilfreich. Diese finden Sie in der Liste unten.
![]() |
Gerhard Goos: Vorlesungen über Informatik 2 Ausführliche Einführung in die imperative und objektorientierte Programmierung anhand der Sprache Sather. Enthält Kapitel über schrittweise Verfeinerung und schwächste Vorbedingungen. Online aus dem Uni-Netz verfügbar. |
![]() |
Chirstian Ullenboom: Java ist auch nur eine Insel Umfassende Einführung in Java. Gut zum Nachschlagen und Vertiefen der Sprachelemente geeignet. Online verfügbar. |

