Nr. | Art | Termine | Raum | Veranstalter |
---|---|---|---|---|
080038 | V4 | Mo 10:15 - 11:45 | CAP 3 - HS. 2 | Hanus |
Di 14:15 - 15:45 | CAP 3 - HS. 2 | |||
080037 | Ü2 | Mi 10-12/16-18, Do 8-10, 10-12, 14-16 | Prott, Bunkenburg, Teegen | |
080017 | PÜ1 | 28.2. - 11.3.2022 | HRS3 - R.501-503 | Teegen |
Die Vorlesung beginnt am Montag, 25.10.2021, 10:15 Uhr.
Alle Teilnehmer müssen dieses Modul in der StudiDB belegen, damit sie nachher eine Prüfung ablegen können.
Studierende im 1-Fach-Bachelorstudiengang Informatik, im 2-Fach-Masterstudiengang Informatik, im Masterstudiengang Wirtschaftsinformatik sowie Studierende mit Nebenfach Informatik
Dieses Modul beinhaltet auch das Modul Inf-FPKonz (Fortgeschrittene Programmierkonzepte). In diesem Fall muss der erste Teil zur nebenläufigen und verteilten Programmierung nicht gehört werden, sondern das Modul beginnt mit der funktionalen Programmierung am Montag, 8.11.2021!
Dieses Modul beinhaltet auch das Modul Inf-EinfFP (Einführung in die Funktionale Programmierung). In diesem Fall muss der erste Teil zur nebenläufigen und verteilten Programmierung ebenfalls nicht gehört werden, sondern das Modul beginnt mit der funktionalen Programmierung am Montag, 8.11.2021! Ebenso muss dann der Teil zur logischen Programmierung nicht gehört werden, sodass der Vorlesungsteil Anfang Januar endet. Die Klausur findet aber erst nach dem Praktikum (s.u.) statt.
Solide Programmierkenntnisse einschließlich in der objektorientierten Programmierung mit Java, wie sie beispielsweise im Grundmodul Programmierung erworben werden können.
In dieser Vorlesung werden forgeschrittene Programmierkonzepte, die über die in den ersten Studiensemestern erlernte Programmierung hinausgehen, vorgestellt. Dabei wird anhand verschiedener Programmiersprachen der Umgang mit den Konzepten der wichtigsten Programmierparadigmen vermittelt. Konzepte zur nebenläufigen und verteilten Programmierung werden mit der Sprache Java vorgestellt und geübt. Moderne funktionale Programmierungtechniken werden am Beispiel der Sprache Haskell gezeigt. Logische und Constraint-orientierte Programmierung wird in der Sprache Prolog vermittelt.
Ein Schwerpunkt der Vorlesung bildet die funktionale Programmierung. Dies liegt daran, dass funktionale Programmiertechniken und Sprachkonstrukte zu besser strukturierten Programmen führen und daher auch in zum Teil eingeschränkter Form in vielen modernen Programmiersprachen zu finden sind. Dies ist in einem kürzlich erschienen Artikel in der Zeitschrift CACM genauer erläutert. Allgemein gilt, dass die Verwendung funktionaler Programmierkonzepte zu kürzeren, besser strukturierten Programmen und insbesondere durch fortgeschrittene Typkonzepte zu zuverlässigeren Softwaresystemen führt.
Funktionale Programmiersprachen sind nicht nur vom akademischen Interesse, sondern sie werden auch in der Praxis immer stärker eingesetzt. Zum Beispiel verwendet Jane Street Capital, eine Finanzhandelsfirma mit Vertretungen in New York, London und Hong Kong, die funktionale Sprache OCaml für ihre Anwendungen (dazu gibt es auch einen Blog). Die Firma Galois mit Hauptsitz in Portland (Oregon, USA) verwendet funktionale Programmiersprachen und -konzepte zur Entwicklung sicherheitskritischer Systeme.
Warum gerade im Finanzbereich funktionale Programmierung eingesetzt wird, liegt auch daran, dass Fehler in einer Software existenzielle Probleme verursachen kann, wie man am Fall von Fall Knight Capital sehen kann.
Hier sind noch ein paar weitere Berichte über den industriellen Einsatz funktionaler Programmierung:
Forscher bei Microsoft fordern in einem Artikel der Zeitschrift CACM, dass Informatikstudierende so früh wie möglich funktionale Programmiersprachen erlernen sollten. Und es gibt natürlich auch Jobs für Haskell-Programmierer.
Bestandteil des Moduls Inf-FortProgP ist ein Praktikum (Teilnehmer:innen anderer Module, wie Inf-FortProg8, Inf-EinfFP oder Inf-FPKonz, müssen am Praktikum nicht teilnehmen, können es aber auf eigenen Wunsch). Das Praktikum findet nach der Vorlesung und dem ersten Prüfungszeitraum in der Zeit vom 28.2.-11.3.2022 statt. Da die erfolgreiche Teilnahme am Praktikum eine Zulassungsvoraussetzung zur Klausur für das Modul Inf-FortProgP ist, besteht für dieses Praktikum prinzipiell Anwesenheitspflicht. Für das Praktikum ist eine separate Anmeldung erforderlich. Informationen dazu werden in der Vorbesprechung zum Praktikum mitgeteilt. Die Vorbesprechung und Einführung zum Praktikum findet am 28.2.2022 statt.
Am Ende der Vorlesung findet nach dem Praktikum eine schriftliche Abschlussprüfung statt. Voraussetzung zur Zulassung zur Klausur ist die regelmäßige Bearbeitung der Übungsaufgaben (s.u.) und, für das Modul Inf-FortProgP, die erfolgreiche Teilnahme am Praktikum.
Die erste Modulprüfung findet am Mittwoch, 16. März 2021, von 10:00 bis 13:00 Uhr (genauere Zeiten folgen noch) als Online-Prüfung statt. Die zweite Modulprüfung findet am Mittwoch, 6. April 2022, von 10:00 bis 13:00 Uhr als Online-Prüfung statt. Eine vorherige Anmeldung in der StudiDB ist zur Teilnahme erforderlich.
Es gibt ein Skript zur Vorlesung (im PDF-Format, nur innerhalb der CAU Kiel zugreifbar!), welches parallel zur Vorlesung überarbeitet wird. Dieses Skript ist kein Lehrbuch, aber es beinhaltet den ungefähren Vorlesungsverlauf. Daher sollte neben dem Lesen des Skripts auch immer die Vorlesung besucht werden, um über den aktuellen Stand informiert zu sein!
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 Abgabe der Übungen erfolgt über die Moodle-Lernplattform.
Die in der Vorlesung behandelten Programmiersprachen sind auf den Institutsrechnern installiert und auch im Internet sind freie Implementierungen von Java, Haskell und Prolog verfügbar.
Anmerkung zur Verwendung von Prolog:
Zur Lösung der Übungsaufgaben kann man das frei verfügbare
SWI-Prolog-System
verwenden. Um einen leichteren Einstieg in Prolog zu haben,
sollte man in dieser Vorlesung zunächst
eine Erweiterung für SWI-Prolog verwenden, 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):
bin
-Verzeichnis, das im eigenen Pfad liegt.
Dann kann man durch das Kommando fortprog-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.
swipl -q -s fortprog
.
Nach diesem Start von SWI-Prolog kann man wie üblich mit
[myprog].
sein eigenes Programm 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, was aber am Anfang sowieso nicht
verwendet wird.