This course will discuss important concepts of functional programming such as recursive definitions, higher-order functions, type inference, polymorphism, abstract data types, modules etc. The programming exercises will illustrate the utility of list-processing, pattern matching, abstraction of data/control, strong typing, and parameterized modules (functors). We also study the mathematical reasoning involved in the design of functional programs and techniques for proving properties about functions so defined. The programming assignments will be coded in SML '97 (Standard ML of New Jersey). and Haskell.
College of Engineering and Computer Science