• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Functional Programming

Monday 29 July - Friday 9 August, 2019

2 weeks = 4 ECTS

Course Description

We will get an insight into functional programming -- a bit different approach to programming. We will learn theoretical foundations(lambda calculus and type systems) and get our hands on Haskell -- one of the most notable examples of functional programming language. We will cover it’s basic constructions and move on to more complex ones.

Course Content

  • Block 1. Lambda calculus During the first block we will take a look at the lambda calculus -- simple formal system, with great expressiveness
    • Introduction to lambda calculus.
    • Recursion and normal forms
    • Simply typed lambda-calculus
    Block 2. Haskell During the second block we will meet Haskell and learn some of the constructions and programming approaches in the language
  • Syntax and basic types
  • More types and pattern-matching
  • Type classes
  • Folds
  • Functors. Computations in the context
  • Applicative-style parsing
  • Monads. Manipulating the context
  • More monads. State and I/O
  • Notes from category theory. Type-level combinators and recursive types


The course lasts two weeks (20 classes of 20 hours per week)


3-4th year undergraduate students in CS or similar fields. Prior programming experience is welcome but not necessary

Learning Outcome

Students will learn how to write and reason about their code in Haskell

Course Lecturer

Жаворонков Эдгар Андреевич


Proceed to application