Functional Programming
Personal
Lecture | Prof. Dr. Peter Thiemann | thiemann@info... |
Exercise | Dr. Weili Fu | weilifu@info... |
Time and place: | Lecture: Wednesdays, 12 - 14, Online | |
Tutorials: by appointment, Online |
News
2021-04-01 | Github page |
2021-04-17 | Homepage online |
2021-04-21 | Introductory lecture live at 12:00 on YouTube (link forthcoming) |
2021-07-XX | Project available |
Lecture Materials
Note: "Recordings" are unedited screen recordings of the lecture.
Exercises
Date of issue | Exercise Session | Solutions | |
---|---|---|---|
2021-04-28 | 2021-04-29 | Exercise 0 (Installation) | |
2021-04-28 | 2021-04-29 | Exercise 1 (First steps) | ex1.hs |
2021-04-30 | 2021-05-06 | Exercise 2 (Recursion, Datatypes) Tracks.hs | Exercise2.hs ex2.hs |
2021-05-07 | 2021-05-20 | Exercise 3 (Datatypes, Typeclasses) | ex3.hs Pics.hs |
2021-05-19 | 2021-05-27 | Exercise 4 (High order functions, Functional data structures) | Exercise4.hs Trie.hs TrieMap.hs |
2021-06-03 | 2021-06-17 | Exercise 5 (IO, Parser Combinators) ParserCon.hs MiniWhile.hs | Numbers.hs StackCalc.hs MiniWhileA.hs ex5.hs ParserConAn.hs |
2021-06-22 | 2021-07-01 | Exercise 6 (State Monad) | Exercise6.hs ex6.hs |
2021-07-05 | 2021-07-14 | Exercise 7 (Monad Transformers) | ex7.hs Logging.hs Protected.hs |
2021-07-21 | 2021-07-21 | Exercise 8 (GADTs) | ex8.hs StackGadt.hs |
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 | Mi 12-15 ct | online |
Exercise | Thursday 10AM to 12AM, Zoom room (Meeting ID : 669 8403 5031, passcode : Haskell21) | online |
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
All Bachelor students must do an oral exam, which will take place on September 6. Particularly, if you inscribe "PO 2012" you must take the oral exam. All other students will have a take-home exam consisting of a programming task and a few questions, which will be published on September 6. The participants have at least 24 hours to work on it, and the answers must be turned in on September 7. This date will be scheduled in the exams system as well.
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!