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.

2020S, VU, 2.0h, 3.0EC
TUWEL

Properties

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

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:0002.03.2020 - 09.03.2020Hörsaal 14 Haskell
Mon17:00 - 19:0027.04.2020 - 29.06.2020 Distance Learning via zoom (LIVE)Methodisches, industrielles Software-Engineering
Methodical, industrial Software-Engineering using the Haskell functional language - Single appointments
DayDateTimeLocationDescription
Mon02.03.202017:00 - 19:00Hörsaal 14 Haskell
Mon09.03.202017:00 - 19:00Hörsaal 14 Haskell
Mon27.04.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon04.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon11.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon18.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon25.05.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon08.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon15.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon22.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering
Mon29.06.202017:00 - 19:00 Distance Learning via zoomMethodisches, industrielles Software-Engineering

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
12.02.2020 20:00 26.04.2020 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