• University of Glasgow

Functional Programming in Haskell: Supercharge Your Coding

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

23,419 enrolled on this course

The ryu or Japanese dragon is a symbol of generosity, wisdom and strength. The saying "Here be dragons" refers to unexplored territories, such as functional programming languages.
  • Duration

    6 weeks
  • Weekly study

    4 hours

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 seconds Imagine programming with only pure functions.

Skip to 0 minutes and 12 seconds Imagine 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’. All major tech companies are adopting functional programming techniques, whether it’s Scala at Twitter, MapReduce at Google, or Haskell at Facebook.

Skip to 1 minute and 3 seconds 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. 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.

Skip to 1 minute and 50 seconds 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?

  • Date to be announced

Add to Wishlist to be emailed when new dates are announced

Learning on this course

On every step of the course you can meet other learners, share your ideas and join in with active discussions in the comments.

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."

"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."

Who will you learn with?

Professor 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

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

* https://www.dcs.gla.ac.uk/~jsinger

Who developed the course?

The University of Glasgow

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.

  • Established

    1451
  • Location

    Glasgow, Scotland, UK
  • World ranking

    Top 70Source: QS World University Rankings 2020

Learning on FutureLearn

Your learning, your rules

  • Courses are split into weeks, activities, and steps to help you keep track of your learning
  • Learn through a mix of bite-sized videos, long- and short-form articles, audio, and practical activities
  • Stay motivated by using the Progress page to keep track of your step completion and assessment scores

Join a global classroom

  • Experience the power of social learning, and get inspired by an international network of learners
  • Share ideas with your peers and course educators on every step of the course
  • Join the conversation by reading, @ing, liking, bookmarking, and replying to comments from others

Map your progress

  • As you work through the course, use notifications and the Progress page to guide your learning
  • Whenever you’re ready, mark each step as complete, you’re in control
  • Complete 90% of course steps and all of the assessments to earn your certificate

Want to know more about learning on FutureLearn? Using FutureLearn

Learner reviews

Learner reviews cannot be loaded due to your cookie settings. Please and refresh the page to view this content.

Get a taste of this course

Find out what this course is like by previewing some of the course steps before you join:

Do you know someone who'd love this course? Tell them about it...

You can use the hashtag #FLhaskell to talk about this course on social media.