Overview
Our objective is to gain an understanding of the principles of
functional
programming, in which computation is viewed as the
evaluation
of
functions with distinctly mathematical properties. We will gain
a better appreciation of recursion as a programming technique, the use
of mathematical logic (including
induction) to establish
the correctness of programs, and see how to build simple
concurrent
and
distributed systems using
the unique advantages of functional languages. We will also study the
purely declarative construction of elementary data types.
Prerequisites
Textbooks
Administrative Handouts
Stephen P. Carl