In functional programming, we shift our focus from data objects and their representations to functions that act on data. Programs are formulated as compositions of functions, rather than as sequences of statements. This leads to a programming methodology that is quite different from that learned in using statement-oriented languages. This course introduces the student to functional notation, recursion, higher-order functions, reasoning about functions, and polymorphic type systems. Functional programming languages are known for their increased productivity and reliability, due in part to the higher levels of abstraction provided by functional languages.
Course is taught by lecture with small weekly programming assignments.
Experience is gained by programming in the functional language Haskell or one of its close derivatives. Recent advances in functional programming languages allow them to use updatable state in a safe manner and to cause effects on the real world. Students gain experience by writing programs using these features to program interactive window-based programs using an embedded widget library. There is currently no scheduling information for Functional Programming. It may be offered every other year or on an otherwise intermittent basis.