FI:IA014 Advanced Functional Prog. - Course Information
IA014 Advanced Functional Programming
Faculty of InformaticsSpring 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).
- Teacher(s)
- 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 - Timetable
- Thu 17. 2. to Thu 12. 5. Thu 10:00–11:50 A320
- Prerequisites
- 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 - Syllabus
- 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.
- Literature
- 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
- Bookmarks
- https://is.muni.cz/ln/tag/FI:IA014!
- 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
- English
- Further Comments
- Study Materials
The course is taught annually.
- Enrolment Statistics (Spring 2022, recent)
- Permalink: https://is.muni.cz/course/fi/spring2022/IA014