Contact FutureLearn for Support Skip main navigation
We use cookies to give you a better experience, if that’s ok you can close this message and carry on browsing. For more info read our cookies policy.
We use cookies to give you a better experience. Carry on browsing if you're happy with this, or read our cookies policy for more information.
Online course

Functional Programming in Haskell: Supercharge Your Coding

Get an introduction to Haskell, the increasingly popular functional programming language, with this University of Glasgow course.

What’s the difference between a free course and an upgraded course?

Free:

  • Access to the course for its duration + 14 days, regardless of when you join (this includes access to articles, videos, peer review steps, quizzes)
  • No certificate

Upgraded:

  • Unlimited access to the course, for as long as it exists on FutureLearn (this includes access to articles, videos, peer review steps, quizzes)
  • A Certificate of Achievement when you complete the course

Find out more

Functional Programming in Haskell: Supercharge Your Coding

Upgrade - $79
+ shipping
?

Why join the course?

Do you want to develop software using the latest programming language paradigm? Haskell is a functional programming language, based on formal mathematical principles. As such, it is easy to reason about and develop, and it executes efficiently on modern multicore machines. From investment banks to social networks, everyone is adopting Haskell.

Get an introduction to functional programming in Haskell

On this introductory course, you will discover the power, elegance and simplicity of functional programming in Haskell. By the end, you will be able to:

  • characterise the differences between imperative and functional programming paradigms;
  • implement small-scale functional programs in elementary Haskell;
  • apply standard combinators for operating on lists;
  • create new algebraic data types and use recursion to define functions that traverse recursive types; and reason in a mathematical manner about data types, functions, recursion and similar functional constructs.

Learn with developers from the birthplace of Haskell

This course has been created by the School of Computing Science at the University of Glasgow – the virtual birthplace of the Haskell language, where many of its original developers worked. It will give you the opportunity to learn with these experts and join the growing, global community of Haskell programmers.

Download video: standard or HD

Skip to 0 minutes and 7 secondsImagine programming with only pure functions.

Skip to 0 minutes and 12 secondsImagine programs that are shorter, more elegant, easier to reason about, and better to execute in parallel on modern manycore processors and massive datacenters. You've just imagined functional programming. In this introduction to functional programming in Haskell you will learn powerful functional programming techniques such as immutable data structures, higher order functions, and lambdas. Learning functional programming will make you a better programmer whatever the language you use. These are just some of the reasons why functional programming is growing in popularity. Smashing Magazine describes functional as 'the hipster of programming paradigms'.

Skip to 0 minutes and 54 secondsAll major tech companies are adopting functional programming techniques, whether it's Scala at Twitter, MapReduce at Google, or Haskell at Facebook. In fact, early work on the Haskell functional programming language took place here at the University of Glasgow, and we've been teaching it to our undergraduate Computing Science students for many years. This course is aimed at people who have some prior programming experience but want to discover functional programming for themselves. We introduce the Haskell language with interactive tutorials and practical programming exercises. We'll take you from the basics through to advanced features of functional programming. And don't worry, we'll deconstruct all the alarming buzzwords and phrases from lambda calculus to monads.

Skip to 1 minute and 44 seconds Also, in a series of exclusive interviews with key Haskell language designers, we will explore the history, present status and future prospects of functional programming. Functional languages are becoming more and more popular. All mainstream languages are incorporating functional constructs. So now is the time to begin functional programming in Haskell. We hope you'll join us on this course.

What topics will you cover?

  • Evaluation via expression reduction
  • Semantics of function abstraction and application
  • Operations involving basic types including integers, characters and booleans
  • Definition and traversal of recursive data types including lists and trees
  • Techniques for structuring programs of non-trivial size
  • Developing custom parsing tools with library support
  • Automated testing with the QuickCheck tool
  • Infinite data structures and lazy evaluation
  • Type classes
  • Principles of Lambda calculus
  • Monads

When would you like to start?

  • Available now
  • Date to be announced

What will you achieve?

By the end of the course, you'll be able to...

  • Develop simple programs involving basic Haskell techniques, including pure function definitions
  • Produce definitions of algebraic data types and apply recursion to define functions that traverse such types
  • Interpret data structures and function interfaces using types
  • Apply formal methods to prove properties of functional programs
  • Develop, modify, and explore code using standard Haskell platform tools
  • Justify why a program uses common standard monads (including IO and Maybe)
  • Explore standard combinators for operating on lists

Who is the course for?

This course is intended for learners who already have experience of at least one programming language, such as Python or Java. You might be a computer science student, a software developer who wants to learn a new programming style, or somebody considering university study in computer science or information technology.

What do people say about this course?

I would like to sign off from this course by expressing my thanks to all the gang at Glasgow for their work and enthusiasm in making this all happen. I really enjoyed being part of the genesis of a new functional programming course. I'll be sure to drop into any future re-runs to see how the course evolves.

William Morgan

I enjoyed taking this course a lot because it provided a structured framework for getting to grips with the language and a very friendly and collaborative atmosphere which made it fun. The camaraderie seemed to embrace everyone, including lecturers, mentors, and fellow students --- we had a great bunch of people. This very constructive interaction with others and their many helpful suggestions made all the difference versus just working through a book. Being able to help others occasionally just made it that much better.

Morgaine Dinova

Who will you learn with?

Wim Vanderbauwhede

Senior Lecturer in Computing Science at the University of Glasgow. I program mainly in Haskell, C++ and Perl and love parallel and heterogeneous programming. http://www.dcs.gla.ac.uk/~wim/
@HaskellMOOC

Jeremy Singer

I am a lecturer in Computing Science at the University of Glasgow. I am moderately fluent in the following languages: Haskell, Java, C, Scouse and New Testament Greek.

* http://dcs.gla.ac.uk/~jsinger

Jan de Muijnck-Hughes

I am a Research Associate at the University of Glasgow. I specialise in Type-Driven Development of Communicating Systems using the dependently typed language Idris. I also use Haskell, Java, & Python.

Who developed the course?

Founded in 1451, the University of Glasgow is the fourth oldest university in the English-speaking world. It is a member of the prestigious Russell Group of leading UK research universities.

What’s the difference between a free course and an upgraded course?

Free:

  • Access to the course for its duration + 14 days, regardless of when you join (this includes access to articles, videos, peer review steps, quizzes)
  • No certificate

Upgraded:

  • Unlimited access to the course, for as long as it exists on FutureLearn (this includes access to articles, videos, peer review steps, quizzes)
  • A Certificate of Achievement when you complete the course

Find out more

Get extra benefits, upgrade this course. For $79 (+ shipping) you'll get:

Unlimited access

Upgrading will mean you get unlimited access to the course.

Image access mobile

  • Take the course at your own pace
  • Refer to the material at any point in future

If you’re taking a course for free you have access to the course for its duration + 14 days, regardless of when you join. If you upgrade the course you have access for as long as the course exists on FutureLearn.

Certificate of Achievement

Upgrading means you’ll receive a Certificate of Achievement when you complete the course.

Image certificate mobile

  • Prove your success when applying for jobs or courses
  • Celebrate your hard work
  • Display on your LinkedIn or CV

To receive a Certificate of Achievement you need to mark 90% of the steps on the course as complete.

Upgrade


Still want to know more? Check out our FAQs

Course highlights Get a taste of this course before you join:

  • Haskell history poster
    Brief History of Haskell
    article

    What are the origins of the Haskell programming language? In this article, Dr Jeremy Singer explores the history of Haskell.