Disclosure: Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Best Courses Guides

8 Best Free Haskell Courses to Take in 2023

Here is a guide with the best free online courses to learn Haskell for both beginners and experienced programmers.

In this guide, I’ve picked the best free online courses to learn Haskell, a purely functional programming language used commonly in academia and research. It is geared towards the functional programming paradigm, meaning that functions in Haskell resemble more closely to their mathematical counterparts than other imperative programming languages. Along with other distinct features like laziness, algebraic data types, and monads, learning Haskell opens you up to a whole other way of coding.

Here are my top picks. Click on one to skip to the course details:

Course Workload In Brief
1. Haskell MOOC (Helsinki) 100 hours Best free in-depth Haskell course for both beginner and experienced programmers
2. Functional Programming in Haskell (Glasgow) 24 hours Best free university-level course for programmers
3. Haskell and Functional Programming course for complete beginners (Dmitrii Kovanikov) 8 hours Best free introductory course to Haskell for programmers
4. Functional Programming in Haskell (Nottingham) 10 hours Free alternative to 2
5. Beginner crash course (Type Classes) 5–6 hours Best free concise course for beginners to get a taste of Haskell
6. Functional Programming Course (Tony Morris) N/A Best free hands-on course with exercises and solutions
7. learn4haskell: Learn Haskell basics in 4 pull requests (Kowainik) N/A Best free project-based course with code feedback given by humans
8. Haskell (Exercism) N/A Best free platform for practicing Haskell programming

What is Haskell?

Haskell is a general-purpose, statically-typed, purely functional programming language used for teaching, research and industrial applications. Named after the logician Haskell Curry, it first appeared in 1990 as an open source alternative to other proprietary programming languages. It is one of the most popular functional programming languages, ranking 39th on the Tiobe Index.

Haskell is purely functional, which means that functions do not update or modify variables and state. This gives the programmer comfort as they’ll know that the code they write will not modify anything outside their body. It is also statically typed at compile time while at the same time having type inference, so you can ensure that no type errors occur during run time. And with other cool features like concurrency and laziness, Haskell has a lot of things going for it.

Find your next course on Class Central

Best Courses Guides Methodology

I built this ranking following the now tried-and-tested methodology used in previous Best Courses Guides (you can find them all here). It involves a three-step process:

  1. Research: I started by leveraging Class Central’s database with 100K online courses and 200K+ reviews. Then, I made a preliminary selection of Haskell courses by rating, reviews, and bookmarks.
  2. Evaluate: I read through reviews on Class Central, Reddit, and course providers to understand what other learners thought about each course and combined it with my own experience as a learner.
  3. Select: Well-made courses were picked if they presented valuable and engaging content and they have to fit in a set of criteria and be ranked accordingly: comprehensive curriculum, affordability, release date, ratings and enrollments.

Course Ranking Statistics

Here are some aggregate stats about the ranking:

  • All of the courses in this ranking are free or free-to-audit.
  • Half of the courses are beginner-friendly (no programming experience required) while the other half are for intermediates (have some programming experience)
  • Around 500 people are following Haskell Courses on Class Central.

Let’s go through the top picks.

1. Haskell MOOC (University of Helsinki)

My first pick for the best Haskell course is Haskell MOOC by the University of Helsinki.

This is a free online course on the Haskell programming language for beginners to programming and experienced programmers alike. The course is split into two parts: Part 1 focuses on the basics of Haskell in the pure functional programming context and Part 2 will introduce Input/Output (I/O) and monads.

The course also has an active Telegram channel where you can ask for help if needed.

No prior knowledge of programming is required to take this course, although knowing at least one programming language is helpful.

What You’ll Learn

Part 1 introduces you to the basics of the Haskell programming language. If you’ve come from an object-oriented language, you’ll immediately notice how different the functional paradigm is, like how Haskell has no unintentional side effects. But before that, you’ll learn how to write expressions and statements and implement programming logic in your code.

Now, you’ll explore the cool features Haskell has to offer, starting with recursion which can be scary to write in other languages but is straightforward in Haskell. You’ll also learn about higher-order functions that take functions as arguments, algebraic data types that allow you to contain different cases, pattern-matching, lists and more.

In Part 2, you’ll dig deeper into the heart of Haskell, starting with laziness and purity — two defining features of Haskell. I/O will also be taught to help you cause intentional side effects, while mysterious concepts from the functor to the monad (and don’t forget the applicative in between) will be elucidated to you. Finally, you’ll end the course by going through miscellaneous but good-to-know topics like parallelism.

How You’ll Learn

This course is 100 hours long and split into 8 text-based lectures. Each lecture set ends with a quiz as well as 10-30 small programming exercises on the topics of the lecture.

Institution University of Helsinki
Instructor Antti Laaksonen, John Lång, and Joel Kaasinen
Level Beginner
Workload 100 hours
Certificate None

Fun Facts

  • This course is worth 10 ECTS credits for University of Helsinki students.
  • The course was made in collaboration with Nitor.

If you’re interested in this course, you can find more information about the course and how to enroll here.

2. Functional Programming in Haskell: Supercharge Your Coding (University of Glasgow)

My second pick for the best Haskell programming course is Functional Programming in Haskell: Supercharge Your Coding by the University of Glasgow.

In this 6 weeks free-to-audit course, you’ll learn how to develop simple programs in the Haskell language, as well as look at the origins and underlying philosophy of Haskell in relation to functional programming. By the end of this course, you’ll be able to approach and solve the same problem in multiple paradigms.

This course is designed for learners who already have experience of at least one programming language, such as Python or Java.

What You’ll Learn

The course begins by putting you into familiar territory like learning how to write basic expressions and equations. Then, you’ll encounter your first Haskell particularity: functional programs do not have statements! You’ll learn how functions are actually defined by equations along with lists and list comprehension.

Moving on, you’ll learn about if statements and the Boolean data type. Then, you’ll wrap your head around monads and I/O, including getting user input from the keyboard and outputting characters to the terminal. Advanced Haskell constructs such as recursion and algebraic data types will also be discussed.

So far you’ve developed fairly small Haskell programs. But what if you want to create larger non-trivial programs? You’ll learn how to structure programs to make code more readable with parsers like the Parsec library as well as use automated testing tools like QuickCheck.

In the course’s final part, you’ll fully excavate some of Haskell’s most distinctive features, such as laziness, infinite data structures, type inference, lambda calculus, monads, and much more. Not only that, you’ll also learn how Haskell is used in the real world.

How You’ll Learn

This course is 6 weeks long with each week taking 4 hours to complete. You’ll learn by watching the lecture videos, answering the quizzes, and interacting with fellow learners in FutureLearn’s discussion forums.

Institution University of Glasgow
Provider FutureLearn
Instructor Wim Vanderbauwhede and Jeremy Singer
Level Intermediate
Workload 24 hours
Enrollments 23K
Rating 4.8 / 5.0 (37)
Certificate None

Fun Facts

  • The course has 153 bookmarks on Class Central.
  • Wim Vanderbauwhede is a professor in Computing Science at the University of Glasgow. He received a PhD in Electrotechnical Engineering from the University of Gent, Belgium in 1996. His research has resulted in over 150 refereed conference and journal papers.
  • Jeremy Singer is a lecturer of Computing Science at the University of Glasgow. His main research themes are Compilers and Runtimes for Programming Languages.

If you’re interested in this course, you can find more information about the course and how to enroll here.

3. Haskell and Functional Programming course for complete beginners (Dmitrii Kovanikov)

My third pick for the best course to learn Haskell is Haskell and Functional Programming course for complete beginners.

It goes through the fundamentals of Functional Programming (FP), Haskell Syntax and teaches you skills for solving problems in the functional style. By the end of the free course, you’ll be able to write a simple program in Haskell that interacts with the real world (e.g. search a substring in a file, count the number of files with the specified extension, etc).

No prior knowledge of FP or Haskell is required to take this course.

What You’ll Learn

In the first lecture, you’ll be introduced to the fundamentals of functional programming and Haskell. You’ll learn what makes functional programming special to begin with and then see how Haskell is geared towards it. For example, you’ll go through the common programming concepts like variables, control statements, and functions, but learn about immutability, higher-order functions, and laziness — a defining feature of Haskell.

The second lecture is all about data types, but more specifically Haskell’s algebraic data type. You’ll be amazed at how flexible it is when you create your own data types to help encapsulate structure. Additionally, you’ll also learn how to do pattern-matching.

Typeclasses allow methods to be used across multiple types (similar to generics). The third lecture aims to familiarize you with them, along with other concepts like functors, folds, and polymorphism. You’ll also see what lazy evaluation means in Haskell.

In the fourth and final lecture, you’ll uncover the dangers of side effects and see how monads fix this problem. You’ll explore a variety of monad programming patterns as well as learn about the applicative.

How You’ll Learn

This course is 8 hours long and consists of 4 lectures. You’ll learn by watching the lectures as well as doing the practical exercises that you can complete and feedback on your solutions.

Provider GitHub
Instructor Dmitrii Kovanikov
Level Beginner
Workload 8 hours
Certificate Free

Fun Facts

  • Dmitrii is a Haskell and Rust developer currently working as Senior Software Engineer at Feeld. He has 7+ years experience of using Haskell in production, gave 10+ talks on multiple conferences and meetups, and authored 50+ open-source projects.

If you’re interested in this course, you can find more information about the course and how to enroll here.

4. Functional Programming in Haskell (University of Nottingham)

Functional Programming in Haskell is an introductory course on Haskell by Professor Graham Hutton from the University of Nottingham.

In this free course, you’ll learn how to code in the functional style with Haskell. By the end of the course, you’ll have a strong grasp of both the Haskell programming languages and functional programming paradigm.

To take this course, you should have some experience with imperative programming (variables, control structures, and data structures).

What You’ll Learn

The course starts off by discussing what exactly a functional language is — computing by applying functions to arguments. You’ll discover that functional programming ideas have actually existed since the early days of computing. After going through the basics (like variables and control structures), the first exotic concept you’ll study are typeclasses.

Afterward, you’ll look at how functions are defined in Haskell and look at two broad categories of functions, recursive functions and higher-order functions. Recursion will be discussed extensively, along with list comprehensions and the likes. Finally, you’ll wrap up the course with I/O and Haskell’s lazy evaluation behavior.

How You’ll Learn

This course is 10 hours long. You’ll learn by watching the lecture videos and following along in the code demo. If you have the course textbook, you can practice your coding skills on the chapter-wise exercises.

Provider YouTube
Instructor Graham Hutton
Level Intermediate
Workload 10 hours
Views 91K
Certificate None

Fun Facts

If you’re interested in this course, you can find more information about the course and how to enroll here.

5. Beginner crash course (Type Classes)

If you have never programmed in your life, but are curious as to what Haskell and functional programming is all about, Type Classes’s Beginner crash course is for you!

This course is not a complete everything-you-need-to-know course about Haskell. Instead, it aims to get you with the basics and a little bit more to get you thinking in Haskell.

No prior experience with programming is required to take this course.

What You’ll Learn

You’ll begin the first part of the course by talking about functions and types available in Haskell, and see how Haskell beautifully sews these two components to work together. You’ll then be given a demo of GHCi, Haskell’s interactive environment.

After playing around with Haskell, you’ll learn how to write a small, interactive program in the second part. To accomplish this, you’ll learn about the IO, polymorphism, recursion, and higher-order functions.

The course’s third part walks you through organizing a project as well taking a closer look at recursion and higher-order functions. You’ll stick to a very limited syntax to avoid unnecessary distractions while also making this digestible in a small amount of time.

Finally, the fourth session of the course discusses three important typeclasses: the Monoid, the Functor, and the Monad. These typeclasses may even be the reason why you’re learning about functional programming in the first place! You’ll understand the general idea behind Monads and how it fits into the overall system of Haskell without resorting to vague metaphors and strange analogies.

How You’ll Learn

This course is 5–6 hours long and consists of 4 sections. You’ll learn by watching the lecture videos and following along with the instructor as he codes in Haskell.

Website typeclasses.com
Instructors Chris Martin
Level Beginner
Workload 5–6 hours
Certificate None

Fun Facts

  • Chris has been writing software for a decade, most recently as a blockchain engineer for Hijro and previously as co-founder and CTO of Fold. He has a master’s degree in computer science from Georgia Tech and has worked for Georgia Tech Research Institute.
  • After completing this course, you should take the Validation course or book, or Functortown in order to learn more about Functor and Monad

If you’re interested in this course, you can find more information about the course and how to enroll here.

6.  Functional Programming Course (Tony Morris)

The aptly named Functional Programming Course will guide you through the basics of functional programming with Haskell.

The free interactive course is structured linearly to assist beginners to Haskell as you’ll learn mainly through reading the course materials and completing the hands-on course exercises.

You should have some programming experience prior to taking this course.

What You’ll Learn

First, you’ll be given a cursory overview of Haskell syntax, the typical structure of Haskell programs, and data structures. Then, you’ll go through the big three: functors, applicatives, and monads. Moving on, you’ll learn how to perform IO operations in a ‘pure’ language like Haskells, before learning about states, comonads, parsers, and other more advanced topics. The final exercises in the course will task you with finding anagrams, printing a cheque, and more.

How You’ll Learn

This course consists of several practical exercises. The exercises are filled with errors which you must fix in order for the code to compile and run. Additionally, they are designed in a way that requires personal guidance, so if you attempt the exercises on your own and feel a little lost, this is normal. Google is your best friend!

Provider GitHub
Instructors Tony Morris and Mark Hibberd
Level Intermediate
Workload N/A
Certificate None

Fun Facts

  • Tony is a software engineer at Simple Machines specializing in applying Functional Programming to achieve high-assurance, rapid software development.
  • Meanwhile, Mark is a CTO at Kinesis who is interested in building reliable systems.
  • The answer to the course exercises can be found here.

If you’re interested in this course, you can find more information about the course and how to enroll here.

7. learn4haskell: Learn Haskell basics in 4 pull requests (Kowainik)

Learn4Haskell teaches you how to do functional programming in Haskell with just four pull requests.

To start the free interactive course, fork the project and begin reading and working through the materials and coding exercises. But why the hassle? Because once you’re done with the exercises, the instructors will check your code and provide you with valuable feedback (the best part about this course!).

By the end of the course, you should be able to independently create and read basic Haskell code, as well as understand monads and other famous concepts of functional programming.

The course is for people who don’t know Haskell but have some prior programming experience.

What You’ll Learn

Why makes Haskell different? You’ll begin the course by discussing the particularities of Haskell while taking a look at the basic syntax and structure that closely resembles other programming languages you might know (like functions, types, and expressions).

But that’s where the similarities end. The second module introduces you to the world of functional programming and how Haskell is adapted for it. You’ll learn what it means by immutability, purity, and laziness, and also learn how to use pattern matching, recursion, polymorphism, higher-order functions, and much more.

The third module focuses on types. Specifically, you’ll study the types Haskell has to offer (like Product types and Records, Sum types and Enumerations) as well as how to construct your own type with typeclasses. And in the fourth and final module, you’ll encounter the three monsters of functional programming —  Functor, Applicative, and Monad — and master them.

How You’ll Learn

This course contains 4 modules. Each module contains educational material, examples, and several programming exercises. You’ll learn by solving the tasks and upon completion, open a pull request to your fork with this chapter’s solution and summon the instructors feedback.

Institution Kowainik
Provider GitHub
Instructors Veronika Romashkina and Dmitrii Kovanikov
Level Intermediate
Workload N/A
Certificate None

Fun Facts

  • This course is organized as a coding project. So you can complete the course without needing to exit your editor.
  • Veronika is a Quantitative Developer at Standard Chartered Bank and a Software Engineer specializing in the Haskell programming language.
  • Kowainik is an open-source organization with lots of open source projects and libraries in Haskell that are used in the Haskell community. They create tutorials and guides in Haskell and mentor people who are keen to learn Haskell.

If you’re interested in this course, you can find more information about the course and how to enroll here.

8. Haskell (Exercism)

So maybe you’ve taken a course on Haskell from this ranking. Now what?

Well, Exercism will tell you what. Exercism is a free online coding platform that provides tons of coding exercises with instant automated feedback for you to practice and learn from.

Not only that, but Exercism also allows you to request personal mentoring for certain exercises for free. That way, an experienced Haskell programmer will look through your code and tell you how to improve on it.

Programmers of all levels of experience can join this platform, as exercises range from easy to challenging.

What You’ll Learn

This course offers exercises of three different difficulties: easy, medium, and hard.

Some easy exercises include converting a long phrase into an acronym, randomly generating DnD characters, and translating RNA sequences into proteins.

The medium difficulty exercises consists of computing Pascal’s triangle, implementing a clock that handles times without dates, and transposing text

Some of the most challenging exercises provided are using lenses to update nested records, resting a zipper for a binary tree, and making a chain of dominoes.

How You’ll Learn

This course is self-paced, so you can take all the time you need to complete the 100+ hands-on programming exercises. Each exercise comes with automatic analysis of your code as well as an opportunity to request personal mentoring to help you better understand your code’s strengths and flaws.

Provider Exercism
Level All
Workload N/A
Enrollments 20K
Certificate None

Fun Facts

  • Exercism provides exercises on 50+ programming languages like Python, Kotlin, F#, and WebAssembly.
  • Their mission is to help everyone get really good at programming, regardless of their background, share the love of programming, and help people upskill as part of their upward social mobility.
  • Close to 150 people have contributed towards the Haskell syllabus and exercises, with around 250 mentors available at the time of writing.

If you’re interested in this course, you can find more information about the course and how to enroll here.

Elham Nazif Profile Image

Elham Nazif

Part-time content writer, full-time computer science student.

Comments 0

Leave a reply

Your email address will not be published. All comments go through moderation, so your comment won't display immediately.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Browse our catalog

Discover thousands of free online courses from top universities around the world like MIT, Stanford, and Harvard.

Browse all subjects