Fortgeschrittene Programmierung
WS 19/20
Prof. Dr. Michael Hanus, Niels Bunkenburg und Sandra Dylus
Aktuelles
Termine
Vorlesung (vom 21.10.2019 bis zum 05.02.2020)
- Montag, 10:15 - 11:45 Uhr in CAP3 - Hörsaal 2
- Dienstag, 14:15 - 15:45 Uhr in CAP3 - Hörsaal 2
Übungen (vom 21.10.2018 bis zum 10.02.2019)
- Mi, 10:15 - 11:45, LMS2 - R.Ü1
- Mi, 16:15 - 17:45, LMS2 - R.Ü3
- Do, 8:30 - 10:00, LMS2 - R.Ü3
- Do, 10:15 - 11:45, LMS2 - R.Ü3
- Do, 10:15 - 11:45, WSP3 - Seminarraum 2
Rechnerzeit (vom 21.10.2019 bis zum 05.02.2020)
- Fr, 12:00 - 14:00, HRS3 - R.105a
Praktikum (vom 17.02.2020 bis zum 28.02.2020)
- Klausur (1. Prüfungszeitraum, 4.3.2020, TBD)
- Klausur (2. Prüfungszeitraum, 8.9.2020, 16:00 - 19:00, CAP2 FPH) Bitte beachten Sie die Hinweise zur Präsenzprüfung!
Weitere organisatorische Informationen sowie eine Literaturliste finden Sie im UnivIS oder auf der Veranstaltungsseite des Lehrstuhls.
Vorlesung
Zur Vorlesung existiert ein Skript (nur innerhalb der CAU abrufbar), welches parallel zur Vorlesung überarbeitet wird. Dieses Skript beinhaltet den ungefähren Vorlesungsverlauf, weswegen neben dem Lesen des Skripts auch immer die Vorlesung besucht werden sollte, um über den aktuellen Stand informiert zu sein.
Die in der Vorlesung behandelten Programmiersprachen sind auf den Institutsrechnern vorinstalliert. Im Internet sind auch freie Implementierungen von Haskell, Java sowie Prolog verfügbar.
Auf der Seite der Vorlesung können Sie sich weitere Materialien wie die in der Vorlesung entwickelten Programme herunterladen.
Hinweise zur Verwendung von Haskell
Für die funktionale Programmierung mit Haskell verwenden wir in den ersten Wochen eine vereinfachte Variante des GHCi, den FortProg-GHCi.
Anforderungen
Zur Installation des FortProg-GHCi benötigen Sie den
Glasgow Haskell Compiler (GHC) in Version 8.0
oder neuer.
Außerdem benötigen Sie das Haskell Build System
Cabal in Version 1.10 oder
aktueller.
Die Installation wird durch Haskell Platform
vereinfacht, da dort bereits alle notwendigen Tools enthalten sind und der Umgebung
hinzugefügt werden.
Stellen Sie sicher, dass sich die Executables ghci
und cabal
im Pfad
befinden, z.B. durch
1
2
3
4
5
> ghci --version
The Glorious Glasgow Haskell Compilation System, version 8.6.1
> cabal --version
cabal-install version 2.4.0.0
compiled using version 2.4.0.1 of the Cabal library
Installation
Update:
Version 1.3 des FortProg-GHCi verfügbar, die Cabal-3.0.0.0 unterstützt (relevant für die meisten MacOS-Nutzer)
Linux/MacOS: Laden Sie sich das Bash-Skript fortprog-ghci herunter und
kopieren Sie es in ein bin
-Verzeichnis, das im eigenen Pfad liegt, und machen
es ausführbar.
Nun können Sie den FortProg-GHCi mit dem Befehl fortprog-ghci
starten.
Windows: Laden Sie sich das Batch-Skript fortprog-ghci.bat herunter. Nun können Sie den FortProg-GHCi über das Skript beispielsweise per Doppelklick ausführen.
Verwendung
Bitte beachten Sie: Zur Verwendung von FortProg-GHCi muss jedem Haskell-Modul ein expliziter Import der SimplePrelude
hinzugefügt werden.
-- explicit import of SimplePrelude
import SimplePrelude
-- Compute the square of a given number
square :: Int -> Int
square x = x * x
Weitere Hinweise zur Verwendung von Haskell
Sie sind dazu angehalten, den folgenden Style-Guide beim Entwickeln von Haskell-Programmen zu befolgen.
Der in der Vorlesung verwendete Haskell Mode für den Editor Emacs kann recht einfach installiert werden, wobei man natürlich den Text-Editor Emacs schon kennen sollte.
Hinweise zur Verwendung von Prolog
Um einen leichteren Einstieg in Prolog zu gewährleisten,
wird in der Vorlesung zunächst eine Erweiterung für SWI-Prolog verwendet,
die eine bessere Suchstrategie implementiert.
Hierzu gibt es zwei Möglichkeiten
(unter der Voraussetzung, das SWI-Prolog installiert ist und durch den
Aufruf swipl
gestartet werden kann):
-
Für Unix/Linux: Man kopiere dieses Bash-Skript in ein
bin
-Verzeichnis, das im eigenen Pfad liegt. Dann kann man durch das Kommandofortprog-swipl
das erweiterte SWI-Prolog-System aufrufen. Alternativ kann man das Bash-Skript auch in das Verzeichnis legen, wo die Prolog-Programme sind, und dann das SWI-Prolog-System mit dem Kommando./fortprog-swipl
aufrufen. -
Für andere Systeme: Man kopiere dieses Prolog-Programm in das Verzeichnis, wo sich die Prolog-Programme befinden, und starte das SWI-Prolog-System mit dem Kommando
swipl -q -s fortprog
.
Nach dem wie oben beschriebenen Start von SWI-Prolog kann man sein eigenes Programm wie gewohnt mit [myprog].
laden
und ausprobieren.
Zu beachten ist, dass bei Benutzung dieser Erweiterung
die Prolog-Programme keine Negation oder Cuts enthalten und auch
keine anderen Module importieren dürfen, was aber am Anfang ohnehin nicht
der Fall sein wird.
Übungen
Bitte tragen Sie sich zunächst in der StudiDB ein.
Zur Teilnahme an der Modulprüfung müssen die Übungsaufgaben regelmäßig und sinnvoll bearbeitet werden. Hierzu wird für jede Aufgabe festgehalten, ob diese sinnvoll bearbeitet wurde (“Sinnpunkte”). Für eine Zulassung zur Klausur müssen in jedem der drei Bereiche nebenläufige/verteile Programmierung, funktionale Programmierung und logische Programmierung mindestens 50% der Sinnpunkte erreicht werden.
Die Bearbeitung der Übungsaufgaben erfolgt in Zweiergruppen, Einzelabgaben sind nach Möglichkeit zu vermeiden. Ihre Abgaben werden korrigiert und Musterlösungen nach der Abgabefrist bereitgestellt.
Rechnerzeit
In diesem Semester wird wöchentlich eine Rechnerzeit angeboten, in der studentische Hilfskräfte bereitstehen, um Ihnen bei der Bearbeitung der Übungsaufgabe zu helfen und ggf. Fragen zu beantworten (Termine siehe oben).
Klausur
Als Hilfsmittel ist in der Klausur ein beidseitig handschriftlich beschriebenes Blatt erlaubt.