An introduction to functional programming. Functional composition, recursion and iteration. Procedure and data abstraction using functions. Managing state, streams, delayed evaluation and continuations. Using functional languages as an analytic notation for reasoning about programs. Solution of several laboratory problems.
Prerequisite: None; may be taken concurrently with CSCI 1320 or 1321.