Programmierung 2

Pflichtvorlesung im Bachelorstudium

Sebastian Hack, Ralf Karrenberg

Ü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

Wie angekündigt war die Anmeldung nur bis zum 24.10.2010, 23:59 Uhr möglich. Dieser Termin ist nun überschritten und die Anmeldung damit abgeschlossen.
Eine Nachträgliche Anmeldung ist nur per Email (an Ralf Karrenberg) und nur in begründeten Ausnahmefällen möglich.

Bitte beachten Sie, dass Sie sich sich zusätzlich zur Anmeldung auf dieser Website im HISPOS sowie eventuell bei Ihrem jeweiligen Prüfungssekretariat für die Vorlesung anmelden müssen.

Neuigkeiten

2010-03-04
Die Noten nach der Nachklausur sind online.
2010-03-01
Die Nachklausur findet am Freitag um 9 Uhr im AudiMO statt.
2010-02-23
Noten nach der Hauptklausur online. Details über das Benotungsschema finden Sie hier.
2010-02-22
Die Bewertungen der GUIs sind jetzt im SVN Repository abrufbar. [+]
2010-02-18
Die Punkte der Hauptklausur sind online. [+]
2010-02-17
Die Ergebnisse des fuenften Programmierprojekts sowie die Referenzimplementierung sind online [+]
2010-02-16
Die Liste der zur Klausur zugelassenen Studierenden ist jetzt online.
2010-02-01
Die Ergebnisse des vierten Programmierprojekts sowie die Referenzimplementierung sind online
2011-01-25
Das fuenfte Programmierprojekt ist online
2011-01-07
Übungsblatt 8 ist online.

Termine

Die Vorlesung findet an folgenden Terminen statt:
Zeit / Ort
Montag 14:15-16:00 E1 3, Hörsaal 002
Donnerstag 14:15-16:00 E2 2
Beginn
2010-10-21

Da die Vorlesung 2 SWS umfasst, wird nicht jeden Montag und Donnerstag 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.

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.

Endklausur

Die Liste der zur Endklausur zugelassenen Studierenden ist jetzt online. Die Klausur findet am 18. Februar um 9:00 Uhr im Hörsaal AudiMO im Gebäude E2 2 statt.

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) / Klausurpunkte + projekte / 100.0);
Zum Bestehen muss q >= 0.6 sein. Das Benotungsschema wird auch für die Nachklausur beibehalten.

Vorlesung

Satz Thema Letzte Änderung Zusätzliches Material
00 Organisatorisches 2010-10-22
01 Imperative Programmierung 2010-10-22
02 Einführung in MIPS 2010-10-26
03 Imperative Programmiersprachen 2010-11-11
04 Referenzen, Reihungen, Objekte 2010-11-11
05 Dynamische Programmierung 2010-11-15
06 Strukturierte Programmierung 2010-11-18
07 Vererbung 2010-11-22
08 Sammlungen 2010-12-06
09 Verschiedenes
Überladen
2010-12-09
10 Refaktorisieren
2010-12-13
-- Weihnachtsvorlsung: Tricks mit Bits
2010-12-16
11 Übersetzer
2011-01-03
12 Übersetzer: Code Erzeugung
2011-01-06
13 Entwurfsmuster
2011-01-06
14 C
2011-01-17
15 C++
2011-01-20
16 GUIs
2011-01-27 Beispielcode

Übung

Der Übungsbetrieb besteht aus 2 Teilen: wöchentlichen Papierübungen und mehrwöchigen Projekten.

Die "Prog2-Woche" beginnt immer Montags (Vorlesungstag), die Übungen der entsprechenden Woche beginnen jedoch immer erst in der folgenden Woche. Entsprechend ist Freitag 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: Tutorienzuordnung.

Übungsgruppen

Die Übungsgruppen werden voraussichtlich zu folgenden Terminen stattfinden:

Gruppe Tag Zeit Ort Tutor
1 Montag 10:00-12:00 SR015 Sven Hafeneger
2 Montag 10:00-12:00 SR016 Elias Hartz
3 Mittwoch 08:00-10:00 SR015 Eva Koenig
4 Mittwoch 08:00-10:00 SR016 Alexander Junge
5 Freitag 10:00-12:00 SR014 Thorsten Will
6 Freitag 10:00-12:00 SR015 Tobias Salzmann
7 Freitag 12:00-14:00 SR016 Ralf Jung
8 Freitag 14:00-16:00 SR014 Daniel Mohr

Office Hours

Wir bieten tägliche office hours an, an denen Sie die Möglichkeit haben, Fragen zur Vorlesung, Übungsblättern oder Projekten in Ruhe ausserhalb der Übungsgruppen zu besprechen. Diese finden immer in E1.1, SR U12 statt.

Ü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 Revision
Blatt 1 2010-10-25 2010-11-01 2
Blatt 2 2010-11-03 2010-11-08 1
Blatt 3 2010-11-11 2010-11-17 2
Blatt 4 2010-11-19 2010-11-24 1
Blatt 5 2010-11-25 2010-12-01 2
Blatt 6
Polynom.java
2010-12-02 2010-12-08 1
Blatt 7
CollSpeed.java
2010-12-22 2011-01-03 1
Blatt 8 2011-01-07 2011-01-12 1
Blatt 9 2011-01-13 2011-01-19 1
Blatt 10 2011-01-23 2011-01-26 1

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 ID Dokumentation
Hello World 2010-11-08 2010-11-14 1 Woche 5% prog2.project1/helloworld Projekt 1
Intelligente Bildskalierung 2010-11-15 2010-11-28 2 Wochen 15% prog2.project2/seamcarving Projekt 2 Beispielbilder
DPLL 2010-11-29 2010-12-19 3 Wochen 25% prog2.project3/dpll Projekt 3
MIPS Compiler 2011-01-03 2011-01-28 3 Wochen 25% prog2.project4/compiler Projekt 4
Demo.java
PacMan 2011-01-24 2011-02-13 3 Wochen 30% prog2.project5/pacman Projekt 5

Die Bewertungskriterien und Ergebnisstatistiken zu den Projekten sowie zusätzliche Kommentare können hier eingesehen werden: Projektergebnisse.

Encoding / Umlaute

Im letzten Semester gab es Probleme mit Umlauten in den nächtlichen Tests:

unmappable character for encoding UTF8
In diesem Fall 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 der nach ihrer Anmeldung angelegt wird. Ihr Benutzername für das Forum ist Ihr Email-Benutzername (z.B. s9abcd im Fall von s9abcd@stud.uni-saarland.de). Das zugehörige Passwort entnehmen Sie bitte der Email, die Sie als Anmeldebestätigung erhalten haben.

Sollten Sie bereits im Sommersemester 2010 an der Vorlesung teilgenommen haben, so verwenden Sie für das Forum ihr ursprüngliches Passwort (sofern Sie mit derselben Email-Adresse registriert sind).

Um die Anmeldeseite über eine Verbindung von ausserhalb des Universitäts-Netzwerks zu öffnen müssen Sie sich zunächst mit Benutzer 'prog2-2010' 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.

James Gosling et al.: The Java Language Specification

Der offizielle Java Sprachbericht.

Online verfügbar.