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).
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
Thu 18:00–19:50 B130
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 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.
  • 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.
  • 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
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
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.
  • Enrolment Statistics (Spring 2013, recent)
  • Permalink: https://is.muni.cz/course/fi/spring2013/IB016