Introduction
The course provides an introduction to functional programming, covering both, practical examples using OCaml (a non-pure and strict functional language) and theoretical background.
week 1: | historical overview, OCaml introduction |
week 2: | lists, polymorphism, higher-order functions |
week 3: | modules, strings |
week 4: | user-defined types, trees |
week 5: | sets, lambda-calculus |
week 6: | evaluation strategies, implementing lambda |
week 7: | induction, reasoning about functional programs |
week 8: | efficiency, tail-recursion |
week 9: | combinator parsing |
week 10: | types, type checking |
week 11: | type inference |
week 12: | lazy evaluation, infinite data structures |
week 13: | monads |
week 14: | advanced topics |
Literature
Amongst other sources the course incorporates material from the following books (in order of relevance for this course):- Larry C. Paulson, ML for the working programmer (2nd edition), Cambridge University Press, 1996, ISBN 9780521565431.
- Richard Bird, Introduction to functional programming using Haskell (2nd edition), Prentice Hall Europe, 1998, ISBN 0134843460.
- Anthony J. Field, Functional Programming, Addison-Wesley, 1988, ISBN 0201192497.
- Bruce J. MacLennan, Functional Programming: Practice and theory, Addison-Wesley, 1990, ISBN 0201137445.
- Chris Okasaki, Purely functional data structures, Cambridge University Press, 1999, ISBN 0521663504.
- Fethi Rabhi and Guy Lapalme, Algorithms: A functional programming approach, Addison-Wesley, 1999, ISBN 0201596040.
- Simon Thompson, The craft of functional programming, Addison-Wesley, 1996, ISBN 0201403579.