183.653 Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Diese Lehrveranstaltung ist in allen zugeordneten Curricula Teil der STEOP.
Diese Lehrveranstaltung ist in mindestens einem zugeordneten Curriculum Teil der STEOP.

2020S, VU, 2.0h, 3.0EC

Merkmale

  • Semesterwochenstunden: 2.0
  • ECTS: 3.0
  • Typ: VU Vorlesung mit Übung

Lernergebnisse

Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage, fortgeschrittene Prinzipien und Konzepte funktionaler Programmierung zu beschreiben und zu erläutern und diese in
industriellen Softwareprojekten praktisch anzuwenden. Dabei werden Programmieraufgaben kleiner bis mittlerer Größe und Komplexität mithilfe grundlegender und fortgeschrittener Konzepte und Prinzipien funktionaler Programmierung sachlich und fachlich angemessen gelöst.

 

Inhalt der Lehrveranstaltung

Teil 1

  • Überblick/Kurzwiederholung der Haskell2010 Grundsprache, wichtiger Spracherweiterungen und des Haskell "Ökosystems" (Compiler, Build-System, Software Repositories, Tools, Community)
  • Werkzeuge der Abstraktionen in Haskell: Funktionen, (Daten)typen, GADTs, Lazyness, Typklassen, Monaden & EDSLs
  • Metaprogrammierung mit TemplateHaskell, QuasiQuotation & Generics

Teil 2

  • Verständnis und Optimierung der Laufzeiteigenschaften (Zeit- & Speicherbedarf) von GHC-Haskell Programmen
  • Skalierbarkeit in Haskell: Parallelisierung & Nebenläufigkeit
  • CloudHaskell
  • Vereinbarkeit von Ein/Ausgabe, Seiteneffekte & Datenstrukturmutation mit "reiner" Funktionaler Programmierung
  • Netzwerkprogrammierung (Vom einfachen TCP/IP Server zu JSON-RPC/HTTP Web-Services)
  • Einbindung bestehender C-Libraries mittels Foreign Function Interface (FFI)

Teil 3

  • Design & Entwicklung von "High Assurance Software" mit Haskell
  • Ausnutzung des Typsystems für "correct-by-construction" Garantien durch Abbildung von Invarianten auf Typebene.
  •  SafeHaskell
  • Testen (und Verifizieren) von Haskell Programmen

Methoden

Während der Vorlesung werden Diskussionen als auch Fragen zu relevanten Themen ermutigt. Fragen bezüglich der (selbständigen) Umsetzung des Abgabgeprojekts werden je nach grad des allgemeinen Interesses entweder direkt in der Vorlesung besprochen oder im Anschluss dieser bzw. per Email.
Relevante Entwicklungswerkzeuge, Hilfsmittel und Bibliotheken werden laufend vorgestellt und live vorgeführt.

Prüfungsmodus

Prüfungsimmanent

Weitere Informationen

Bei Fragen wenden Sie sich bitte an teaching@inso.tuwien.ac.at.

Aufwandsschätzung (ECTS-Breakdown):

  • Vorbesprechung: 1,5 h
  • Vorlesungen (5 Einheiten à 2 Stunden): 7,5 h
  • Eigenrecherchen: 11 h
  • Übungsbeispiele: 45 h
  • Abschlußpräsentation (inkl. Vorbereitung): 10 h

--------------------------------------------------- 

Summe: 75 Stunden (3 ECTS)

Vortragende

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Mo.17:00 - 19:0002.03.2020 - 09.03.2020Hörsaal 14 Haskell
Mo.17:00 - 19:0027.04.2020 - 29.06.2020 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell - Einzeltermine
TagDatumZeitOrtBeschreibung
Mo.02.03.202017:00 - 19:00Hörsaal 14 Haskell
Mo.09.03.202017:00 - 19:00Hörsaal 14 Haskell
Mo.27.04.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.04.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.11.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.18.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.25.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.08.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.15.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.22.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mo.29.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering

Leistungsnachweis

Es gibt einen Vorlesungs- und einen Übungsteil, wobei die Bewertung aufgrund eines in Kleingruppen selbständig durchgeführten Softwareprojekts (inkl. kurzer Abschluspräsentation am Ende des Semesters) basiert.

LVA-Anmeldung

Von Bis Abmeldung bis
12.02.2020 20:00 26.04.2020 08:00

Curricula

Literatur

Vorkenntnisse

Um dieser LVA leichter folgen zu können, werden Grundkenntnisse der Haskell Programmiersprache dringend empfohlen, die beispielsweise durch Besuch der VU "Funktionale Programmierung" oder alternativ durch Selbststudium der Literaturempfehlungen erlangt werden können.

Vorausgehende Lehrveranstaltungen

Begleitende Lehrveranstaltungen

Sprache

Deutsch