Database Research Group

WSI – Database Systems Research Group

Functional Programming


News
  • Oct 13, 2021 — Corona: Anmeldung zur Teilnahme an Präsenzlehrveranstaltungen

    Um an Vorlesungs- und Übungsterminen teilnehmen zu können, ist eine vorherige Anmeldung verpflichtend. Die Anmeldung erfolgt über einen Ilias-Kurs:

    Vorlesungs- und Übungsanmeldung

    Wichtig: Die Anmeldung findet pro Termin statt und ist somit jede Woche erneut erforderlich. Die Möglichkeit zur Anmeldung wird jeweils 6 Tage vor dem Termin freigeschaltet und 10h vor dem Termin wieder gesperrt.

    Nachweis von 3G

    Für alle Präsenzlehrveranstaltungen gilt 3G, das heißt, an einer solchen Lehrveranstaltung darf nur teilnehmen, wer geimpft, genesen oder negativ auf CoViD-19 getestet ist. Personen, die nicht geimpft und nicht genesen sind, können durch einen negativen Antigen-Schnelltest oder einen negativen PCR-Test nachweisen, dass sie nicht an CoViD-19 erkrankt sind. Die entsprechenden Testergebnisse von Antigen-Schnelltests müssen tagesaktuell sein, das heißt, der Test darf zum Zeitpunkt der Lehrveranstaltung maximal 24 Stunden zurückliegen; PCR-Tests dürfen nicht älter als 48 Stunden sein.

    Bitte habt immer folgendes dabei:

    • Eine medizinische Maske, die ihr während der Vorlesung tragt, sofern ihr von den Sitznachbarn nicht mindestens 1,5 m Abstand halten könnt.
    • Einen Nachweis zur Einhaltung der 3G-Regeln, also:
      - einen Impfnachweis (per Corona-Warn- bzw. CovPass-App o.ä.) oder
      - ein negatives Testergebnis eines Antigen-Schnelltest (nicht älter als 24 Stunden) bzw. einen negativen PCR-Test (nicht älter als 48 Stunden) oder
      - einen Nachweis dafür, dass ihr von CoViD-19 genesen seid.

    Diese Vorgaben sind eine Kurzfassung der Richtlinien der Universität, die ihr hier im Detail nachlesen könnt: SARS-CoV-2 Hinweise für Studierende
    Denis Hirn


Numbers are values. Strings are values. Booleans are values. In Functional Programming, functions simply are simply values as well. This view on programming leads to an elegant and expressive programming paradigm which we will investigate in this course. During the course, we will use the programming language Haskell. The majority of the concepts we will consider applies in other (functional) languages as well.

Participants are not expected to be fluent in Haskell from the beginning. We will spend the first three weeks of the semester on a Haskell Ramp-Up. Things will progress rather fast, though. The majority of the semester will be used for the good stuff: intermediate and advanced topics, of which there are plenty.

Syllabus

This course will provide an introduction to Haskell (first half) and then touch on intermediate-level topics. We will discuss (topics in parentheses will be addressed if we'll find the time):

  • Values and types
  • Function definitions (guards, pattern matching)
  • List processing
  • Algebraic data types
  • Type classes
  • Domain-specific languages (DSLs; shallow and deep embedding)
  • Laziness
  • Functors. Applicative Functors, Monads
  • (Monadic parsing)
  • (Applications: breadth-first search, path finding)

Forum

Discussion around this course and Haskell in general are encouraged in the forum. ⚠️ If you want to participate in the exercises, you absolutely need to register in the forum, as we use it to create/administer student accounts in this course. Thus, please stop by regularly, have a look, and say "hi".

Tutorial and Exercises

  • We will provide weekly exercise sheets (hand-out: TBD, hand-in by TBD).

  • You are admitted to the final exam if you score at least ⅔ of the overall exercise points.

  • Scoring well in the exercises leads to bonus points in the final exam.

Haskell (GHC, Haskell Platform)

The course will use the de-facto standard Haskell compiler GHC and its interactive variant (also known as read-eval-print loop or REPL) GHCi. We strongly suggest you download and install the so-called Haskell Platform which includes both GHC and GHCi (and more). Available for virtually all operating systems, including Windows, Linux, macOS. Make sure to install the recent version.

Literature

The following introductory books and courses on Haskell are recommend reading — some of these are available online:

We will refer to additional material for the individual topics during the semester.


Slides
NrChapterDownload
1

Slides im GitHub-Repository der Vorlesung FP

com/DBatUTuebingen/fp-ws2122/tree/master/slides
Additional material (code, data)
NrFileDownload
1Materialien im GitHub-Repository der Vorlesung FP
com/DBatUTuebingen/fp-ws2122/tree/master/material