MAC 3025 Algorithms in Haskell

This course challenges more traditional methods of learning algorithms, by using a functional programming language Haskell. Functional programming language gives a simple model of programming: one value, the result, is computed on the basis of others, the inputs. Because of the simplest foundation, functional language gives the clearest possible view of the central idea in modern computing, including abstraction (data abstraction), polymorphism, and overloading. Functional programs are relatively easy to maintain, as the code is shorter, clearer, and the rigorous control of side effects eliminates a huge class of unforeseen interactions. This leads to understand the algorithm itself more quickly and to use that understanding to explore alternative solutions. This course covers traditional topics in sorting, searching, graph algorithms, as well as algorithm design strategies: divide-and-conquer and dynamic programming. The emphasis is on intuitive and pragmatic program development techniques. Prerequisite: (MAC 2010) (every third year)

Credits

3

Prerequisite

MAC 2010