# 2IPH0 - *Functional Programming*

## 2021-2022 (Q1, timeslot B: Mon 5-8, Wed 1-4, Thu 9-10)

- The goal of the course in 2021-2022 remains the same,
but the content will be restructured somewhat w.r.t. previous years.
- Participants: See Canvas for details.
- The evening hours may be used for interim tests.

# Objectives

The goal of this course is
to acquaint students with the declarative programming paradigm,
mainly through pure and lazy functional programming
with leading roles for types, generalization, and calculation.
The course is to have theoretical and practical elements,
of which the latter will be using Haskell.

## Content

- Derivation and construction of functional programs, mainly by calculation.
- Recursion, inductive types, recursion schemes, monads, streams and
some theoretical elements of lambda calculus and type theory (polymorphic types).

## Prior knowledge

- Logic, set theory (incl. the notions of relation and function), formal proofs; preferably also the calcuational proof style
- Recursion, e.g. as explained in Sections 1 through 5 of
*A Master Class on Recursion*
- Object-oriented programming and design patterns

# Preparation

©2021, Tom Verhoeff (TU/e)

Feedback about this page is welcome