Course Materials
USCS2009
Slides
Monday, August 17
Introduction:
Introduction
Tuesday, August 18
Lecture A1:
Quick Overview
Lecture B1:
Untyped lambda calculus
Lecture C1:
QuickCheck
Wednesday, August 19
Lecture A2:
Introduction to Data Structures
Lecture B2:
Typed lambda calculus
Lecture C2:
Data structures
Thursday, August 20
Lecture A3:
The IO Monad
Lecture B3:
Kinds and Type inference
Lecture C3:
Monads
Friday, August 21
Lecture A4:
Classes and Instances
Lecture B4:
Monad transformers
Lecture C4:
Foreign Function Interface and GUI programming
Monday, August 24
Lecture C5:
Lazy evaluation and profiling
Lecture C6:
Introduction to Parser Combinators (dd. Monday 24, 23:52)
Tuesday, August 25
Lecture C7:
Lecture C8:
Networking and Concurrency
Wednesday, August 26
Lecture C9:
GADTs
Lecture C10:
A Functional Prolog Interpreter
Friday, August
Software
We are going to use the
Glasgow Haskell Compiler throughout
the course. The current version is ghc-6.10.4, but any version of the 6.10.* series will do.
If you want to install Haskell, try to get the
Haskell Platform.
The platform consists of GHC plus a few extra libraries and tools. For Windows and Mac,
there are binary installers that should make it easy to get you up and running. For Linux,
you typically need to get a GHC installation and then can install the platform on top of it.
The platform is currently based on ghc-6.10.3. This version is sufficient for the purposes
of the course.
Development environment
There are not many good integrated development environments for Haskell. I therefore
recommend to just use a good general-purpose editor for editing Haskell files and to call
the compiler manually. Several editors have syntax highlighting for Haskell available.
Both Emacs and Vim have special Haskell modes that give you some of the features
typical IDEs offer. An IDE currently in development for Haskell is
Leksah.
However, because it is based on
gtk2hs, it is not so easy
to install. There are other IDE projects for Haskell, but they see limited development right
now, and I will therefore not recommend them.
Lab environment
The machines we use for the computer lab run Linux with the Gnome desktop environment.
They have ghc-6.10.4 installed.
Furthermore, a wide range of Haskell packages are installed. If you need additional
Haskell libraries during the course, please ask. We may be able to install them on the
fly.
Text editors that are available include gedit (a simple text editor for the Gnome desktop
environment), vim, and emacs. The Leksah IDE is also available.
Tutorials
In case you want to have look at Haskell before the Summer School, and are looking for
free online material, I recommend the following online tutorials:
The first one is probably funnier than the second and has prettier pictures,
the Wikibook covers a bit more of the language, though. Both tutorials
are still in development as far as I know and may change and hopefully
improve further.
A longer list of tutorials can be found on the
Haskell Wiki.
Books
If you want to buy a Haskell book, I recommend the following:
- Richard Bird: Introduction to Functional Programming using Haskell. Prentice Hall.
- Graham Hutton: Programming in Haskell. Cambridge.
- Bryan O'Sullivan, John Goerzen, and Don Stewart: Real World Haskell. O'Reilly.
The first is an excellent introduction to functional programming and explains the
background and philosophy well. The second is a concise, short introduction to the
most important Haskell concepts. Real World Haskell contains a lot of practical
material, and is better suited as a second book on Haskell. The complete text
of Real World Haskell is available online.
A list of books (also non-English books) is available on the
Haskell Wiki.