Recently a very nice Haskell course on Future Learn has finished. It has been created at the University of Glasgow - the virtual birthplace of the Haskell language, where many of its original developers worked.
The purpose of this course is to get started with functional programming, even if you don't have any knowledge on it. Although, some experience in software development is required.
The course lasts for 6 weeks, spending about 4 hours per week. In the end you will be able to buy a personalised certificate which comes in both digital and printed versions.
Now let's go a bit over the course contents:
In the first week you will go through a short introduction to Haskell. You will get a feel of the basic expressions and also how to do basic operations on lists (including the list comprehension, which I find to be a very cool feature in Haskell).
The second week brings more building blocks in the Haskell language. The
if statement and the
Boolean type are introduced. Also, it explores even more the lists data type, and then some basic
I/O: getting user input from the keyboard and printing characters to the terminal.
In week 3 you will find out what recursion and higher-order functions are and how to use them on lists of elements. Also, this week introduces the Tree data type as well as defining your own custom algebraic data types.
In this week you will get to know more advanced patterns of computation based on using functions as values. You will meet guards and case expressions. Also, you will get started with
parsec - a very powerful Haskell library for parsing.
This week explores what lazy evaluation is and how you can use it to create infinite data structures. You will get to know what currying, type classes and type inference are.
The last week brings more coverage of type classes, monads and lambda calculus. This will make you feel the power of the Haskell language even more.
Also, there are mentors willing to help you in case you have any questions or issues. Just let them know in the comment section under each video.