HOME | ENGLISH | IMPRESSUM | KIT

Programmierparadigmen - Übungen

Neuigkeiten

24.10.2023 Der Notenschlüssel für die Klausur ist hier zu finden.
18.10.2023 Die Klausureinsicht findet am Donnerstag, 26.10.2023, von 8:00 bis 9:30 im Hörsaal -101 im Informatik-Gebäude (50.34) statt, bitte seien Sie pünktlich.
25.9.2023 Entgegen vorheriger Informationen auf dieser Webseite findet die Sommersemester-Klausur im Gerthsen-Hörsaal statt.
14.9.2023 Falls Sie für eine Arbeitsstelle o.ä. eine 4,0-Bescheinigung benötigen, schreiben Sie bitte eine kurze diesbezügliche Mail an das Sekretariat und geben Sie Ihren vollen Namen und Ihre Matrikelnummer an. Sollten Sie Probleme mit Fristen bekommen, kommen Sie bitte zu Prof. Snelting in die Sprechstunde. Für eine Ummeldung zum Master zum WS2023/24 sollten die Noten rechtzeitig eingetragen sein, da die Ummeldung noch bis Ende November erfolgen kann. Sie sollten in diesem Fall keine 4,0-Bescheinigung benötigen.

Inhalt

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

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
24.10.2022 Erste Schritte mit Haskell [Übungsblatt 0]
27.10.2022 Rekursive Funktionen in Haskell [Übungsblatt 1] [Beispiellösung Blatt 1]
3.11.2022 Bindung, Kombinatoren, Terme [Übungsblatt 2] [Beispiellösung Blatt 2]
10.11.2022 Streams, Laziness [Übungsblatt 3] [Beispiellösung Blatt 3]
17.11.2022 Datentypen, Typklassen [Übungsblatt 4] [Beispiellösung Blatt 4]
24.11.2022 λ-Kalkül, Church-Kodierungen [Übungsblatt 5] [Beispiellösung Blatt 5]
1.12.2022 Rekursionsoperatoren, Typprüfung [Übungsblatt 6] [Beispiellösung Blatt 6]
8.12.2022 Prolog [Übungsblatt 7] [Beispiellösung Blatt 7]
15.12.2022 Prolog, Cuts [Übungsblatt 8] [Beispiellösung Blatt 8]
22.12.2022 Weihnachtsaufgaben [Übungsblatt X] [Dateien] [Beispiellösung Blatt X]
22.12.2022 Unifikation, Typinferenz mit let [Übungsblatt 9] [Beispiellösung Blatt 9]
19.01.2023 Parallelprogrammierung Grundlagen, C, MPI [Übungsblatt 10][Code Aufgabe 3] [Beispiellösung Blatt 10]
26.01.2023 Java [Übungsblatt 11][Code Aufgabe 3][Code Aufgabe 5]
[Beispiellösung Blatt 11][Beispiellösung Producer-Consumer]
02.02.2023 Aktormodell, Design by Contract
[Übungsblatt 12] [Beispiellösung Blatt 12][Beispiellösung Philosophen]
09.02.2023 Syntaktische Analyse [Übungsblatt 13] [Dateien] [Beispiellösung Blatt 13]
16.02.2023 Codeerzeugung [Übungsblatt 14] [shortcut.j] [Beispiellösung Blatt 14]
27.02.2023 Zusatzaufgaben [Zusatzblatt] [Beispiellösung Zusatzblatt]
[Beispiellösung λ-Interpreter] [Beispiellösung Code Merge-Sort] [Beispiellösung Code Merge-Sort] [Beispiellösung Code Merge-Sort]

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!

Lösungen können in unserer Praktomat-Instanz abgegeben werden. Ihre Abgaben werden von Ihrem Tutor korrigiert und digital zurückgegeben.

Forum

Für Fragen, Hilfe und Gedankenaustausch zur Übung oder den Übungsaufgaben steht das ILIAS zur Verfügung.

Termine

Die Übungsgruppen finden wöchentlich in den Räumen des Informatik-Baus (Gebäude 50.34) statt.

Gruppe Tag Uhrzeit Ort Gruppenleiter
1 Montags 09:45-11:15 SR 131 Samuel Born
2 Montags 11:30-13:00 SR 236 Samuel Born
3 Dienstags 9:45-11:15 SR 236 Tom Hüller
4 Dienstags 11:30-13:00 SR 131 Tom Hüller
5 Dienstags 15:45-17:15 HS -102 Paul Brinkmeier
6 Dienstags 14:00-15:30 SR -119 Paul Brinkmeier
7 Mittwochs 09:45-11:15 SR -119 David Kaufmann
8 Mittwochs 11:30-13:00 SR -119 David Kaufmann

Haskell

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

Mit GHCup können Sie neben einem Compiler (GHC) (inklusive Interpreter GHCi) auch den Haskell Language Server und das Build-Tool cabal herunterladen. Falls Sie Ihre Haskell-Programme nicht in einem einfachen Texteditor schreiben wollen, empfiehlt sich VS Code mit dem Haskell Language Server.

Auf den Rechnern im ATIS-Rechnerpool ist ebenfalls eine (veraltete) Installation in Form der Haskell Platform verfügbar.

Eine Web-IDE für Haskell gibt es auf Replit.

LambdaBubblePop ist eine nette, interaktive Alternative zu ghc-vis für ein Untermenge von Haskell, bei der man die Auswertungreihenfolge per Klick auf ein Redex beeinflussen kann.

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:

Typinferenz

Um die Typinferenz nachvollziehbarer zu machen, hat ein PSE-Team ein Tool zur Visualisierung erstellt:

Feedback und Kontakt zu den Autoren gerne über gitlab.

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

Ehemalige Tutoren
Samuel Born
Paul Brinkmeier
Tom Hüller
David Kaufmann
Wissenschaftliche Mitarbeiter
Dr. Jakob von Raumer
Sebastian Graf