This course provides a gentle introduction to the ideas and techniques of functional programming, using the Haskell programming language.
Functional languages are great for both rapid prototyping and serious software engineering.
The key idea is to program declaratively using function definitions rather than operationally using assignments. The course will concentrate on developing practical programming skills in Haskell, with a brief look at the theoretical underpinnings. Additional readings may be handed out in class from time to time. Lecture notes will be available electronically in postscript format via the course home page. The weekly assignments are intended to help you master the basic material of the course, which will be examined in the midterm and final.