Functional Program Design

    Nummer
    fprod
    Leitung
    Daniel Kröni, +41 56 202 78 17, daniel.kroeni@fhnw.ch
    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.