HOME | ENGLISH | IMPRESSUM | KIT

Programmierparadigmen - Übungen

Neuigkeiten

08.01.2024

Am 11.01. fällt die Übung aus.

14.11.2023

Am 17.11. fällt die Vorlesung aus.

23.10.2023

Wegen Kollision mit "Grundlagen der künstlichen Intelligenz" wurde der wöchentliche Übungstermin auf Donnerstags, 14:00 im Messtechnik-Hörsaal verschoben. Außerdem wurden Termine für Online-Tutorien angekündigt.

Die erste Übung findet am 2.11. statt.

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
25.10.2023 Erste Schritte mit Haskell [Übungsblatt 0]
27.10.2023 Rekursive Funktionen in Haskell [Übungsblatt 1] [Beispiellösung Blatt 1] [Hoogle]
4.11.2023 Bindung, Kombinatoren, Terme [Übungsblatt 2] [binding.hs] [Beispiellösung Blatt 2]
9.11.2023 Streams, Laziness [Übungsblatt 3] [Beispiellösung Blatt 3]
16.11.2023 Datentypen, Typklassen [Übungsblatt 4] [Beispiellösung Blatt 4]
24.11.2023 λ-Kalkül, Church-Kodierungen [Übungsblatt 5] [Beispiellösung Blatt 5]
4.12.2023 Rekursionsoperatoren, Typprüfung [Übungsblatt 6] [Beispiellösung Blatt 6]
11.12.2023 Prolog [Übungsblatt 7] [Beispiellösung Blatt 7]
14.12.2023 Prolog, Cuts [Übungsblatt 8] [Beispiellösung Blatt 8]
22.12.2023 Weihnachtsaufgaben [Übungsblatt X] [Dateien] [Beispiellösung Blatt X] [Beispiellösung Musik-Aufgabe] [Beispiellösung OSM-Aufgabe]
11.01.2024 Unifikation, Typinferenz mit let [Übungsblatt 9, Version 2] [Beispiellösung Blatt 9]
18.01.2024 Parallelprogrammierung Grundlagen, C, MPI [Übungsblatt 10][Code Aufgabe 3] [Beispiellösung Blatt 10] [Folien Saalübung]
25.01.2024 Java [Übungsblatt 11][Code Aufgabe 3][Code Aufgabe 5]
[Beispiellösung Blatt 11][Beispiellösung Producer-Consumer] [Folien Saalübung]
01.02.2024 Design by Contract
[Übungsblatt 12] [Beispiellösung Blatt 12] [Folien Saalübung]
09.02.2024 Syntaktische Analyse, Codeerzeugung [Übungsblatt 13] [Dateien] [shortcut.j] [Beispiellösung Blatt 13]
15.02.2024 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!

Haskell-Lösungen können in unserer Praktomat-Instanz abgegeben werden, wo sie eine Reihe von Tests durchlaufen.

Forum

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

Termine

Die Saalübung findet wöchentlich am Donnerstag im Messtechnik-Hörsaal statt.

Zusätzlich wird es zur Vertiefung zwei optionale Online-Tutorien geben, die von unserem Tutor Maxim Besser über Zoom gehalten werden.

Veranstaltung Tag Uhrzeit Ort
Online-Tutorium Dienstags 14:00-15:30 Zoom-Link im ILIAS-Forum
Online-Tutorium Donnerstags 9:45-11:15 Zoom-Link im ILIAS-Forum
Saalübung Donnerstags 14:00-15:30 Messtechnik-Hörsaal

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

Wissenschaftliche Mitarbeiter
Dr. Jakob von Raumer
Sebastian Graf
Tutoren
Maxim Besser