Functional programming 1000-2M10PF
1. Introduction to functional programming: advantages and drawbacks.
2. Basic programming instructions: expressions, definitions, pattern matching.
3. Functions: declarations, applications, functional types, higher order functioins, verification of functional programs.
4. Data types: declarations, algebraic data-types, recursive type definitions, pattern matching of algebraic data-types, structural induction.
5. Polymorphism: polymorphic types, type system.
6. Exceptions: declarations and usage.
7. Imperative constructions in functional programming languages; mixing imperative and functional programming.
8. Eager and lazy expression evaluation, implementation of lazy values.
9. Applications of lazy evaluation: delayed values, memoization, streams.
10. Stream programming paradigm.
11. Modularization: structures, signatures, functors.
Assumptions for this subject:
Elements of logic.
Basic programming constructions and techniques.
This course augments well with ``Semantics and Program Verification", both subjects may be studied together.
Type of course
Requirements
Bibliography
H. Abelson, G. J. Sussman, Structure and Interpretation of Computer Programs, MIT, 1996.
Ch. Reade, Elements of Functional Programming, Addison-Wesley, 1993.
X. Leroy, The Objective Caml system, http://caml.inria.fr/pub/docs/manual-ocaml/index.html.
Additional information
Information on level of this course, year of study and semester when the course unit is delivered, types and amount of class hours - can be found in course structure diagrams of apropriate study programmes. This course is related to the following study programmes:
- Bachelor's degree, first cycle programme, Computer Science
- Master's degree, second cycle programme, Computer Science
Additional information (registration calendar, class conductors, localization and schedules of classes), might be available in the USOSweb system: