A Programming Language For Mathematics Education

Speaker: John Peterson, Yale University

When & Where:

12:30pm, Friday, April 4, 2003, Room 400 AKW


This talk explores the use of modern programming language principals in a new domain: secondary education. We are developing a programming language that addresses the core high school mathematics curriculum (algebra, trigonometry, and calculus). Using this language, students and instructors can create interactive visualizations that give insight into essential mathematical principals. A variety of controllers can be attached to an image so that students can readily explore relationships between images and their parameters. Visualization is an ideal way to convey the intuition underlying mathematical principals. We believe that the tools of the programming language community (functional programming, type systems, monads, program generation, reactive programming) are essential to create a language which is powerful enough to encompass the needs of a student throughout the curriculum and simple enough to be usable by all students.

The first part of this talk discusses the programming language side of our research. Our language, Pan#, is definitional: programs are composed solely of nested function definitions. Program semantics can be explained using standard algebraic reasoning. We have augmented the standard mathematics vocabulary in two ways: images and interaction. Functional images (mappings from points to colors) allow students to create pictures in a style that is already part of the basic mathematics curriculum without introducing unneeded computational devices. Interaction is accomplished by partitioning a program into a stateless imaging function connected to stateful controller. This idea of connection between functions and controllers is embodied in a special binding construct that is similar to but simpler than monadic binding. A type system (Hindley-Milner + some extensions) ensures program correctness and provides a valuable feedback path from the language to the student. The system is implemented using a small interpreter that generates graphics code for an an optimizing compiler (developed by Conal Elliott and Oege de Moor) that rewrites student programs as C# code. A viewer loads this dynamically generated code into the student's interactive environment,

In the second part of the talk, we will address the use of Pan# in the high school mathematics curriculum. We compare our language with current practice, graphing calculators and software packages such as the Geometer's Sketchpad. We argue that advanced programming language technology results in a much more useful and expressive tool for mathematics education. There is a strong connection between programming languages and traditional linguistics that re-enforces the concept of language in mathematics. There are strong metaphors that connect the languages of computation and mathematics with a more general notion of language and communication.

Another key idea of this research is the creative use of language in mathematics education. Just as an English class teaches creative writing, a well constructed language allows students to experience creative mathematics. That is, students can apply their knowledge in a manner that is both artistic and mathematically rigorous, producing artifacts (pictures and animations) that can be shared, rewarding students in different manner than traditional problem solving work that is required in mathematics.