Course information
Prerequisities
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.
Midterm test will take part at the time of the lecture sometimes around the half of the semester. I will let you know at least two weeks in advance.
FInal exam: there will be one chance to take the exam in the last week of the semester, otherwise multiple dates in the exam period, 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 availble 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.
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