3 year, 6 semester
Language: English

Description

In this course students will learn

  • Programming in pure lazy functional language Haskell
  • Core concepts of functional programming such as
    • Lazy evaluation
    • Algebraic data types
    • Functors and monads
  • Fundamentals of lambda calculus and combinatory logic
  • Efficient compilation and execution of functional programs

Preconditions

Teacher

  • Трепаков Иван Сергеевич

Structure

This course is taught in spring semester (16 weeks, 2 times per week) and organized in modules:

  • Functional programming in Haskell (4 weeks)
  • Functional abstractions (8 weeks)
  • Functional models of computation (4 weeks)

Each module will have graded homework assignments (~10 assignments in total) with 10 points per assignment.

Grading

Final grade is assigned either based on points for homework assignments

  • A — 8+ points in each homework
  • B — 7+ points in each homework
  • C — 6+ points in each homework

Or by passing final theory test comprising

  • 2 random questions from different modules
  • 1 practical exercise similar to tasks from homework assignments

Students wishing to improve grade based on homework points may pass theory test instead. In that case their grade from theory test will be the final grade.

Prerequisites

Before the first seminar all students should have Haskell developer environment ready by installing GHC toolchain using official installer GHCup.

A typical GHC installation includes following components:

  • GHC (Glasgow Haskell Compiler)
  • GHCi — interactive REPL-like environment
  • HLS (Haskell Language Server) — integration with editors
  • cabal and stack — tools for package management and development

To check that everything was installed correctly you can use following command:

$ ghc --version
The Glorious Glasgow Haskell Compilation System,
version 9.8.4

Note: any version 9.x.x or above will be fine.

Materials

Slides: nsu-syspro/haskell-slides
Seminars: nsu-syspro/haskell-seminars (23126)
Quiz: GitHub app

Functional programming in Haskell

Date Slides Classwork Homework Deadline
  Course introduction      
06.02.2025 Introduction to Haskell      
11.02.2025 Quiz 1 Week01: Intro.hs Recursion
(Assignment)
18.02.2026
13.02.2025 Quiz 2 Week02: Types.hs, Bool.hs    
18.02.2025 Quiz 3 Week02: Types.hs Trees
(Assignment)
25.02.2026
20.02.2025 Quiz 4 Week03: Quiz04.hs Types.hs    
25.02.2025 Quiz 5 Week03: Fold.hs Golf
(Assignment)
04.03.2025
27.02.2025 Quiz 6 Week04: Quiz06.hs, TypeClasses.hs    
04.03.2025        

Functional abstractions

Date Slides Classwork Homework Deadline
06.03.2025        
11.03.2025        
13.03.2025        
18.03.2025        
20.03.2025        
25.03.2025        
27.03.2025        
01.04.2025 No classes      
03.04.2025        
08.04.2025        
10.04.2025        
15.04.2025        
17.04.2025        
22.04.2025        
24.04.2025        
29.04.2025        
01.05.2025 No classes      
06.05.2025        

Functional models of computation

Date Slides Classwork Homework Deadline
08.05.2025        
13.05.2025        
15.05.2025        
20.05.2025        
22.05.2025        
27.05.2025        
29.05.2025        

Resources

For a more comprehensive list of available free and paid resources check out official Haskell Documentation page.

  1. Real World Haskell
  2. Learn You a Haskell for Great Good!
  3. Introduction to Haskell, course by Well-Typed (materials, YouTube)
  4. CIS 194: Introduction to Haskell
  5. Barendregt, H., Dekkers, W., & Statman, R. (2013). Lambda calculus with types (book)
  6. Peyton Jones, S. L. (1987) The Implementation of Functional Programming Languages (book)
  7. Jones, S. L. P., & Lester, D. R. (2000). Implementing Functional Languages: a tutorial (book)
  8. The Haskell Wikibook
  9. The Haskell Wiki
  10. Haskell 2010 Language Report