SubjectsSubjects(version: 945)
Course, academic year 2023/2024
   Login via CAS
Functional programming - NAIL097
Title: Funkcionální programování
Guaranteed by: Department of Theoretical Computer Science and Mathematical Logic (32-KTIML)
Faculty: Faculty of Mathematics and Physics
Actual: from 2018
Semester: winter
E-Credits: 3
Hours per week, examination: winter s.:2/0, Ex [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: Czech, English
Teaching methods: full-time
Teaching methods: full-time
Additional information: http://tomkren.cz/fp/
Guarantor: Mgr. Vít Šefl
Mgr. Tomáš Křen
Class: Informatika Mgr. - volitelný
Classification: Informatics > Theoretical Computer Science
Annotation -
Last update: T_KTI (10.05.2011)
Basic notions, data structures and techniques in functional programming, focused on its theoretical foundations. Oriented mainly towards functional programming language Haskell.
Aim of the course -
Last update: RNDr. Petr Pudlák, Ph.D. (11.05.2011)

Learn theoretical foundations of functional programming and their uses, in particular in the environment of Haskell language.

Draw the attention to possibilities of introducing notions of high abstractions in functional languages that allow general solutions of broad spectrum of tasks.

Contribution of type systems for program correctness.

Course completion requirements -
Last update: RNDr. Jan Hric (12.06.2019)

Oral examination. Questions posed in the oral examination explore the topics included in the syllabus to the extent that these topics are covered in lectures.

Literature -
Last update: T_KTI (25.04.2016)

  1. Bryan O'Sullivan, Don Stewart, and John Goerzen: Real World Haskell - Code You Can Believe In. O'Reilly, November 2008, ISBN-10: 0596514980, ISBN-13: 978-0596514983.
    http://book.realworldhaskell.org/read/
  2. Paul Hudak: The Haskell School of Expression: Learning Functional Programming through Multimedia Cambridge University Press, New York, 2000, ISBN 0521644089 / 0521643384.
  3. Thompson, S.: Haskell, The Craft of Functional Programming. Addison-Wesley, 1999, ISBN 0-201-34275-8
  4. Benjamin C. Pierce: Types and Programming Languages. The MIT Press, 2002, ISBN 0262162091
  5. Girard J-Y, Lafont Y, Taylor P: Proofs and Types. Cambridge Press, 1989.
    http://www.paultaylor.eu/stable/Proofs+Types.html
  6. Simon Peyton Jones: Haskell 98 language and libraries: the Revised Report. Cambridge University Press, 2003, ISBN 0521826144.
    http://haskell.org/onlinereport/
  7. Barendregt, Henk, Wil Dekkers, and Richard Statman. Lambda calculus with types. Cambridge University Press, 2013

  8. Paul Hudak: The Haskell School of Music. Yale University, 2008.

Syllabus -
Last update: T_KTI (25.04.2016)

Introduction to lambda calculus, functional programming and the Haskell programming language. Operational semantics of functional programs, beta-reduction and normal forms of expressions (NF, HNF, WHNF).

Functions as first-class objects of functional languages. Recursive functions, higher-order functions, combinators.

Church encoding of data types. Algebraic data structures. Pattern matching.

Typed lambda calculi. Intuitionistic logic, natural deduction calculus and its connection to typed lambda calculi. Curry-Howard correspondence. Basic notions of combinatory logic. Dependent types.

Expression type inference. Hindley/Milner type system and principal type inference algorithm. Generating expressions of given type and its applications.

Ad-hoc polymorphism - type classes. Connection to logic programming.

Recursive, infinite, inductive and coinductive data structures. Total functional programming. Type systems describing provably total functions - Gödel System T and Girard-Reynold System F.

Basic notions from category theory in the context of functional languages. Functors, Kleisli category, monads.

Facultative topics:

Type systems for working with side effects. Monads, unique types, linear types and linear logic.

Extension of standard type systems used in various functional languages. Type systems in imperative languages. Generalized algebraic data structures.

Functional reactive programming (FRP).

Web page: http://tomkren.cz/fp/, older web page: http://petr.pudlak.name/fp/.

 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html