HOME | ENGLISH | IMPRESSUM | KIT

Programmierparadigmen - Übungen

Neuigkeiten

19.10.2020 Hinweis zu Nachprüfungen: Es besteht die dringende Aufforderung, Reisen in Risikogebiete zu unterlassen. Dies gilt erst recht, wenn bereits zu einer Nachprüfung geladen wurde. Atteste die nach einer solchen Reise eine Prüfungsunfähigkeit bescheinigen zB wg Quarantäne, werden nicht anerkannt, da die Prüfungsunfähigkeit selbst verschuldet ist.
16.10.2020 Die vorläufigen Noten der Herbstklausur sind nun im Campus-System eingetragen. Falls Ihre Anmeldung für die Prüfung Programmierparadigmen im Campus-System gesperrt ist oder Sie noch unter der SPO 2008 studieren, sollten Sie eine Mail über das Vorgehen erhalten haben. Die Klausureinsicht findet am Montag, den 19.10.2020 ab 13:00 Uhr statt. Interessenten müssen sich bis Montag, den 19.10. um 8:00 Uhr hier anmelden und erhalten dann einen Zeitslot zwischen 13:00 und 17:00 Uhr zugeordnet. Aufgrund der weiter bestehenden Hygienevorgaben bitten wir Sie, sich nur bei begründetem Interesse anzumelden, zum Beispiel bei einer Punktzahl knapp unter einem Notenschritt! Den Notenschlüssel finden Sie hier (nur aus dem KIT-Netz/VPN erreichbar).
12.08.2020 Die Anmeldung für die Klausur am 06.10.2020 ist nun freigeschaltet. Anmeldeschluss ist der 29.09.2020.
13.07.2020 Die vorläufigen Noten der Sonderklausur sind nun im Campus-System eingetragen (falls Sie noch unter der SPO 2008 studieren, erhalten Sie stattdessen eine E-Mail über den Ablauf). Die Klausureinsicht findet am Donnerstag, den 16.07.2020, statt. Interessenten müssen sich bis Mittwoch, den 15.07., um 12:00 Uhr hier anmelden und erhalten dann einen Zeitslot zwischen 13:00 und 17:00 zugeordnet. Aufgrund der weiter bestehenden Hygienevorgaben bitten wir Sie, sich nur bei begründetem Interesse anzumelden, zum Beispiel bei einer Punktzahl knapp unter einem Notenschritt! Den Notenschlüssel finden Sie hier (nur aus dem KIT-Netz/VPN erreichbar).
08.07.2020 Die Herbstklausur wird am Dienstag, den 06.10.2020 um 09:00 Uhr im Zelt auf dem Forum stattfinden.
30.06.2020 Falls Sie 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.
09.06.2020 Wir werden die Fragestunde am Dienstag, den 23.06.2020 um 14:00 Uhr über Zoom nachholen. Weitere Informationen dazu finden Sie im ILIAS-Kurs der Vorlesung (WS 19/20).
19.05.2020 Die reguläre Klausur im Herbst (SS20) findet voraussichtlich am Dienstag, den 6.10. um 10:30 Uhr statt.
15.05.2020 Die Nachhol-Klausur wird am Montag, den 29.06.2020 um 15:00 Uhr in der Schwarzwaldhalle stattfinden. Weitere Details folgen.
08.05.2020 Es wird ein Klausur-Nachholtermin Anfang Juli angeboten. Details werden baldigst bekanntgegeben. Alternativ kann die reguläre Klausur im Herbst besucht werden.
16.03.2020 Ob es einen Klausur-Nachholtermin z.B. Ende Juli geben wird, steht z.Zt. nicht fest. Alle jetzt Angemeldeten werden abgemeldet und sollten sich darauf einstellen, die Klausur zum nächsten regulären Termin im Herbst zu besuchen. Grundsätzlich gilt dabei Nachteilsausgleich: es wird z.B. die Maximalstudiendauer (9 Semester), wenn sie schon ausgereizt ist, um 1 Semester verlängert (vgl. Schreiben von VP Wanner vom 10.3.)

Eine mündliche statt schriftliche Prüfung schon vor Sommer bzw. Herbst wird es hingegen -- schon aus Gründen der Gleichbehandlung, und wiederum in Übereinstimmung mit dem Schreiben von VP Wanner -- nur in absoluten Ausnahmefällen geben; nämlich wenn nachweislich 1. Studienzeitverlängerung droht (also z.B. alle anderen Module nachweislich abgeschlossen sind), 2. die drohende Studienverlängerung nicht selbstverschuldet ist (also nicht z.B. durch "Klausurschieben" selbst verursacht). Nach BPO muss für solche Ausnahmen ein Antrag beim ISS gestellt werden. Interessenten wird empfohlen, vorher die Sprechstunde von Prof. Snelting aufzusuchen.
13.03.2020 Update: Gemäß der Entscheidung des Präsidiums sind alle Veranstaltungen am KIT, einschließlich Klausuren, ab 17.03. bis 19.04. abgesagt. Damit findet auch die PP-Klausur nicht statt. Da sich hiermit der Bedarf für eine öffentliche Fragestunde bis auf Weiteres erübrigt hat, entfällt diese Ersatzlos.
13.03.2020 Update: Gemäß Beschluss der Landesrektorenkonferenz wird die PP-Fragestunde am Montag nicht stattfinden. Wir planen, eine Ersatzveranstaltung stattfinden zu lassen, bei der Sie Fragen zum Stoff stellen können, aber in welcher Form (digital oder nicht) das sein wird, wissen wir noch nicht. Wir halten Sie auf dem Laufenden.
10.03.2020 Hinweis: Gemäß Empfehlung des Präsidiums zur aktuellen COVID-19-Epidemie findet die Klausur statt. Teilnehmer, die ein erhöhtes Corona-Infektions-Risiko haben (z.B. Rückkehrer aus Risikogebieten) werden gebeten, sich bitte umgehend von der Klausur abzumelden! Solchen Teilnehmern wird ein Nachteilsausgleich gewährt. Weitere Hinweise des KIT zum Coronavirus siehe https://www.kit.edu/kit/25911.php.
11.02.2020 Nun steht ein Übungsblatt mit Zusatzaufgaben (für die selbstverständlich keine Abgabe stattfindet) zur Vertiefung des Stoffs zur Verfügung.
03.02.2020 Am Montag, den 16.03.2020 findet um 14:00 Uhr im Raum -101 im Informatikbau (50.34) eine Fragestunde statt, in der Übungsleiter und Tutoren Fragen zum Vorlesungsstoff beantworten. Bitte schicken Sie wenn möglich schon vor dem Termin Ihre Fragen per E-Mail an die Übungsleiter (Sebastian Graf, Max Wagner) oder stellen Ihre Fragen im ILIAS-Forum, damit wir entsprechendes Material vorbereiten können.
03.02.2020 In den Übungen der letzten Vorlesungswoche werden
  • am Montag, den 03. Februar, ausschließlich das Thema Parallelprogrammierung, und
  • am Dienstag, den 04. Februar, ausschließlich das Thema Compiler/Bytecode
behandelt. Sie dürfen und sollten daher in dieser Woche zwei Übungstermine wahrnehmen.
31.01.2020 Das Tutorium von Paul Brinkmeier am nächsten Dienstag um 11:30 (Tut 6, am 04.02.) muss wegen einer fakultätsinternen Veranstaltung außerordentlich in den SR236 (also genau ein Stockwerk nach unten) verlegt werden.
16.10.2019 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 14.10.2019, über WebInscribe das Anmeldeportal der WiWis 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 18.10.2019, 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
16.10.2019 Erste Schritte mit Haskell [Übungsblatt 0]
17.10.2019 Rekursive Funktionen und Listen [Übungsblatt 1]
[Beispiellösung Blatt 1]
24.10.2019 Bindung, Kombinatoren, Patterns [Übungsblatt 2]
[Beispiellösung Blatt 2]
31.10.2019 Laziness, Streams [Übungsblatt 3]
[Beispiellösung Blatt 3]
07.11.2019 Datentypen, Typklassen [Übungsblatt 4]
[Beispiellösung Blatt 4]
14.11.2019 λ-Kalkül, Church-Kodierungen [Übungsblatt 5]
[Beispiellösung Blatt 5]
21.11.2019 Rekursionsoperatoren, Typprüfung [Übungsblatt 6]
[Beispielllösung Blatt 6]
28.11.2019 Prolog [Übungsblatt 7]
[Beispiellösung Blatt 7]
05.12.2019 Prolog, Cuts [Übungsblatt 8]
[Beispiellösung Blatt 8]
08.01.2020 Unifikation, Typinferenz, let-Polymorphismus [Übungsblatt 9]
[Beispiellösung Blatt 9]
19.12.2019 Weihnachtsaufgaben [Übungsblatt X][Benötigte Dateien und Frameworks]
[Beispiellösung Blatt X][Beispiellösung Musik-Aufgabe][Beispiellösung OSM-Aufgabe]
09.01.2020 Parallelprogrammierung Grundlagen, C, MPI [Übungsblatt 10][Code Aufgabe 2]
[Beispiellösung Blatt 10]
16.01.2020 Java [Übungsblatt 11][Code Aufgabe 2][Code Aufgabe 3]
[Beispiellösung Blatt 11][Beispiellösung Producer-Consumer]
23.01.2020 Aktormodell, Design by Contract
[Übungsblatt 12]
[Beispiellösung Blatt 12][Beispiellösung Philosophen]
30.01.2020 Codeerzeugung, syntaktische Analyse [Übungsblatt 13] [shortcut.j]
[Benötigte Dateien für Aufgabe 3]
[Beispiellösung Blatt 13]
[Beispiellösung Aufgabe 3]
10.02.2020 Zusatzaufgaben
Update 19.6.2020: Das Prädikat "subseq" aus der Aufgabe "Codes knacken" terminiert nun immer
[Zusatzblatt] [Beispiellösung Zusatzblatt]
[Beispiellösung λ-Interpreter] [Beispiellösung Code Merge-Sort] [Beispiellösung Code Merge-Sort] [Beispiellösung Code Merge-Sort] [Beispiellösung JSON Parser]
05.06.2020 Aufgabensammlung B-Seiten [Übungsblatt 15] [Beispiellösung Blatt 15]

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 21.10.2019 bzw. am 22.10.2019. 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 Lars König
2 Montags 11:30 Uhr SR 236 Lars König
3 Montags 14:00 Uhr SR 131 Daniel Krüger
4 Montags 17:30 Uhr SR 236 Paul Brinkmeier
5 Dienstags 09:45 Uhr SR 236 Samuel Teuber
6 Dienstags 11:30 Uhr SR 131 (am 04.02.2020 ausnahmsweise SR 236) Paul Brinkmeier
7 Dienstags 11:30 Uhr SR 301 Samuel Teuber
8 Dienstags 14:00 Uhr SR -119 Daniel Krüger

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

Ehemalige Tutoren
Paul Brinkmeier
Lars König
Daniel Krüger
Samuel Teuber
Wissenschaftliche Mitarbeiter
Sebastian Graf
Ehemalige Mitarbeiter
Dr.-Ing. Sebastian Ullrich