IA014 Advanced Functional Programming

Faculty of Informatics
Spring 2022
Extent and Intensity
2/0. 2 credit(s) (plus extra credits for completion). Recommended Type of Completion: zk (examination). Other types of completion: k (colloquium), z (credit).
Taught in person.
doc. Mgr. Jan Obdržálek, PhD. (lecturer)
Guaranteed by
doc. Mgr. Jan Obdržálek, PhD.
Department of Computer Science - Faculty of Informatics
Supplier department: Department of Computer Science - Faculty of Informatics
Previous experience with functional programming, at least to the extent covered by the course IB015 - Non-imperative programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 45 fields of study the course is directly associated with, display
Course objectives
Introduce the underlying theory of functional programming. Show some of the modern advanced functional programming concepts (monads, monad transformers, GADTs, dependent types...).
Learning outcomes
By the end of the course, students will:
understand the theoretical foundations of functional programming, e,g, lambda calculi and type theory;
understand and be able to efficiently use modern/advanced concepts of functional programming languages (e.g. typeclasses, monads, monad transformers...);
know the limits of the functional programming paradigm;
be able to evaluate and use FP-based concepts in modern mainstream (non-FP) languages
  • History of functional programming languages.
  • Untyped lambda calculus.
  • Simply typed lambda calculus.
  • Polymorphism add type inference (Hindley-Milner, System F)
  • Type classes.
  • Functors, Applicatives.
  • Monads.
  • Monad tranformers.
  • GADTs - Generalized Algebraic Data Types
  • Dependent types.
  • IO and Concurrency.
  • BARENDREGT, Henk. The lambda calculus, its syntax and semantics. London: College Publications, 2012. xv, 621. ISBN 9781848900660. info
  • MICHAELSON, Greg. An introduction to functional programming through Lambda calculus. Wokingham: Addison-Wesley Publishing Company, 1989. 320 s. ISBN 0-201-17812-5. info
  • PIERCE, Benjamin C. Types and programming languages. Cambridge, Massachusetts: The MIT Press, 2002. xxi, 623. ISBN 9780262162098. info
  • O'SULLIVAN, Bryan, John GOERZEN and Don STEWART. Real World Haskell. First Edition. O'Reilly Media, Inc., 2009. 670 pp. ISBN 978-0-596-51498-3. URL info
  • LIPOVAČA, Miran. Learn You a Haskell for Great Good!: A Beginner's Guide. First Edition. San Francisco, CA, USA: No Starch Press, 2011. 400 pp. ISBN 978-1-59327-283-8. URL info
Teaching methods
The course is organized as a series of lectures.
Assessment methods
Evaluation: midterm exam (20%), final written exam (80%).
>50% of points required to pass.
Optional oral exam if you get at least "C" for the written part.
Language of instruction
Further Comments
The course is taught annually.
The course is taught: every week.
The course is also listed under the following terms Spring 2003, Spring 2004, Spring 2005, Spring 2006, Spring 2007, Spring 2008, Spring 2009, Spring 2010, Spring 2011, Spring 2012, Spring 2013, Autumn 2014, Autumn 2015, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021.
  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/fi/spring2022/IA014