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.
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:
- O'Sullivan,Stewart,Goerzen Real World Haskell
- Allen,Moronuki Haskell Programming from First Principles
- Bird Thinking Functionally with Haskell
λ-Kalkül
Zum Ausprobieren können Sie die aus PSE entstandene Web-IDE verwenden:
Oder einen der zahlreichen anderen Web-Interpreter:
- lambda [Tobias Kahlert, auf github]
- LambdaCalculus2 [Henning Dieterichs, auf github]
- Alligator Eggs Calculator [Takashi Yamamiya, auf github]
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.
- den SWI-Prolog Editor (Windows)
- das Eclipse Plugin Prolog Development Tool
Als zusätzliche Lernmaterialien empfehlen wir folgende Online-Einführung:
- Patrick Blackburn, Johan Bos, Kristina Striegnitz Learn Prolog Now!
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.- Eine Implementierung von Hacking Off
- The Context Free Grammar Checker, welcher auch Refaktorisierungen von Grammatiken ermöglicht.
Veranstalter
Ehemalige Tutoren |
---|
Samuel Born |
Paul Brinkmeier |
Tom Hüller |
David Kaufmann |
Wissenschaftliche Mitarbeiter |
---|
Dr. Jakob von Raumer |
Sebastian Graf |