Coordinates
- 11 January 2013 (Friday), 2pm-6pm, M001
- 12 January 2013 (Saturday), 11am-3pm, M 001
Summary
This block course will provide a non-trivial introduction to functional programming in Haskell. The introduction is also useful for those who are interested in functional programming more broadly or in other specific functional programming languages such as F#, OCaml, or Scala. The course will cover all the basic of functional programming such as functions, datatypes, recursion, pattern matching, higher-order functions, and polymorphism, but it will also drill into slightly more advanced territory such as parser combinators, generic programming, type-class polymorphism, algebraic structures, equational reasoning, and applications to language processing.
Prerequisites
Attendees are supposed to be fluent in some modern programming language and to be somewhat aware of the basics of functional programming (such as the basic notion of functions in the lambda calculus). Usually, those basics would have been provided in courses such as introduction to CS, programming techniques and technologies, and programming language theory.
Recommended preparation
- Bring your laptop.
- Install Haskell platform: http://www.haskell.org/platform/
- Download 101haskell repository:
- preferred: git clone git://github.com/101companies/101haskell.git
- alternative: download https://github.com/101companies/101haskell/archive/master.zip
Curriculum context
- BSc CS students pass this block course as part of "programming paradigms".
- Guests welcome.
Teaching material
- Slides: (.pdf)
- Code including on-stage coding.
- Wiki content:
Recommended textbooks
- "Programming in Haskell" by Graham Hutton. Cambridge University Press, 2007. Information available online. Some physical copies available in the local library.
- "Learn You a Haskell for Great Good" by Miran Lipovača. no starch press, 2011. Information available online including the book in some format.