183.653 Methodical, industrial Software-Engineering using the Haskell functional language
This course is in all assigned curricula part of the STEOP.
This course is in at least 1 assigned curriculum part of the STEOP.

2022S, VU, 2.0h, 3.0EC
TUWEL

Properties

  • Semester hours: 2.0
  • Credits: 3.0
  • Type: VU Lecture and Exercise
  • Format: Presence

Learning outcomes

After successful completion of the course, students are able to describe and explain advanced principles and concepts of functional programming and to use them in industrial software projects in practice. Programming tasks of small to medium size and complexity are solved with the help of basic and advanced concepts and principles of functional programming.

Subject of course

Part 1

  • Overview/short review of the Haskell2010 basic language, important language extensions and the Haskell "ecosystem" (compiler, build system, software repositories, tools, community)
  • Tools of the abstractions in Haskell: functions, (data) types, GADTs, lazyness, type classes, monads & EDSLs
  • Metaprogramming with TemplateHaskell, QuasiQuotation & Generics

Part 2

  • Understanding and optimization of the runtime characteristics (time & memory requirements) of GHC-Haskell programs
  • Scalability in Haskell: parallelization & concurrency
  • CloudHaskell
  • Compatibility of input/output, side effects & data structure mutation with "pure" functional programming
  • Network programming (From simple TCP/IP server to JSON-RPC/HTTP web services)
  • Integration of existing C libraries via Foreign Function Interface (FFI)

Part 3

  • Design & development of "High Assurance Software" with Haskell
  • Utilization of the type system for "correct-by-construction" guarantees by mapping invariants at type level.
  • SafeHaskell
  • Testing (and verifying) Haskell programs

Teaching methods

During the lecture discussions as well as questions on relevant topics are encouraged. Questions concerning the (independent) implementation of the submission project will be discussed either directly in the lecture or afterwards or via email, depending on the degree of general interest.
Relevant development tools, aids and libraries will be continuously presented and demonstrated live.

Mode of examination

Immanent

Additional information

Effort for the student (ECTS-Breakdown):

Preliminary talk: 1,5 h
Lectures: 7,5 h
Self Study: 11 h
Exercises: 45 h
Final Presentation: 10 h

Total: 75 hours (3 ECTS)

Lecturers

Institute

Course dates

DayTimeDateLocationDescription
Wed17:00 - 19:0002.03.2022EI 7 Hörsaal - ETIT Vorbesprechung
Mon17:00 - 19:0007.03.2022 - 27.06.2022Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Methodical, industrial Software-Engineering using the Haskell functional language - Single appointments
DayDateTimeLocationDescription
Wed02.03.202217:00 - 19:00EI 7 Hörsaal - ETIT Vorbesprechung
Mon07.03.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon14.03.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon21.03.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon28.03.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon04.04.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon25.04.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon02.05.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon09.05.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon16.05.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon23.05.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon30.05.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon13.06.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon20.06.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon27.06.202217:00 - 19:00Hörsaal 14 183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell

Examination modalities

There is a lecture and an exercise part, whereby the assessment is based on a software project carried out independently in small groups (including a short final presentation at the end of the semester).

Course registration

Begin End Deregistration end
16.02.2022 20:00 01.05.2022 08:00

Curricula

Literature

Previous knowledge

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.

Preceding courses

Accompanying courses

Language

German