The course is organised as seven units, each taught during one week. Most units contain lectures, group exercises, and laboratory work. The slides of the lectures are all on the web; they are intended also to serve as notes for students, so should be comprehensible in isolation. The group exercises are intended for discussion with a tutor, and some are quite difficult: why not persuade a friend to learn Haskell with you, so you have someone to discuss them with? Simpler exercises can be found in the text book. The laboratory problems start small and become more substantial projects stretching over several weeks by the end of the course.
Simon Thompson, Haskell - The Craft of Functional Programming (second edition). Addison-Wesley, ISBN 0-201-34275-8, 487 pages, paperback, 1999.
The lectures follow the first chapters fairly closely, then branch out to discuss among other things recent research. Make sure you use the second edition: the first is not as good, and the exercises are different, so exercise numbers in these materials will not match the book.
Thompson's book is very pedagogical, and helpful especially if you're having difficulties. If you're an experienced programmer, and ready for a rougher, but more exciting ride, then I would recommend Paul Hudak's book instead:
The Haskell School of Expression: Learning Functional Programming through Multimedia by Paul Hudak, Yale University. Cambridge University Press, New York, 2000. http://www.haskell.org/soe/.
This is a great book, but definitely not for beginners to programming, in my opinion.
If you want to install Haskell on your computer, you can download Hugs98, the version of Haskell that the course uses, from the Hugs98 home page. This site contains information on all the various versions of Hugs, and on Haskell in general. Windows users can just download a self-installing executable.
Exercises: Recursion on natural numbers. Solutions
Laboratory Work:
(Swedish introductory exercises omitted).
An introduction to scripting in
Haskell (optional, UNIX specific).
Exercises: Lists and Comprehensions. Solutions
Laboratory Work: Supermarket Billing
Exercises: Recursion on lists Solutions
Laboratory Work: (Drawing Graphs, in Swedish, omitted).
Exercises: (Swedish exercises omitted).
Some simpler "revision style" exercises.
Laboratory Work: (Drawing Graphs continued).
Exercises: A variety of harder exercises.
Laboratory Work: a choice between two projects.
Exercises: Exercises on User Defined Types. Solutions
Laboratory Work: continuation from Unit 5.
Here is Beating the Averages, an entertaining article on industrial functional programming in Lisp by Paul Graham.
If you find these materials useful, then drop me a mail! Comments are welcome.
There is a great deal of information on functional programming on the Web.