NummerfprodLeitungDaniel Kröni, +41 56 202 78 17, daniel.kroeni@fhnw.chECTS3.0AnspruchsniveauintermediateInhaltsübersichtFunktionale 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)
LeistungsbewertungErfahrungsnotenZusatzinformationenWährend das Modul Functional Programming (fprog) das funktionale Programmieren im Kleinen behandelt, fokussiert dieses Modul auf die Strukturierung ganzer Applikationen.