3 credits.

Prerequisites: C or better in CSCE 330, CSCE 350, or MATH 374.

Functional programming as a paradigm. History of functional languages from Lisp to the present. Programming in Haskell, ML, or similar language at an intermediate level: recursive and higher-order functions, list comprehensions, types and classes, monads, lazy evaluation, reasoning about programs.