IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2025
Extent and Intensity
1/1/0. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
In-person direct teaching
Teacher(s)
RNDr. Martin Jonáš, Ph.D. (lecturer)
Bc. Jakub Šárník (assistant)
Guaranteed by
RNDr. Martin Jonáš, Ph.D.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 45 student(s).
Current registration and enrolment status: enrolled: 0/45, only registered: 57/45, only registered with preference (fields directly associated with the programme): 55/45
fields of study / plans the course is directly associated with
there are 40 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and be familiar with practical use of this functional language.
Learning outcomes
After finishing the course, the student will be able to:
— write a Haskell program with approximatelly 100 to 200 lines;
— perform analysis and functional decompisition of given problem;
— use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
— describe theoretical functional concepts;
— have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (Cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Semigroups, monoids, the Foldable and Traversable classes.
  • Evaluation strategies (laziness vs. strictness).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
Seminars combining lecture and individual programming work; homework.
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
The course is taught annually.
The course is taught: every week.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2023/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2024
Extent and Intensity
1/1/0. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Martin Jonáš, Ph.D. (lecturer)
Bc. Jakub Šárník (assistant)
Guaranteed by
RNDr. Martin Jonáš, Ph.D.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Wed 10:00–11:50 B130
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 45 student(s).
Current registration and enrolment status: enrolled: 33/45, only registered: 0/45, only registered with preference (fields directly associated with the programme): 0/45
fields of study / plans the course is directly associated with
there are 71 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and be familiar with practical use of this functional language.
Learning outcomes
After finishing the course, the student will be able to:
— write a Haskell program with approximatelly 100 to 200 lines;
— perform analysis and functional decompisition of given problem;
— use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
— describe theoretical functional concepts;
— have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (Cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Semigroups, monoids, the Foldable and Traversable classes.
  • Evaluation strategies (laziness vs. strictness).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
Seminars combining lecture and individual programming work; homework.
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2023/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2023
Extent and Intensity
1/1/0. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Martin Jonáš, Ph.D. (lecturer)
Bc. Jakub Šárník (assistant)
Guaranteed by
RNDr. Martin Jonáš, Ph.D.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Tue 14. 2. to Tue 9. 5. Tue 18:00–19:50 B130
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 45 student(s).
Current registration and enrolment status: enrolled: 25/45, only registered: 0/45, only registered with preference (fields directly associated with the programme): 0/45
fields of study / plans the course is directly associated with
there are 71 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and be familiar with practical use of this functional language.
Learning outcomes
After finishing the course, the student will be able to:
— write a Haskell program with approximatelly 100 to 200 lines;
— perform analysis and functional decompisition of given problem;
— use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
— describe theoretical functional concepts;
— have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (Cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Semigroups, monoids, the Foldable and Traversable classes.
  • Evaluation strategies (laziness vs. strictness).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
Seminars combining lecture and individual programming work; homework.
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2023/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2022
Extent and Intensity
1/1/0. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
Mgr. et Mgr. Vladimír Chlup (lecturer)
Mgr. Adam Matoušek (lecturer)
RNDr. Vladimír Štill, Ph.D. (lecturer)
Mgr. František Bráblík (assistant)
Mgr. Henrieta Micheľová (assistant)
Guaranteed by
RNDr. Vladimír Štill, Ph.D.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Wed 16. 2. to Wed 11. 5. Wed 12:00–13:50 B130
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 36 student(s).
Current registration and enrolment status: enrolled: 14/36, only registered: 0/36, only registered with preference (fields directly associated with the programme): 0/36
fields of study / plans the course is directly associated with
there are 68 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and be familiar with practical use of this functional language.
Learning outcomes
After finishing the course, the student will be able to:
— write a Haskell program with approximatelly 100 to 200 lines;
— perform analysis and functional decompisition of given problem;
— use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
— describe theoretical functional concepts;
— have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (Cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Semigroups, monoids, the Foldable and Traversable classes.
  • Evaluation strategies (laziness vs. strictness).
  • Context-aware traversal of data structures (Zippers, Lens).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
Seminars combining lecture and individual programming work; homework.
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2020/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2021
Extent and Intensity
0/2/0. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
Mgr. et Mgr. Vladimír Chlup (lecturer)
Mgr. Adam Matoušek (lecturer)
RNDr. Vladimír Štill, Ph.D. (lecturer)
Mgr. Martin Kurečka (assistant)
Guaranteed by
RNDr. Vladimír Štill, Ph.D.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Wed 8:00–9:50 Virtuální místnost
  • Timetable of Seminar Groups:
IB016/virtual: No timetable has been entered into IS. V. Chlup, A. Matoušek, V. Štill, (Z technických důvodů potřebujeme mít v ISu seminární skupinu)
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 36 student(s).
Current registration and enrolment status: enrolled: 2/36, only registered: 0/36, only registered with preference (fields directly associated with the programme): 0/36
fields of study / plans the course is directly associated with
there are 68 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and be familiar with practical use of this functional language.
Learning outcomes
After finishing the course, the student will be able to:
— write a Haskell program with approximatelly 100 to 200 lines;
— perform analysis and functional decompisition of given problem;
— use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
— describe theoretical functional concepts;
— have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (Cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Semigroups, monoids, the Foldable and Traversable classes.
  • Evaluation strategies (laziness vs. strictness).
  • Context-aware traversal of data structures (Zippers, Lens).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
Seminars combining lecture and individual programming work; homework.
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2020/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2020
Extent and Intensity
1/1/0. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
Mgr. et Mgr. Vladimír Chlup (lecturer)
Mgr. Martin Kurečka (lecturer)
Mgr. Adam Matoušek (lecturer)
RNDr. Vladimír Štill, Ph.D. (lecturer)
Mgr. Henrieta Micheľová (assistant)
Guaranteed by
RNDr. Vladimír Štill, Ph.D.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable of Seminar Groups
IB016/01: Mon 17. 2. to Fri 15. 5. Wed 10:00–11:50 B130, V. Chlup, M. Kurečka, A. Matoušek, V. Štill
IB016/02: Mon 17. 2. to Fri 15. 5. Thu 18:00–19:50 B130, V. Chlup, M. Kurečka, A. Matoušek, V. Štill
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 36 student(s).
Current registration and enrolment status: enrolled: 2/36, only registered: 0/36, only registered with preference (fields directly associated with the programme): 0/36
fields of study / plans the course is directly associated with
there are 68 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and be familiar with practical use of this functional language.
Learning outcomes
After finishing the course, the student will be able to:
— write a Haskell program with approximatelly 100 to 200 lines;
— perform analysis and functional decompisition of given problem;
— use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
— describe theoretical functional concepts;
— have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (Cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Semigroups, monoids, the Foldable and Traversable classes.
  • Evaluation strategies (laziness vs. strictness).
  • Context-aware traversal of data structures (Zippers, Lens).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
Seminars combining lecture and individual programming work; homework.
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2020/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2019
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
Mgr. Adam Matoušek (lecturer)
Mgr. Henrieta Micheľová (lecturer)
RNDr. Vladimír Štill, Ph.D. (lecturer)
RNDr. Martin Ukrop, Ph.D. (lecturer)
Bc. et Bc. Martin Zahradníček, MSc (assistant)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Thu 21. 2. to Thu 16. 5. Thu 18:00–19:50 B130
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 18 student(s).
Current registration and enrolment status: enrolled: 0/18, only registered: 0/18, only registered with preference (fields directly associated with the programme): 0/18
fields of study / plans the course is directly associated with
there are 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Learning outcomes
The student who finshes this course will be able to:
- write a Haskell program with approximatelly 100 to 200 lines;
- perform analysis and functional decompisition of given problem;
- use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
- describe theoretical functional concepts;
- have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Monoids, processing of command line options.
  • Evaluation strategies (laziness vs. strictness).
  • Context-aware traversal of data structures (Zippers, Lens).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects (implementation + peer-review).
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2019/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2018
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Vladimír Štill, Ph.D. (lecturer)
RNDr. Martin Ukrop, Ph.D. (lecturer)
Mgr. Adam Matoušek (assistant)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Thu 10:00–11:50 B130
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 30 student(s).
Current registration and enrolment status: enrolled: 0/30, only registered: 0/30, only registered with preference (fields directly associated with the programme): 0/30
fields of study / plans the course is directly associated with
there are 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Learning outcomes
The student who finshes this course will be able to:
- write a Haskell program with approximatelly 100 to 200 lines;
- perform analysis and functional decompisition of given problem;
- use supportive tools for Haskell developers such as the Cabal package manager, the Hackage package repository, the HLint linter, and the QuickCheck testing framework;
- describe theoretical functional concepts;
- have an idea about some more advanced functional techniques used in practice.
Syllabus
  • Advanced syntax, modules, custom type classes, advanced data structures.
  • Package system (Hackage/Stackage), support tools (cabal, HLint, Haddock).
  • Functors, applicative functors, monads.
  • Automatic generation of tests according to program specification (QuickCheck).
  • Input and output in Haskell, processing errors and exceptions (Maybe, Either, exceptions, error states).
  • Monoids, processing of command line options.
  • Evaluation strategies (laziness vs. strictness).
  • Context-aware traversal of data structures (Zippers, Lens).
  • Monadic parsing (Parsec).
  • Monads for shared writing, shared reading and keeping the state (Writer, Reader, State).
  • Monad transformers (MaybeT, ErrorT).
  • Processing strings and other useful GHC extensions.
  • Haskell in real world projects.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve four homework assignments regarding the discussed subjects (implementation + peer-review).
Assessment methods
In order to successful completion of the course, it is necessary to obtain enough points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2018/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2017
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Vladimír Štill, Ph.D. (lecturer)
RNDr. Martin Ukrop, Ph.D. (lecturer)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Wed 14:00–15:50 B130
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 30 student(s).
Current registration and enrolment status: enrolled: 0/30, only registered: 0/30, only registered with preference (fields directly associated with the programme): 0/30
fields of study / plans the course is directly associated with
there are 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), interpreter commands, compilation of Haskell programs
  • Control-flow statements, recursion, anonymous functions, higher-order functions, operators for function composition and application.
  • Modules: Important modules in Haskell 2010, import of modules, writing your own modules.
  • Support tools, packages, cabal, Haskage.
  • Typeclasses: Show, Read, numerical typeclasses. Defining new typeclasses.
  • Data structures: associative lists, records, arrays, implementation of new data structures.
  • Input and output: file IO, system programming, IO in Haskell in general.
  • Functors, applicative, monads.
  • Error handling and exceptions: Maybe, Either, catching and setting of exceptions, proper exception handling.
  • Testing, optimization, documentation: QuickCheck, tail-recursion, strictness annotations. Documenting code and documentation generation.
  • Parsing: regular expressions, Parsec parser generator.
  • Interesting syntanctical extensions in GHC.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2017/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2016
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
RNDr. Martin Ukrop, Ph.D. (seminar tutor)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable of Seminar Groups
IB016/01: Mon 16:00–17:50 A219, V. Štill, M. Ukrop
IB016/02: Thu 14:00–15:50 A219, V. Štill, M. Ukrop
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with Haskell in the scope of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 40 student(s).
Current registration and enrolment status: enrolled: 0/40, only registered: 0/40, only registered with preference (fields directly associated with the programme): 0/40
fields of study / plans the course is directly associated with
there are 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), interpreter commands, compilation of Haskell programs
  • Control-flow statements, recursion, anonymous functions, higher-order functions, operators for function composition and application.
  • Modules: Important modules in Haskell 2010, import of modules, writing your own modules.
  • Support tools, packages, cabal, Haskage.
  • Typeclasses: Show, Read, numerical typeclasses. Defining new typeclasses.
  • Data structures: associative lists, records, arrays, implementation of new data structures.
  • Input and output: file IO, system programming, IO in Haskell in general.
  • Functors, applicative, monads.
  • Error handling and exceptions: Maybe, Either, catching and setting of exceptions, proper exception handling.
  • Testing, optimization, documentation: QuickCheck, tail-recursion, strictness annotations. Documenting code and documentation generation.
  • Parsing: regular expressions, Parsec parser generator.
  • Interesting syntanctical extensions in GHC.
Literature
  • 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
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2016/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2015
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
RNDr. Martin Ukrop, Ph.D. (seminar tutor)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable of Seminar Groups
IB016/01: Wed 14:00–15:50 A219, V. Štill, M. Ukrop
IB016/02: Tue 14:00–15:50 B130, V. Štill, M. Ukrop
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with content of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 40 student(s).
Current registration and enrolment status: enrolled: 0/40, only registered: 0/40, only registered with preference (fields directly associated with the programme): 0/40
fields of study / plans the course is directly associated with
there are 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), interpreter commands, compilation of Haskell programs
  • Control-flow statements, recursion, anonymous functions, higher-order functions, operators for function composition and application.
  • Modules: Important modules in Haskell 2010, import of modules, writing your own modules.
  • Support tools, packages, cabal, Haskage.
  • Typeclasses: Show, Read, numerical typeclasses. Defining new typeclasses.
  • Data structures: associative lists, records, arrays, implementation of new data structures.
  • Input and output: file IO, system programming, IO in Haskell in general.
  • Functors, applicative, monads.
  • Error handling and exceptions: Maybe, Either, catching and setting of exceptions, proper exception handling.
  • Testing, optimization, documentation: QuickCheck, tail-recursion, strictness annotations. Documenting code and documentation generation.
  • Parsing: regular expressions, Parsec parser generator.
  • Parallel programming: threads, parallel programming strategies.
  • Interesting syntanctical extensions in GHC and more.
Literature
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is not compulsory, but highly recommended.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
https://is.muni.cz/auth/el/1433/jaro2015/IB016/index.qwarp
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2013
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Libor Škarvada (seminar tutor)
Mgr. Matej Kollár (seminar tutor)
Mgr. Petr Pilař (seminar tutor)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Contact Person: RNDr. Libor Škarvada
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable
Thu 18:00–19:50 B130
Prerequisites
IB015 Intro to Func.Programming
Pre-requisities for enrolling in the course are to be familiar with content of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional 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 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), interpreter commands, compilation of Haskell programs.
  • Code branching, recursion, anonymous functions, high-ordered functions, operators for function composition and application.
  • Modules and typeclasses: the important modules in Haskell 98, how to import them, writing own modules. Typeclasses Show, Read, numeric types, and others.
  • Data structures: maps, records, arrays, custom data structures implementation.
  • Input and output: dealing with files, system programming, limitations of the IO in Haskell.
  • Monads: functors, programming with monads.
  • Processing errors and exceptions: Maybe, Either, catching and raising exceptions, correction of error states.
  • Testing, optimization, documentation: QuickCheck, code coverage, profiling, tail recursion, adding strictness, literate programming, and generating documentation.
  • Parsing: regular expressions, Parsec.
  • Database: HDBC interface, SQL.
  • Web and network services: web application programming with frameworks, using network protocols.
  • GUI/multimedia: gtk2hs/image processing.
  • Paralel programming: threads, paralel programming and strategies.
Literature
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is compulsory and a large number of absences can negatively affect the overall result.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2012
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Libor Škarvada (seminar tutor)
Mgr. Matej Kollár (seminar tutor)
Mgr. Petr Pilař (seminar tutor)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Contact Person: RNDr. Libor Škarvada
Supplier department: Department of Computer Science – Faculty of Informatics
Timetable of Seminar Groups
IB016/01: Tue 18:00–19:50 B130, M. Kollár
IB016/02: Tue 14:00–15:50 B130, P. Pilař
Prerequisites
IB015 Intro to Functional Prog
Pre-requisities for enrolling in the course are to be familiar with content of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional 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 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), interpreter commands, compilation of Haskell programs.
  • Code branching, recursion, anonymous functions, high-ordered functions, operators for function composition and application.
  • Modules and typeclasses: the important modules in Haskell 98, how to import them, writing own modules. Typeclasses Show, Read, numeric types, and others.
  • Data structures: maps, records, arrays, custom data structures implementation.
  • Input and output: dealing with files, system programming, limitations of the IO in Haskell.
  • Monads: functors, programming with monads.
  • Processing errors and exceptions: Maybe, Either, catching and raising exceptions, correction of error states.
  • Testing, optimization, documentation: QuickCheck, code coverage, profiling, tail recursion, adding strictness, literate programming, and generating documentation.
  • Parsing: regular expressions, Parsec.
  • Database: HDBC interface, SQL.
  • Web and network services: web application programming with frameworks, using network protocols.
  • GUI/multimedia: gtk2hs/image processing.
  • Paralel programming: threads, paralel programming and strategies.
Literature
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is compulsory and a large number of absences can negatively affect the overall result.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2011
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Libor Škarvada (seminar tutor)
Ing. Mgr. Pavel Mises (seminar tutor)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Contact Person: RNDr. Libor Škarvada
Timetable of Seminar Groups
IB016/01: Tue 16:00–17:50 B130, P. Mises
IB016/02: Fri 10:00–11:50 B130, P. Mises
Prerequisites
IB015 Intro to Functional Prog
Pre-requisities for enrolling in the course are to be familiar with content of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional 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 20 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), interpreter commands, compilation of Haskell programs.
  • Code branching, recursion, anonymous functions, high-ordered functions, operators for function composition and application.
  • Modules and typeclasses: the important modules in Haskell 98, how to import them, writing own modules. Typeclasses Show, Read, numeric types, and others.
  • Data structures: maps, records, arrays, custom data structures implementation.
  • Input and output: dealing with files, system programming, limitations of the IO in Haskell.
  • Monads: functors, programming with monads.
  • Processing errors and exceptions: Maybe, Either, catching and raising exceptions, correction of error states.
  • Testing, optimization, documentation: QuickCheck, code coverage, profiling, tail recursion, adding strictness, literate programming, and generating documentation.
  • Parsing: regular expressions, Parsec.
  • Database: HDBC interface, SQL.
  • Web and network services: web application programming with frameworks, using network protocols.
  • GUI/multimedia: gtk2hs/image processing.
  • Paralel programming: threads, paralel programming and strategies.
Literature
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is compulsory and a large number of absences can negatively affect the overall result.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
http://vyuka.haskell.cz/
The course is also listed under the following terms Spring 2010, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2010
Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Libor Škarvada (seminar tutor)
Ing. Mgr. Pavel Mises (seminar tutor)
Peter Molnár (seminar tutor)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Contact Person: RNDr. Libor Škarvada
Timetable
Tue 16:00–17:50 B130
Prerequisites
IB015 Intro to Func.Programming && SOUHLAS
Pre-requisities for being allowed to enroll in the course are to be familiar with content of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional programming. On the application for approval, write a brief summary of your experience with Haskell or, alternatively, with other functional languages.
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 20 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), other interesting Haskell tools and projects (lambdabot, hackage, darcs, cabal...). Interpreter commands, compilation of Haskell programs.
  • Code branching (pattern matching, guards, if, case), recursion, anonymous functions, high-ordered functions (maps, filters, folds), operators for function composition and application.
  • Modules and typeclasses: presentation of the important modules in Haskell 98, how to write own modules, code structure. Show, read, numeric types, comparing.
  • Data structures: maps, records, arrays, custom data structures implementation (e.g. trees).
  • Input and output: dealing with files, system programming, lazy and strict IO, safe IO.
  • Monads: Maybe/Either, state monads, programming with monads.
  • Processing errors and exceptions: catching and raising exceptions, correction of error states.
  • Testing, optimization, documentation: QuickCheck, code coverage, profiling, simple recursion, adding strictness, literate programming, and generating documentation.
  • Parsing: regular expressions, ParSec.
  • Database: HDBC interface, SQL.
  • Web and network services: web application programming with frameworks, using network protocols.
  • GUI (or working with multimedia): gtk2hs/image processing.
  • Paralel programming: threads, paralel programming and strategies.
Literature
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is compulsory and a large number of absences can negatively affect the overall result.
Language of instruction
Czech
Follow-Up Courses
Further Comments
Study Materials
The course is taught annually.
Teacher's information
http://vyuka.haskell.cz/
The course is also listed under the following terms Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.

IB016 Seminar on Functional Programming

Faculty of Informatics
Spring 2014

The course is not taught in Spring 2014

Extent and Intensity
0/2. 2 credit(s) (plus extra credits for completion). Type of Completion: z (credit).
Teacher(s)
RNDr. Libor Škarvada (seminar tutor)
Mgr. Matej Kollár (seminar tutor)
Mgr. Petr Pilař (seminar tutor)
Guaranteed by
prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science – Faculty of Informatics
Contact Person: RNDr. Libor Škarvada
Supplier department: Department of Computer Science – Faculty of Informatics
Prerequisites
IB015 Non-Imperative Programming
Pre-requisities for enrolling in the course are to be familiar with content of the IB015 Non-Imperative Programming course and to have a positive attitude towards functional 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 17 fields of study the course is directly associated with, display
Course objectives
Students will significantly extend their knowledge of functional programming. At the end of the course, they should be able to solve non-trivial programming problems using Haskell and to be familiar with practical use of this functional language.
Syllabus
  • GHC(i), interpreter commands, compilation of Haskell programs.
  • Code branching, recursion, anonymous functions, high-ordered functions, operators for function composition and application.
  • Modules and typeclasses: the important modules in Haskell 98, how to import them, writing own modules. Typeclasses Show, Read, numeric types, and others.
  • Data structures: maps, records, arrays, custom data structures implementation.
  • Input and output: dealing with files, system programming, limitations of the IO in Haskell.
  • Monads: functors, programming with monads.
  • Processing errors and exceptions: Maybe, Either, catching and raising exceptions, correction of error states.
  • Testing, optimization, documentation: QuickCheck, code coverage, profiling, tail recursion, adding strictness, literate programming, and generating documentation.
  • Parsing: regular expressions, Parsec.
  • Database: HDBC interface, SQL.
  • Web and network services: web application programming with frameworks, using network protocols.
  • GUI/multimedia: gtk2hs/image processing.
  • Paralel programming: threads, paralel programming and strategies.
Literature
  • 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
Bookmarks
https://is.muni.cz/ln/tag/FI:IB016!
Teaching methods
The course is organized as a series of two-hour seminars wherein topics of application functional programming in practice are presented to students. Apart from that, it is requested to solve five homework assignments regarding the discussed subjects.
Assessment methods
In order to successful completion of the course, it is necessary to obtain at least 50 % points from homework assignments. The attendance of seminars is compulsory and a large number of absences can negatively affect the overall result.
Language of instruction
Czech
Follow-Up Courses
Further Comments
The course is taught annually.
The course is taught: every week.
The course is also listed under the following terms Spring 2010, Spring 2011, Spring 2012, Spring 2013, Spring 2015, Spring 2016, Spring 2017, Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024, Spring 2025.
  • Enrolment Statistics (recent)