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).
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
Tue 16:00–17:50 B130
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 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.
  • 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.
  • 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.
Teacher's information
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.
  • Enrolment Statistics (Spring 2010, recent)
  • Permalink: https://is.muni.cz/course/fi/spring2010/IB016