HOME | ENGLISH | IMPRESSUM | KIT

Programmierparadigmen - Übungen

Neuigkeiten

07.02.2019 Wie in der Vorlesung angekündigt, findet am Mittwoch, den 27.03.2019, um 14:00 Uhr im Raum -101 im Informatikbau (50.34) eine Fragestunde statt, in der Übungsleiter und Tutoren Fragen zum Vorlesungsstoff beantworten. Idealerweise schicken Sie schon vor dem Termin Ihre Fragen per E-Mail an die Übungsleiter (Max Wagner, Sebastian Ullrich) oder stellen Ihre Fragen im ILIAS-Forum.
24.01.2019 Da die Vorlesungszeit in zwei Wochen endet, wird in den Übungen in der letzten Vorlesungswoche
  • am Montag, den 04. Februar, ausschließlich das Thema Parallelprogrammierung, und
  • am Dienstag, den 05. Februar, ausschließlich das Thema Compiler/Bytecode
behandelt. Sie dürfen und sollten daher in dieser Woche zwei Übungstermine wahrnehmen.
15.01.2019 Die Anmeldung für die Klausur am 04.04.2019 ist nun freigeschaltet. Anmeldeschluss ist der 26.03.2019.
11.12.2018 Der vorläufige Terminplan wurde um die Termine im Jahr 2019 ergänzt.
22.11.2018 Die Klausur am 4.4.2019 wurde auf 14:00 verlegt und findet nun in den Hörsälen Audimax und Fasanengarten statt.
16.11.2018 Die Beispiellösungen von Blatt 3 waren dank eines LaTeX-Malheurs unvollständig, dies wurde behoben.
16.11.2018 Das Tutorium Nr.3 von Max Göttlicher (14:00, SR131) fällt am 26.11. aus. Betroffene Studenten können stattdessen das Tutorium von Oliver Suchan (gleiche Zeit, SR301) besuchen (oder eines zu einem anderen Termin).
14.11.2018 Die Vorlesungstermine bis Weihnachten sind nun eingetragen. Beachten Sie, dass am Freitag, den 23.11.2018, keine Vorlesung stattfindet.
18.10.2018 Auf Blatt 0 war ein ungültiger Link zu WebInscribe. Dies wurde behoben.

Inhalt

In den Übungen werden die Themen der Vorlesung Programmierparadigmen wiederholt und vertieft. Weiterhin werden die Übungsaufgaben vorgestellt und die Lösungen besprochen.

Anmeldung für die Übungsgruppen

Die Einteilung der Übungsgruppen findet ab Montag, den 15.10.2018, über WebInscribe statt. Eine Übersicht über die Termine der 8 Übungsgruppen finden Sie unten. Sie brauchen nur eine der Übungsgruppen besuchen. Die Anmeldung endet am Freitag, den 19.10.2018, um 16:30 Uhr.

Material

Das Vorlesungs- und Übungsmaterial darf ausschließlich zu Zwecken genutzt werden, die in direktem Zusammenhang mit der Veranstaltung Programmierparadigmen stehen. Insbesondere die Weitergabe des hier zur Verfügung gestellten Materials an Dritte ist nicht gestattet. Foliensätze, Übungsblätter und hier veröffentlichter Quell-Code unterliegen dem Copyright des Lehrstuhls Programmierparadigmen (IPD Snelting).

Das Material kann nur aus dem Uni-Netz heruntergeladen werden. Verwenden Sie bitte den VPN-Client des SCC, falls Sie von außerhalb Zugriff benötigen.

Datum Thema Unterlagen
10.10.2018 Erste Schritte mit Haskell [Übungsblatt 0]
18.10.2018 Rekursive Funktionen und Listen [Übungsblatt 1][Zusatzblatt 1]
[Beispiellösung Blatt 1][Beispiellösung Zusatzblatt 1]
25.10.2018 Bindung, Kombinatoren, Patterns [Übungsblatt 2][Zusatzblatt 2]
[Beispiellösung Blatt 2][Beispiellösung Zusatzblatt 2]
02.11.2018 Laziness, Streams [Übungsblatt 3][Zusatzblatt 3]
[Beispiellösung Blatt 3][Beispiellösung Zusatzblatt 3]
08.11.2018 Datentypen, Typklassen [Übungsblatt 4][Zusatzblatt 4]
[Beispiellösung Blatt 4][Beispiellösung Zusatzblatt 4]
15.11.2018 λ-Kalkül, Church-Kodierungen [Übungsblatt 5][Zusatzblatt 5]
[Beispiellösung Blatt 5][Beispiellösung Zusatzblatt 5]
22.11.2018 Rekursionsoperatoren, Typprüfung [Übungsblatt 6][Zusatzblatt 6]
[Rahmen λ-Interpreter][λ-Parser][Tests λ-Interpreter]
[Beispielllösung Blatt 6][Beispielllösung Zusatzblatt 6]
[Beispiellösung λ-Interpreter]
29.11.2018 Prolog [Übungsblatt 7][Zusatzblatt 7]
[Beispiellösung Blatt 7][Beispiellösung Zusatzblatt 7]
06.12.2018 Prolog, Unifikation, Cuts [Übungsblatt 8][Zusatzblatt 8]
[Beispiellösung Blatt 8][Beispiellösung Zusatzblatt 8]
13.12.2018 Typinferenz, let-Polymorphismus [Übungsblatt 9][Zusatzblatt 9]
[Beispiellösung Blatt 9][Beispiellösung Zusatzblatt 9]
12.12.2018 Weihnachtsaufgaben [Übungsblatt X][Benötigte Dateien und Frameworks]
10.01.2019 C, MPI [Übungsblatt 10][Zusatzblatt 10][Code Aufgabe 2]
[Beispiellösung Blatt 10][Beispiellösung Zusatzblatt 10][Beispiellösung Code Merge-Sort]
17.01.2019 Java [Übungsblatt 11][Zusatzblatt 11][Code Aufgabe 2][Code Aufgabe 3]
[Beispiellösung Blatt 11][Beispiellösung Producer-Consumer][Beispiellösung Zusatzblatt 11][Beispiellösung Code Merge-Sort]
24.01.2019 Aktormodell, Design by Contract
[Übungsblatt 12][Zusatzblatt 12]
[Beispiellösung Blatt 12][Beispiellösung Philosophen][Beispiellösung Zusatzblatt 12][Beispiellösung Code Merge-Sort]
31.01.2019 Codeerzeugung, syntaktische Analyse [Übungsblatt 13][shortcut.j]
[Benötigte Dateien für Aufgabe 3]
[Zusatzblatt 13][Benötigte Dateien für Aufgabe Z1]
[Beispiellösung Blatt 13][Beispiellösung Zusatzblatt 13]
[Beispiellösung Aufgabe 3][Beispiellösung Aufgabe Z1]

Bearbeitung der Übungsaufgaben

Die Bearbeitung der Übungsaufgaben ist keine Voraussetzung für die Teilnahme an der Klausur. Wir empfehlen Ihnen trotzdem sehr, die Übungsaufgaben selbstständig zu bearbeiten und regelmäßig an den Übungen teilzunehmen. Insbesondere empfehlen wir, selbst am eigenen Rechner mit den vorgestellten Programmiersprachen zu experimentieren und eigene Programme zu schreiben!

Digitale Lösungen können in unserer Praktomat-Instanz abgegeben werden, Lösungen auf Papier in unserem Abgabekasten im Untergeschoss des Informatikgebäudes; nähere Informationen entnehmen Sie bitte dem jeweiligen Übungsblatt. Ihre Abgaben werden von Ihrem Tutor korrigiert und digital bzw. in der entsprechenden Übung zurückgegeben.

Forum

Für Fragen, Hilfe und Gedankenaustausch zur Übung oder den Übungsaufgaben stehen Foren im ILIAS zur Verfügung.

Termine

Die Übungsgruppen finden wöchentlich statt! Die erste Übung ist am 22.10.2018 bzw. am 23.10.2018. Alle Übungsgruppen finden in Seminarräumen des Informatik-Baus (Gebäude 50.34) statt.

Gruppe Tag Beginn Ort Gruppenleiter
1 Montags 09:45 Uhr SR 131 Niklas Uhl
2 Montags 11:30 Uhr SR 236 Roman Langrehr
3 Montags 14:00 Uhr SR 131 Max Göttlicher
4 Montags 14:00 Uhr SR 301 Oliver Suchan
5 Dienstags 11:30 Uhr SR 131 Roman Langrehr
6 Dienstags 11:30 Uhr SR 301 Niklas Uhl
7 Dienstags 14:00 Uhr SR -119 Oliver Suchan
8 Dienstags 14:00 Uhr SR 131 Max Göttlicher

Programmierparadigmen VM-Image

Eine Virtuelle Maschine mit vorinstallierten Entwicklungsumgebungen für alle in der Vorlesung behandelten Sprachen ist verfügbar.

Haskell

Zum Experimentieren und zur Bearbeitung der Übungsaufgaben zum Thema funktionale Programmierung benötigen Sie eine Haskell Programmierumgebung. Wir empfehlen dazu die Installation der

Diese enthält neben einem Compiler (GHC) auch den Interpreter GHCi. Falls Sie Ihre Haskell-Programme nicht in einem einfachen Texteditor schreiben wollen, empfehlen sich

Die Haskell Platform ist auch auf den Rechnern im ATIS-Rechnerpool verfügbar.

Neben der in der Vorlesung empfohlenen Literatur weisen wir auch auf folgende Online-Einführungen hin:

λ-Kalkül

Zum Ausprobieren können Sie die aus PSE entstandene Web-IDE verwenden:

Oder einen der zahlreichen anderen Web-Interpreter:

Prolog

Zur Bearbeitung der Übungsaufgaben zum Thema logische Programmierung benötigen Sie eine Prolog-Programmierumgebung. Zum Einstieg reicht hierfür eine Web-IDE:

Ebenfalls im Rahmen von PSE entstanden sind zwei Prolog-Interpreter, welche die in der Vorlesung vorgestellten Ausführungsbäume anzeigen können:

Gängige Prolog-Implementierungen, jeweils verfügbar für Linux/Windows/MacOS X, sind:

Neben einem normalen Texteditor gibt es zur Bearbeitung von Prolog-Programmen u.A.

Als zusätzliche Lernmaterialien empfehlen wir folgende Online-Einführung:

Hiervon existiert auch eine Variante mit integrierter Web-IDE für Beispiele und Übungsaufgaben.

Akka

Um Akka-Aktoren in Java zu verwenden, müssen Teile der Akka-Bibliothek in den Classpath eingebunden werden. Die Bibliothek wird über Maven Central bereitgestellt, weshalb der einfachste Weg die Verwendung eines Maven-Projektes mit der passenden Dependency ist:

  • GroupId: com.typesafe.akka
  • ArtifactId: akka-actor_2.11
  • Version: 2.5.19

Hinweis: Verwenden Sie Akka mindestens in der Version 2.5.x. Die Versionen 2.4.x und früher haben eine andere API, die zwar (teilweise) noch vorhanden ist, aber als deprecated deklariert wurde.

Compiler

Ein Verfahren zur systematischen Berechnung von First1 und Follow1 Mengen wird z.B. hier gezeigt (Implementierung in Haskell). Online ausprobieren können Sie z.B.

Veranstalter

Wissenschaftliche Mitarbeiter
Sebastian Ullrich
Maximilian Wagner
Tutoren
Max Göttlicher
Roman Langrehr
Oliver Suchan
Niklas Uhl