Skip to main content

Modulbeschreibung - Functional Program Design

Nummer
fprod
Leitung Daniel Kröni, +41 56 202 78 17, ZGFuaWVsLmtyb2VuaUBmaG53LmNo
ECTS 3.0
Anspruchsniveau intermediate
Inhaltsübersicht Funktionale Programmierkonzepte spielen eine zentrale Rolle in moderner Software. In der Webentwicklung, reaktiven Programmierung (Asynchronität, Streams), Bigdata Processing (Map-Reduce) aber auch für die Blockchain sind es die Ideen der deklarativen, funktionalen Programmierung, die die aktuellen Entwicklungen antreiben.
Dieses Modul rückt die Anwendung funktionaler Prinzipien zur Strukturierung ganzer Applikationen ins Zentrum.
Inhalt

  • Immutability, Purity und explizite Effekte (Reader, Writer, State, IO)
  • Funktionale Entwurfsmuster (Monoid, Functor, Applicative, Monad)
  • Domänenspezifische Sprachen (Embedded und external DSLs)
  • Korrektheit durch Typen (Generalized Algebraic Datatypes), Testen (Quickcheck) und Verifizieren (Equational Reasoning)
  • Funktionale, deterministische und verifizierbare Buildsysteme

Lernziele

  • Die Studierenden können funktionale Konzepte bei der Gestaltung und Umsetzung von Softwaresystemen anwenden.
  • Sie können Abstraktionen zum disziplinierten Umgang mit veränderbarem Zustand einsetzen.
  • Sie können domänenspezifische Sprachen entwerfen um damit Lösungen in der Terminologie des Fachgebiets zu formulieren.
  • Sie können verschiedene Konzepte zur Garantie der Korrektheit anwenden und deren Kosten/Nutzen abwägen.

Empfohlene Vorkenntnisse

  • Functional Programming (fprog)

Leistungsbewertung Erfahrungsnoten
Zusatzinformationen Während das Modul Functional Programming (fprog) das funktionale Programmieren im Kleinen behandelt, fokussiert dieses Modul auf die Strukturierung ganzer Applikationen.
Diese Seite teilen: