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:

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 Programmieren2010-04-23
6 Dynamische Programmierung 2010-04-27

Java Implementierung der Beispiele aus der Vorlesung:
Fibonaccizahlen, Binomialkoeffizienten, Matrixprodukte, Längste gemeinsame Teilfolgen

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 UTF8
Dann 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.