Module


General information
Funktionale Programmierung
Functional Programming
MI136
Lee, Michael (michael.lee@haw-kiel.de)
Lee, Michael (michael.lee@haw-kiel.de)
Wintersemester 2019/20
1 Semester
Englisch
Curricular relevance (according to examination regulations)
Study Subject Study Specialization Study Focus Module type Semester
M.Sc. - MIE - Information Engineering (PO 2022, V3) Business IT-Management Wahlmodul
M.Sc. - MIE - Information Engineering (PO 2022, V3) Information Technology and Systems Wahlmodul
M.Sc. - MIE - Information Engineering (PO 2022, V3) Intelligent Systems Wahlmodul
M.Sc. - MIE - Information Engineering (PO 2022, V3) IT Security Wahlmodul

Qualification outcome
Areas of Competence: Knowledge and Understanding; Use, application and generation of knowledge; Communication and cooperation; Scientific self-understanding / professionalism.
- principles of functional programming. Differences to other programming paradigms
- differences to other programming paradigms
- usage of the langauges elm and haskel
- understanding of the lambda calculus
- separation of side effects / handling of side effects in funtional languages
In a semster project students will
- create web frontends using functional programming
- handle side effects for the purpose of user interaction and backend communication
- connect pure functional code with non pure code in the ECMAScript browser environment
Students will work in groups of 4 where they will
- have to communicate and discuss and assign tasks
- use source code management to handle simultaneously working on the same code base
- work as a team on a project presentation which has to involve all parts of each group
Being focused on the product (semester project) students will tackle the same challenges they would face in a commercial software product project.

As part of this students will have to without supervision
- face tricky problems that require intense analysis and understanding
- acquire knowledge required specific problems

These responsibilities are essential aspects of the self-concept of any tech professional.
Content information
Introduction to functional programming.

In this class students will learn modern functional programming in practice.

- the elm language and runtime will be introduced to write modern web applications
- Haskell will be introduced to learn some of its advanced concepts
- theoretical background will be provided through the lambda calculus

As a result of this class students will have written their own web app using functional methodology.
elm tutorial:
https://www.elm-tutorial.org/en/

learning Haskell:
http://learnyouahaskell.com/

lecture notes on the lambda calculus:
https://www.mscs.dal.ca/~selinger/papers/lambdanotes.pdf
Teaching formats of the courses
Teaching format SWS
Projekt 2
Lehrvortrag 2
Workload
4 SWS
5,0 Credits
48 Hours
102 Hours
Module Examination
Method of Examination Duration Weighting wird angerechnet gem. § 11 Absatz 2 PVO Graded Remark
Projektbezogene Arbeiten 50 %
Klausur 90 Minutes 50 %
Miscellaneous
Basic knowledge of web development required. Students need to be able to
- create their own HTML/CSS interfaces
- write a basic REST or GraphQL backend
- use a document or relational DB

Knowledge of React/Redux helpful but not required.
- lab attendance is mandatory
- projects will be done in groups of 4 (except for special circumstances)
- there will be a written exam prior to the project presentations