Functional Programming and Intelligent Algorithms
Spring 2016
Hans Georg Schaathun

Reading List

Functional Programming and Intelligent Algorithms

Core textbooks

Simon Thompson: Haskell. The craft of functional programming. Third edition 2011.
Chapters 1-8, 11, 13, 18 are core syllabus.
Stephen Marsland: Machine Learning. An Algorithmic Perspective. Second Edition 2015.
Chapters 1-4, 6.1-6.2 (including chapter introduction), and 10 are core syllabus (Chapter 6.3-6.6 and 14 is removed from the syllabus.)

Books on Functional Programming

Simon Thompson: Haskell. The craft of functional programming. Third edition 2011.
This a very popular academic textbook, including suitable exercises, and highly recommended as such. It covers pure functional programming in general as much as Haskell in particular. It is a little shallow when it comes to monads, which is an important topic to be able to solve practical problems in Haskell.
Bryan O'Sullivan, John Goerzen and Don Stewart: Real World Haskell
This book has a very different focus than Simon Thompson, focusing on how to write useful programs for real-world problems in Haskell. It is not a textbook and offers no exercises, but it starts with the basics and appears to be suitable as a beginner's text.
Miran Lipovača: Learn You a Haskell for Great Good!
Another book for Haskell beginners, this text takes a tutorial approach with very detailed examples. Like Real World Haskell, it covers relatively advanced topics like monads as well.
Simon Marlow: Parallel and Concurrent Programming in Haskell
This book is beyond the syllabus and is a very useful and comprehensive source on parallellising Haskell programs.

Books on Intelligent Algorithms

Stephen Marsland: Machine Learning. An Algorithmic Perspective. Second Edition 2015.
This book has about the right coverage of our two algorithms, genetic algorithms and artificial neural networks. The algorithmic perspective makes it suitable for a practical approach, focusing on implementation of the algorithms. The curriculum is largely based on this book.
Stuart Russell and Peter Norvig: Artificial Intelligence: A Modern Approach Third edition 2010.
This is a comprehensive reference which is widely used as a textbook across the world. It is a probable choice for anyone who wants to dig deeply into artificial intelligence, but may be daunting in view of this particular module. It is also the textbook for a subsequent course called Topics in AI.
Hans Georg Schaathun: Machine Learning in Image Steganalysis (Chapters 10-13 + Section 1.2)
This book is about a particular application of Machine Learning (or AI), and as such, it can illustrate some of the practical challenges involved in using Machine Learning.
Randy L. Haupt & Sue Ellen Haupt: Practical Genetic Algorithms. Second Edition 2004.
The lecture notes for the GA component of the course are mainly based on this book.
David E. Goldberg: Genetic Algorithms in Search, Optimization, & Machine Learning. 1989.
The gold standard for books on GA.

Reference literature

The following books are good references, if you are missing prerequisite skills from your undergraduate studies.

    Richard A. Johnson and Gouri K. Bhattacharyya Statistics : principles and methods
    This is a classic textbook in elementary statistics.

Other documents

  1. Hans Georg Schaathun. Evaluation of splittable pseudo-random generators. Journal of Functional Programming, 25, May 2015. Preprint/Publisher's version
  2. UC Irvine Machine Learning Repository is a repository of sample data sets. These will be very useful to test learning algorithms, and we will use some of the data sets for testing in the exercises.

Hans Georg Schaathun / hasc@ntnu.no