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

2023S, VU, 2.0h, 3.0EC

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
Mon17:00 - 19:0006.03.2023 - 26.06.2023Sem.R. DB gelb 09 183.653
Methodical, industrial Software-Engineering using the Haskell functional language - Single appointments
DayDateTimeLocationDescription
Mon06.03.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon13.03.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon20.03.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon27.03.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon17.04.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon24.04.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon08.05.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon15.05.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon22.05.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon05.06.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon12.06.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon19.06.202317:00 - 19:00Sem.R. DB gelb 09 183.653
Mon26.06.202317:00 - 19:00Sem.R. DB gelb 09 183.653

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
15.02.2023 20:00 30.04.2023 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