Functional Programming Using Haskell

A practical course on developing applications in a purely functional programming language

Learn Functional Programming using Haskell

When working on large codebases with many moving parts, I never felt comfortable making changes because it was almost impossible to know what I could alter without breaking the entire application. Modifying one function might cause a cascade of issues or break something in a subtle way that I wouldn't even notice for weeks.

Programming that way just isn't very fun, and sometimes it even made me feel like I wasn't very good at it or I wasn't using the right design patterns. Then I discovered functional programming.

As I studied functional programming I found that, even when writing code in traditionally object-oriented languages, using functional principles made things that had previously been verbose and error-prone simple, beautiful and flexible.

For example, six months ago I wrote a production web service in Haskell to enable a wide variety of content submissions in a web application. Later, I needed to make a change to a codebase I hadn't touched in months!

Because the code was written in a purely functional programming language, I was able to easily make the changes in a couple of minutes without any mental gymnastics and I was confident that the changes were correct. That's the power of functional programming and I want to share it with you.

What is Functional Programming?

The core of functional programming really boils down to a few basic, clearly defined concepts. Those concepts not only apply to functional languages like Haskell (which we'll be learning in), but thinking in this new way lets you write the type of software people idealize, no matter what language it's in.

This course breaks down those concepts, step by step, and gives you some challenges to complete in order to cement those principles. By the end you'll be able to write more powerful, more elegant, more functional code - even if you're going to go back to work tomorrow writing Python or JavaScript.

Watch a Sample - Referential Transparency

Start Writing Code

Instead of endless theory, each lesson introduces a concept and quickly moves to practical examples and exercises so you can get comfortable using these new techniques. We'll also teach you about the tools you'll need in order to create, maintain, and run your applications.

LambdaSchool students are invited into a members-only Slack community where we'll organize into study groups, help each other when we're stuck, and even meet up.

Group Code Reviews

Most lessons contain practice code for you to write. In the LambdaSchool community we'll be frequently going over samples of code to see each other's and to help each other improve. We learn more by having the actual output of our work critiqued by others, and by seeing how others approach the same problem.

Course Format

The course will be made available on several platforms, and will be available on mobile and desktop, as well as downloadable should you want to access them offline.

We'll also make full text transcripts available so you can review and study when you don't want to watch the videos.

What's In The Course

The course will cover the basic elements of FP and Haskell. The syllabus may change, but it will roughly be:

  • Tooling and using the REPL
  • Syntax (functions, guards, recursion)
  • Types
  • ADTs
  • Type Classes
  • Functor
  • Applicative
  • Monad

The latter half of the course will make extensive use of examples from web programming to illustrate the usefulness and ubiquity of these general concepts.


Your Instructor


Levi Notik
Levi Notik

Course Curriculum


  Functional Programming Overview
Available in days
days after you enroll
  The Haskell Development Environment
Available in days
days after you enroll

Frequently Asked Questions


When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.
How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.

Get started now!