FI:IB016 Seminar on Func. Programming - Course Information
IB016 Seminar on Functional ProgrammingFaculty of Informatics
- 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.
- 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.