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)
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.
- 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