Functional Programming
Personal
Lecture | Prof. Dr. Peter Thiemann | thiemann@info... |
Exercise | Gabriel Radanne | radanne@info... |
News
2019-04-24 | Github page |
2019-04-20 | Homepage online |
2019-07-03 | Project available |
Lecture Materials
Note: "Recordings" are unedited screen recordings of the lecture.
Exercises
Date of issue | Exercise Session | Solutions | |
---|---|---|---|
2019-05-06 | 2019-05-06 | Exercise 0 (Installation) | |
2019-05-06 | 2019-05-06 | Exercise 1 (First steps) | |
2019-05-06 | 2019-05-22 | Exercise 2 (Recursion, Datatypes) Tracks.hs | Exercise2.hs |
2019-05-19 | 2019-05-29 | Exercise 3 (Datatypes, Typeclasses) | Exercise3.hs Pics.hs |
2019-05-29 | 2019-06-05 | Exercise 4 (High order functions, Functional data structures) | Exercise4.hs Trie.hs TrieMap.hs |
2019-06-05 | 2019-06-19 | Exercise 5 (IO, Parser Combinators) ParserCon.hs MiniWhile.hs | Numbers.hs StackCalc.hs |
2019-06-18 | 2019-06-26 | Exercise 6 (State Monad) | Exercise6.hs |
2019-06-23 | 2019-07-03 | Exercise 7 (Monad Transformers) | Logging.hs Protected.hs |
2019-07-10 | 2019-07-17 | Exercise 8 (GADTs) | StackGadt.hs |
Project
The goal of the project is to create a program to parse, evaluate
and draw L-systems in Haskell.
The project should be done by groups of 2. You
can find the description
here.
Some example programs can found here.
Content
This course conveys fundamental concepts of functional programming using the programming language Haskell.
Goal
Learning objectives from the module compendium: “Development of a non-procedural view on algorithms and data structures, confident handling of higher-order functions and data, knowledge and ability to apply fundamental functional programming techniques, knowledge of advanced programming concepts, ability to develop medium-size functional programs independently.”
Topic List
- Definition of functions, pattern matching, higher-order functions
- Types and type classes
- Algebraic data types
- Functional data structures
- Applicative parsers
- Monads and monad transformers
- Arrows
- Verification of functional programs
- Monadic I/O and stream I/O
Preliminaries
Interest in learning and applying new programming concepts and languages.
Literature
The book Programming in Haskell by Graham Hutton is the basis for the first 30% of the lecture. This book is available in the TF-library.
Stephen Diehl's WHAT I WISH I KNEW WHEN LEARNING HASKELL
Organization
Schedule
Lecture | Mo 14-16 ct | Geb. 51 - SR 03-026 |
We 14-15 ct | Geb. 51 - SR 03-026 | |
Exercise | We 15-16 ct | Geb. 51 - SR 03-026 |
Modality of exercise
Exercise sheets are added to the website one week in advance. Exercises are not graded, but solutions may be submitted. If you want to check your work, you are of course welcome to ask during the exercise sessions or by email. Solutions will be discussed during the exercise session.
Exam
The exam will be a written exam (closed book). We strive to conduct the exam on the computer. During the exam you will have access to the solutions you submitted for the exercises.
Communication
Announcement will be posted on this page under the rubric News. Urgent announcements will also be sent via email through HisInOne. If you do not want to miss these announcements, you should register for the course in HisInOne!