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.

2021S, VU, 2.0h, 3.0EC
TUWEL

Properties

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

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
Mon17:00 - 19:0001.03.2021 - 28.06.2021 Distance Learning via Zoom (LIVE)183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Wed17:00 - 19:0010.03.2021 Distance Learning via Zoom (LIVE)Vorbesprechung
Methodical, industrial Software-Engineering using the Haskell functional language - Single appointments
DayDateTimeLocationDescription
Mon01.03.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon08.03.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Wed10.03.202117:00 - 19:00 Distance Learning via ZoomVorbesprechung
Mon15.03.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon22.03.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon12.04.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon19.04.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon26.04.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon03.05.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon10.05.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon17.05.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon31.05.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon07.06.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon14.06.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon21.06.202117:00 - 19:00 Distance Learning via Zoom183.653: Methodisches, industrielles Software-Engineering mit Funktionalen Sprachen am Fallbeispiel Haskell
Mon28.06.202117:00 - 19:00 Distance Learning via Zoom183.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
17.02.2021 20:00 02.05.2021 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