Free Course On Functional Programming in Haskell
Written by Nikos Vaggalis   
Monday, 22 March 2021

Videos from an introductory course by Professor Graham Hutton from the University of Nottingham have been made freely available on YouTube. Designed for first year Computer Science students, they teach the basic principles of functional programming using Haskell.

Graham Hutton is a well-known authority for the FP community. He is a Professor of Computer Science at the University of Nottingham, where he co-leads the Functional Programming Lab. He is an editor of the Journal of Functional Programming, a member of IFIP WG 2.1 on Algorithmic Languages and Calculi, and has served as Vice-Chair of the ACM Special Interest Group on Programming Languages and as the Steering Committee Chair of the International Conference on Functional Programming.

Although the course is done in Haskell, it primarily is about the Functional Programming mindset using Haskell as the vehicle to get there. It's also an opportunity to get to discover Haskell, a language unlike any other that transforms the way developers think about programming and helps them to improve their overall abilities.

As Haskell is a purely functional language, when you write a program in it you are in essence writing mathematical functions.It's where a good background in mathematics will help you in programming, something that finally answers the timeless question of whether you need maths in order to program, a topic explored in Does Math Help Programming Or Programming Help Math?.

The course in its introduction tries to answer the questions of what functional programming actually means and where did it come from engaging in a historical flashback.In highlighting the difference between purely functional languages and those supporting functional programming,like Java, is that the former support and encourage the functional style.

A great introductory example is that of contrasting quick sorting in Haskell versus any imperative language.It starts with the display of some incomprehensible appearing formal mathematical types and majestically demystifies them with simple substitutions.

That's what the essence is. By combating the initial fear that mathematical notations raise and methodically work on them, in the end you'll find that writing in functional style is easier than the imperative. It just requires an alternative way of thinking. As the quick sorting example demonstrates, in Haskell you do not just work around the algorithm, but you actually capture its essence.

The rest of the course follows in those steps, makes use of the Glasgow Haskell compiler (more of the interpreter part since it focuses on real time feedback), comprised of the following lecture videos :

Lecture 1 - Introduction

Lecture 2 - First Steps

Lecture 3 - Types and Classes

Lecture 4 - Defining Functions

Lecture 5 - List Comprehensions

Lecture 6 - Recursive Functions

Lecture 7 - Exercises On Recursion

Lecture 8 - Higher-Order Functions

Lecture 9 - How To Think Recursively

Lecture 10 - Declaring Types and Classes

Lecture 11 - The Countdown Problem

Lecture 12 - Interactive Programming

Since the course is new and ongoing there are two lectures that are not yet available as videos, but will be once ready:

Lecture 13 - Exercises on interaction

Lecture 14 - Lazy evaluation

But wait, there's more. That was Part I, that introduced the basic concepts of pure programming in Haskell, structured around the core features of the language. Part II, Advanced Functional Programming, is designed for second year Computer Science students and covers a range of more advanced topics.

Fortunately this part too, has also been made available on YouTube. It involves building a Sudoku solver and comprises the following lectures:

Lecture 1 - Sudoku in Haskell I

Lecture 2 - Sudoku in Haskell II

Lecture 3 - Sudoku in Haskell III

Coursework 1 - Connect Four Game

Lecture 4 - Functors

Lecture 5 - Applicative Functors

Lecture 6 - Monads I

Lecture 7 - Monads II

Lecture 8 - Monads III

Lecture 9 - Monads IV

Missing :

Lecture11 - Coursework 2: monadic compiler

Lecture12 - Reasoning about programs

Lecture13 - Induction

Lecture14 - Making append vanish I

Lecture15 - Making append vanish II

Lecture16 - Compiler correctness

To sum up, this is really compelling material that reinvents the word "programming". As a matter of fact FP in Haskell is part of a larger module Programming Paradigms which involves being taught OOP in Java in parallel so that students can educate themselves in both styles and, of course, compare them.

A must watch, no matter if you're interested in Haskell or not. 


More Information

Functional Programming Syllabus

Functional Programming YouTube

Advanced Functional Programming Syllabus

Advanced Functional Programming YouTube

Related Articles

Does Math Help Programming Or Programming Help Math?

Functional Programming For Big Data Analytics

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.



Deno Adds Support For Jupyter And Queues

Deno 1.37 has been released with new support for Jupyter notebooks. The team has also announced a new tool called Deno Queues. Deno is the JavaScript and TypeScript runtime from the creator of Node.js [ ... ]

Microsoft Announces New Tools at Ignite

Microsoft announced a range of new features for its tools at its annual Ignite conference, with new ways to customize Microsoft 365 and extra AI facilities for Azure.

More News




or email your comment to:

Last Updated ( Friday, 26 March 2021 )