Numbers are values. Strings are values. Booleans are values. In “functional programming”, functions are “simply” values as well. This view on programming leads to an elegant and expressive programming paradigm which we will investigate in this course. During the course, we will use the programming language Haskell. The majority of the concepts we will consider applies in other (functional) languages as well.
Participants are not expected to be fluent in Haskell from the beginning. We will spend the first three weeks of the semester on a Haskell Ramp-Up. Things will progress rather fast, though. The majority of the semester will be used for the good stuff: intermediate and advanced topics, of which there are plenty.
Discussion around this course and Haskell in general are encouraged in the forum. Please stop by regularly, have a look, and say “hi”.
Tutorial and Exercises
Regular weekly tutorials will only start on Monday, Nov 2.
Weekly exercise sheets are provided on the teaching platform ILIAS. Exercises are handed out (and submitted by you, a week later) Thursdays, at 10am.
You are admitted to the final exam if you score at least ⅔ of the overall exercise points.
Scoring well in the exercises leads to substantial bonus points in the final exam (up to ⅓ of the overall exam points).
Haskell (GHC, Haskell Platform)
The course will use the de-facto standard Haskell compiler GHC and its interactive variant (also known as read-eval-print loop or REPL) GHCi. We strongly suggest you download and install the so-called Haskell Platform which includes both GHC and GHCi (and more). Available for virtually all operating systems, including Windows, Linux, OS X. Make sure to install the recent version 7.10.2.
The following introductory books and courses on Haskell are recommend reading — some of these are available online:
- Bird: Thinking Functionally with Haskell, Cambridge University Press 2014
- Keller, Chakravarthy: “Learning Haskell”, online course in development.
- FP Complete: The School of Haskell, extensive and growing set of interactive online tutorials, from basic to advanced.
- Lipovača: “Learn You a Haskell for Great Good”, No Starch Press 2011. Available online at learnyouahaskell.com/chapters
- Allen, Moronuki: “Haskell Programming — from first principles”. Work on this book is still in progress at haskellbook.com, early access available.
- O’Sullivan, Stewart, Goerzen: “Real World Haskell”, O’Reilly 2010. Available online at book.realworldhaskell.org
- A growing and tagged collection of papers, blogs, and tutorial articles on Haskell: dohaskell
We will refer to additional material for the individual topics during the semester.