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