CS 556 Functional Programming 4 cr.  (4-0-0)

This course covers many of the fundamental techniques and concepts in functional programming. We will look at many important and powerful features of functional programming languages including algebraic data types, pattern matching, higher-order functions, type classes, and polymorphism. We will also cover some theoretical aspects of functional programming including (typed) lambda calculus and structural induction.