Profile photo

Programming Fundamentals 3

University of Luxembourg
Bachelor in Computer Science (BiCS)
Semester 3, 2025/2026

Introduction to functional programming in Haskell

Course content

The course runs over 14 weeks and combines weekly two-hour lectures with two-hour practical sessions focused on hands-on exercises and applied training.

Info

The slides for each class were written in Jupyter Notebooks using the IHaskell kernel. Most of the Haskell code was developed live during class. Please kindly report any bugs you find.

Assessment methods

  • Homework assignment with programming problems (30%) Download
  • Midterm written exam (30%) Download
  • Final written exam (40%) Download

Homework assignments from previous editions:

Expected learning outcomes

At the end of the course the student will:

  • Know how to program and reason about programs in a purely functional programming style.
  • Solve problems in Haskell in a concise, yet expressive, manner.
  • Decompose complex problems into smaller, manageable subproblems.
  • Think recursively, make use of higher-order functions, understand the benefits of type systems, and learn how some programming languages like Haskell avoid unnecessary computations via lazy evaluation.
  • Know common data structures (like stacks, queues, trees, self-balancing trees, and graphs) and how these can be implemented in a functional language with data immutability.
  • Know how to analyze the run-time complexity of operations on these data structures.
  • Understand advanced concepts and abstractions of functional programming such as functors, applicative functors, and monads.
  • Understand how to approach and solve classic computer science problems in Haskell with essential techniques such as recursion, permutation generation, brute-force and binary search.

Programming in Haskell by Graham Hutton is the primary textbook for the course, offering a rigorous and academic introduction to functional programming with Haskell. The second book, Learn You a Haskell for Great Good! by Miran Lipovaca, covers many of the same topics with a more practical, learn-by-example approach. The last two references are used to support specific lecture topics. Each lecture listed above includes references to the relevant chapters in these supplementary materials.

  • GH Programming in Haskell, 2nd Edition, by Graham Hutton. September 2016, Cambridge University Press, ISBN-13 978-1316626221. Available for free to University of Luxembourg students
  • ML Learn You a Haskell for Great Good!, by Miran Lipovaca. April 2011, No Starch Press, ISBN-13 978-1593272838.
  • BW Introduction to Functional Programming, by Richard Bird and Philip Wadler, 1988, Prentice Hall.
  • ME Inductive Graphs and Functional Graph Algorithms, by Martin Erwig, Journal of Functional Programming 2001.