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.

2019S, VU, 2.0h, 3.0EC

Merkmale

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

Ziele der Lehrveranstaltung

Der heute industriell weit verbreitete Ansatz der objektorientierten (OO) Programmierung sowie des OO-Programmierstils ist zwar durchaus wirtschaftlich erfolgreich, jedoch lassen sich damit einige praktisch sehr relevante Problemstellungen bzw. Algorithmen nicht besonders "natürlich" darauf abbilden. Darüberhinaus haben sich die gängigen Rechnerarchitekturen seit dem Design der populären OO-Sprachen vielfältig weiterentwickelt (Multicore-Prozessoren, Speicherzugriffslatenzen, Cloud-Computing, usw.) und stellen nun andere Anforderungen und Randbedingungen an die Abstraktionen der Implementationssprache. Aus diesen Gründen haben in den letzten Jahren Funktionale Programmiersprachen (FP) wie Haskell viel Aufwind bekommen, da diese u.a. auch dafür entworfen wurden, auf die Programmierung moderner Rechnerarchitekturen besser zugeschnitten zu sein. Gerade in kritischen, großen Systemlösungen kommen hier inzwischen diese Ansätze vermehrt zur Anwendung.

Diese LVA soll Studierenden sowohl die nötigen Konzepte vermitteln, um große, praxisrelevante Softwareprojekte mit einer FP-Sprache wie Haskell umsetzen zu können, als auch mit den Stärken (und Schwächen) von FP-Sprachen gegenüber traditionellen OO-Sprachen vertraut machen, um bei konkreten, größeren Softwareprojekten von Fall zu Fall abwägen zu können, welches Modellierungsparadigma besser zur Umsetzung geeignet ist.

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

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:30 - 19:0004.03.2019 - 27.05.2019Hörsaal 14 Haskell
Mo.17:30 - 19:0003.06.2019Hörsaal 14 Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mo.17:30 - 19:0017.06.2019 - 24.06.2019Hörsaal 14 Haskell
Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell - Einzeltermine
TagDatumZeitOrtBeschreibung
Mo.04.03.201917:30 - 19:00Hörsaal 14 Haskell
Mo.11.03.201917:30 - 19:00Hörsaal 14 Haskell
Mo.18.03.201917:30 - 19:00Hörsaal 14 Haskell
Mo.25.03.201917:30 - 19:00Hörsaal 14 Haskell
Mo.01.04.201917:30 - 19:00Hörsaal 14 Haskell
Mo.08.04.201917:30 - 19:00Hörsaal 14 Haskell
Mo.29.04.201917:30 - 19:00Hörsaal 14 Haskell
Mo.06.05.201917:30 - 19:00Hörsaal 14 Haskell
Mo.13.05.201917:30 - 19:00Hörsaal 14 Haskell
Mo.20.05.201917:30 - 19:00Hörsaal 14 Haskell
Mo.27.05.201917:30 - 19:00Hörsaal 14 Haskell
Mo.03.06.201917:30 - 19:00Hörsaal 14 Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mo.17.06.201917:30 - 19:00Hörsaal 14 Haskell
Mo.24.06.201917:30 - 19:00Hörsaal 14 Haskell

Leistungsnachweis

Die Beurteilung erfolgt aufgrund von in Kleingruppen umzusetzender, selbstwählbarer Softwareprojekte, die die Möglichkeit geben sollen, die vermittelten Konzepte praktisch anzuwenden, und schliesslich am Ende des Semesters mittels kurzer Präsentation vorzustellen sind.

LVA-Anmeldung

Von Bis Abmeldung bis
13.02.2019 20:00 28.04.2019 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