Primary Statement
Behind all of the various forms of computational technology that surround us is computational language.
The kinds of computational tools we find in our environment constantly shift.
Computational languages also shift, but they shift more slowly and embody a history. A language is a culture.
The functional programming paradigm has a deep and robust mathematical history going back to the 1930's in the work of Alonzo Church,
and it will likely have a lot to do with the style of future programming.
It is also the kind of programming that is most essentially related to mathematics. It's all about functions.
Knowing how to use various tools to solve various kinds of problems provides one kind of technological understanding,
but learning how to express one's thoughts in computational terms provides quite another. Literacy is all about language.
For example, a tuple, an ordered list (x, y), might represent a point, a fraction, or a vector.
What distinguishes the type of ordered list we're dealing with is the set of functions we use to describe its behavior.
Adding fractions is not the same thing as adding vectors.
Contemporary programming is about describing the behavior of and the functional relations between various kinds of objects.
How we organize these functions and objects varies according to different schools of thought in computer science; however,
the entire secondary mathematics curriculum could be usefully described in terms of functional relations between numbers, tuples, and lists of tuples.
Teaching students to reason and articulate their thoughts in these terms would give them a relevant foundation in both mathematical and computational literacy.