IA014 Advanced Functional Programming

Course information

Prerequisites

There are no formal requirements. However you are expected to know basic functional programming concepts (evaluation, recursion, abstract data types, pattern matching, lists (including comprehensions), higher-order functions, . . .). The expected knowledge basically corresponds to the functional programming part of the  IB015 Non-imperative programming course. 

We will use mostly Haskell, but if you know Standard ML, OCaml or F#, you should be fine. To catch up on differences to Haskell, I recommend one of the two Haskell books below.

Exam

The exam will have two parts: midterm test (20% of the total points) and final exam (the remaining 80%). Both are written. The questions will be in English, but you are allowed to answer in Czech if you prefer to. You need >50 % to pass. In case you get C or B, and want a better mark, you can try and take an oral exam.

There will be a midterm test at around the half of the semester. I will let you know the exact dates at least two weeks in advance. 

Sample midterm test from 2014

Final exam: Multiple dates in the exam period (normally four), as usual.

You are allowed to complete the course with colloqium (k) or zápočet (z) if you prefer to.

For both midterm and final exams you will be provided with a copy of the Lambda Calculus Cheatsheet.

Literature

There is no single book which covers the entire course. For each lecture I'll be giving a list of papers/book chapters which cover the topic. The papers will be mostly research or survey paper freely available to students of this course. The book chapters will be references to the two books below.

B. O’Sullivan, J. Goerzen and D. Stewart: Real World Haskell

Available for free at http://book.realworldhaskell.org/ I will abbreviate this book as RWH throughout the course.

M. Lipovača: Learn You a Haskell for Great Good!

Also available for free, this time at http://learnyouahaskell.com/ I will abbreviate this book as LYaH throughout the course.

The following book has been highly recommended to me by several people, and I have to agree that it is indeed really good. Note, however, that this one is not free (and you do not need to go and buy it, you can pass the course just fine without it).

C. Allen, J. Moronuki: Haskell Programming: From First Principles ()

Some of the other books, which may be useful to you, are:

  • H. Barendregt: Lambda Calculus : Its Syntax and Semantics
  • G. Michaelson: An Introduction to Functional Programming Through Lambda Calculus
  • B. Pierce: Types and Programming Languages
For the second half of the course, some useful stuff can be found on Stephen Diehl's excellent page: