Programmierung 2

Pflichtvorlesung im Bachelorstudium

Sebastian Hack, Klaas Boesche

Ü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:

Neuigkeiten

2012-05-16
Übungsblatt 4 wurde veröffentlicht.
2012-05-15
Einige Fehler im MIPS-Teil des Skripts wurden korrigiert. Beachten Sie insbesondere die Regelschemata.
2012-05-09
Übungsblatt 3 wurde veröffentlicht.
2012-05-08
Die Mittsemesterklausur wurde gestrichen.
2012-05-06
Auf dem Übungsblatt 2 wurde Aufgabe 2.0 nochmals korrigiert.
2012-05-05
Auf dem Übungsblatt 2 wurde Aufgabe 2.0 korrigiert.
2012-05-01
Übungsblatt 2 wurde veröffentlicht.
2012-04-27
Der MIPS Teil des Skripts wurde veröffentlicht.
2012-04-26
Auf dem Übungsblatt 1 wurden mehrere Fehler korrigiert.
2012-04-24
Das Forum ist freigeschaltet.

Forum

Im Forum können Sie sich ab sofort über die Vorlesung austauschen. Wenn Sie die Übungsgruppe wechseln möchten, ist dies der Ort um einen Tauschpartner zu suchen.

Um sich einzuloggen benutzen Sie als Benutzerkennung den Prefix Ihrer, bei der Anmeldung angegebenen, Adresse. Zum Beispiel s9bspiel, wenn sie s9bspiel@stud.uni-saarland.de angegeben haben. Das Passwort ist das gleiche wie das, das Sie in der Anmeldebenachrichtigung erhalten haben, es sei denn Sie waren bereits mit dieser Benutzerkennung im System angemeldet. Unter diesen Umständen haben Sie Ihr altes Passwort behalten.

Um die Anmeldeseite über eine Verbindung von ausserhalb des Universitäts-Netzwerks zu öffnen müssen Sie sich zunächst mit Benutzer 'prog2-2012' und Passwort 'prog2-2012' authentifizieren.

Anmeldung

Die Registrierung war bis zum 22.04. um 23:59 Uhr, geöffnet. Das Ergebnis der Verteilung der Studenten auf die Tutorien können Sie hier ansehen.

Falls Sie Angaben korrigiern möchten, melden Sie sich bitte bei Klaas Boesche.

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.

Skript

Zu den ersten Teilen der Vorlesung gibt es ein Skript. Dieses wird immer wieder aktualisiert und hier veröffentlicht.

Wenn Sie Fehler im Skript finden, melden Sie diese bitte an Klaas Boesche und geben Sie dabei die jeweilige Zeilennummer und Revision (auf jeder Seite unten) an.

Programmierung 2 Skript

Vorlesung

Vorlesung Foliensatz Thema Letzte Änderung Zusätzliches Material
17.04.2012 00 Organisatorisches 23.04.2012
20.04.2012 -- Arithmetik im Rechner/MIPS Assembler 27.04.2012
24.04.2012 -- MIPS Assembler 27.04.2012
27.04.2012 -- MIPS Assembler 27.04.2012
04.05.2012 -- MIPS Assembler 08.05.2012
08.05.2012 -- MIPS Assembler 08.05.2012
  • Die aktualisierten Beispielprogramme.
    Setzen Sie in MARS im Menu "Settings" die Optionen "Assemble all files in directory" und "Initialize Program Counter to global 'main' if defined".
11.05.2012 03 C 11.05.2012

Software

Um mit MIPS Assembler experimentieren zu können, installieren Sie sich bitte den MARS MIPS Simulator. Für diesen benötigen Sie Java.

Für die Vorlesung müssen Sie sowieso ein Java Development Kit installieren. Unter Linux finden Sie diese in der Paketverwaltung ihrer jeweiligen Distribution zum Beispiel als openjdk/openjdk-6. Wenn Sie Windows benutzen, können Sie bei Oracle die Java SE 6 JDK herunterladen.

Den heruntergeladenen MIPS Simulator "Mars_4_2.jar" können sie dann mit "java -jar Mars_4_2.jar" von der Kommandozeile ausführen, wenn diese sich im gleichen Verzeichnis befindet. Unter Windows verknüpft Oracle Java üblicherweise .jar-Dateien automatisch mit java, so dass sie diese mit einem Doppelklick ausführen können.

Virtuelle Maschine für den C Compiler

Wenn Sie auf ihrem System keinen C Compiler installiert haben, so können Sie sich in den CIP-Pools einloggen, und den C Compiler dort verwenden, oder sich ein kleines Linux System in einer virtuellen Maschine (VM) installieren. Wir haben für Sie solch eine virtuelle Maschine vorbereitet. Gehen Sie wie folgt vor:

  1. Installieren Sie VirtualBox um die virtuelle Maschine zu starten. Wählen Sie "VirtualBox 4.1.14 for X hosts", wobei X ihr Betriebssystem ist.
  2. Laden Sie die virtuelle Maschine hier herunter und entpacken Sie diese mit einem geeigneten Programm. Für Windows bietet sich 7-zip an.
  3. Öffnen Sie die Datei Prog2ArchLinux.vbox mit VirtualBox.
  4. Warten Sie bis das Betriebssystem der VM gestartet ist und der Login erscheint. Sie können sich mit dem Programmierung2 Benutzer und dem Passwort "prog2" einloggen.
  5. Eingeloggt finden Sie unten links ein Startmenü und daneben einen Dateimanager, ein Terminal und zwei verschiedene Editoren.
  6. Im Terminal können Sie die Befehle aus dem C-Foliensatz benutzen um Programme zu kompilieren und auszuführen.

Zusätzlich zum C-Compiler ist auch ein C-Compiler installiert, der die Programme in MIPS-Befehle übersetzt. Wenn Sie "mipsel-linux-gnu-gcc -S -o - test.c" eingeben wird die C-Quelldatei "test.c" übersetzt und der Compiler gibt das Programm in MIPS-Befehlen aus. Beachten Sie, dass dieser auf reale MIPS-Prozessoren angepasst ist und deshalb weitere Deklarationen und Befehle besitzt.

Übung

Übungsblätter

Blatt Ausgabe Revision
Arithmetik 2012-04-24 2
Einführung in MIPS Assembler 2012-05-01 3
Programmieren in MIPS Assembler und Hauptprogramm für die Sortieraufgabe 2012-05-08 3
Programmieren in C und Rumpf für Aufgabe 4.3 2012-05-16 1

Der Übungsbetrieb besteht aus 3 Teilen: wöchentlichen Papierübungen, den darauf aufbauenden Minitests und mehrwöchigen Projekten.

Die "Prog2-Woche" beginnt immer dienstags (Vorlesungstag), die Übungen der entsprechenden Woche beginnen jedoch immer erst in der folgenden Woche. Entsprechend ist Montag der letzte Tag der alten Prog2-Woche (in Bezug auf Minitests und Übungen). Es muss also niemand für die Tests "vorlernen". Die Abgabe der Übungsblätter ist nicht verpflichtend. Die Minitests sind allerdings darauf ausgerichtet, dass alle auf dem jeweiligen Übungsblatt behandelten Konzepte verinnerlicht wurden.

Übungsgruppen

Die Übungsgruppen werden zu folgenden Terminen stattfinden:

Gruppe Tag Zeit Ort Tutor Mail
1 Mittwoch 12:00-14:00 E1 3, SR 14 Samuel Leisering
2 Mittwoch 12:00-14:00 E1 3, SR 15 Dustin Kahl
3 Mittwoch 12:00-14:00 E1 3, SR 16 Lukas Löhle
4 Mittwoch 12:00-14:00 E1 7, 323 Curd Becker
5 Mittwoch 12:00-14:00 E1 1, U12 Thomas Rupp
6 Mittwoch 12:00-14:00 E2 1, 001 Constantin Berhard
7 Mittwoch 14:00-16:00 E1 3, SR14 Manuel Zapp
8 Mittwoch 14:00-16:00 E1 3, SR15 Alexander Schlosser
9 Mittwoch 14:00-16:00 E1 3, 107 Jonas Schneider
10 Mittwoch 14:00-16:00 E1 1, U12 Michael Backenköhler
11 Mittwoch 14:00-16:00 E1 7, 323 Tim Ruffing
12 Mittwoch 14:00-16:00 E2 4, SR8 (318) Kai Glauber
13 Mittwoch 16:00-18:00 E1 3, SR15 David Poetzsch-Heffter
14 Mittwoch 16:00-18:00 E1 3, SR16 Alexander Prange
15 Mittwoch 16:00-18:00 E1 3, 107 Constantin Berhard
16 Mittwoch 16:00-18:00 E1 1, U12 Julian Jacques Maurer
17 Mittwoch 16:00-18:00 E1 7, 323 Niklas Grimm
18 Mittwoch 16:00-18:00 E2 1, 007 Tobias Theobald

Termine

Die Vorlesung findet dienstags 14:15-16:00 und freitags 8:30-10:00 im Günter-Hotz-Hörsaal in E2 2 statt.

Alle Übungsgruppen finden mittwochs von 12:00-18:00 statt. Dort werden auch die Minitests geschrieben.

Die genauen Termine stehen in folgendem Kalender.

Prüfungsmodalitäten

Es wird eine Endklausur geschrieben. Zur Endklausur wird eine Nachklausur angeboten. Die Termine der Klausuren sind im Kalender vermerkt. Es können sowohl die Endklausur, als auch die Nachklausur geschrieben werden, die bessere Punktzahl geht in die Note ein. Um zur Endklausur und Nachklausur zugelassen zu werden, müssen mindestens 50% der Punkte aus 8 Minitests (zu den Übungsblättern) erreicht werden.

Benotung

Die Noten für Programmierung 2 werden wie folgt zu 50% aus den Anteilen der Punkte aus den Projekten und zu 50% aus der Hauptklausur/Nachklausur berechnet:

q = 0.5 * (max(Hauptklausur, Nachklausur) / Klausurpunkte) + 0.5 * (min(Projekte, 100) / 100.0)

Zum Bestehen muss q >= 0.6 sein. Die Zahl q wird nach der Hauptklausur auf die Notenskala abgebildet (linear interpoliert). Dieses Schema wird auch zur Nachklausur beibehalten.

Bücher

Die Vorlesung folgt keinem Buch direkt. Zu den verschiedenen 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.