# [IAEP] Algebra and Programming (was Re: Sugar Labs, LOGO and Brian Harvey)

Edward Cherlin echerlin at gmail.com
Fri Sep 26 18:37:20 EDT 2008

```On Sat, Jul 12, 2008 at 8:03 AM, Brian Harvey <bh at eecs.berkeley.edu> wrote:

>> But how isomorphic are the domains of maths and programming - and how
>> accessible to most kids...  questions I wonder about ...

Ken Iverson put in a lot of work on reducing the distance, and wrote
an Algebra textbook for an IBM project to introduce programming along
with arithmetic starting in first grade. One teaches a tiny subset of
the language to begin with, just enough to cover the ideas and
manipulations to be taught. Something like this.

So you can type (user input indented, computer output flush left)

1+2
3
1-2
_1

With the notation for negative numbers and the subtraction function
use different symbols. He used the standard times and divide signs,
which the XO provides (×÷)

3÷2
1.5

If I write p for a polynomial evaluation function (also suitable for
mixed radix number notation), then we can represent (x^2)+2x+1, or
(x+1)^2 by its vector of coefficients 1 2 1.

1 2 1 p 0
1
1 2 1 p 1
4
1 2 1 p 2
9
1 2 1 p 10
121

and so on through.

Iverson also wrote Arithmetic and Calculus textbooks for the project.
They are available to be put into electronic form and CC-licensed. The
software is also available for GPLing. I can say this because I
control the licenses, from having led a free reimplementation of the
software, and from receiving Ken's books and others, with the rights,
from the original publisher.

> I agree that in the current test-heavy educational climate this is going to
> be a hard sell -- one reason I'm teaching an after-school class, where you
> don't have to worry about tests. The distinction is between mathematical
> facts (4+7=11, the square root of 2 is irrational, the angle bisectors of a
> triangle meet at a point) and mathematical ways of thinking (manipulating a
> formal symbol system according to strict rules, generalizing from examples,
> etc.).  It's hard to test the latter, but they're much more important in
> the long run, after the kids have forgotten all the specific facts they learn
> in school.

It goes much deeper than that. Mathematics is not calculation and
proof, or even manipulations and generalizations. Those are just basic
tools. Mathematics is a deep study of patterns, in particular the way
in which the same pattern will appear in different domains, like place
number notation and polynomial evaluation.

The proof of Fermat's Last Theorem (FLT) depends strongly on this, in
particular on the Taniyama-Shimura conjecture that the spaces of
elliptic functions and modular forms have isomorphic structures. That
means, in part, that to every elliptic function corresponds exactly
one modular form according to a general rule. Once we know that, we
know that all elliptic functions are modular. But if FLT is false, and
there are two Nth powers that add to another Nth power for some fairly
large N, then we can use the numbers from the counterexample to build
a non-modular elliptic function. But we can't, so there isn't, so it's
true, QED. The Taniyama-Shimura conjecture is proved using quite
advanced mathematical tools, but the rest of the proof is well within
the capabilities of college students and some high-school students.

> California, where I live, has just made a rule that all 8th graders will be
> tested on algebra, starting in a few years, and there's a lot of controversy
> cognitively ready for algebra yet and will fail.  Even though a variable in a
> programming language is a very different thing from a variable in algebra

Part of the problem is that there are many kinds of variables in both
programming and math, including algebraic variables, logical
variables, set variables, and "random variables" in math, and global
vs. local variables vs. objects in programming. None of them are
defined correctly in typical schoolbooks. I had a friend who couldn't
do algebra for many years because she had been told that a variable
"is a number that can change its value." Since numbers are constants,
none of it from that point on made any sense to her. I explained that
a variable name is a pronoun that can refer to different numbers at
different times, just as any personal pronoun can refer to different
people. She went off for half an hour and tried it, and came back
saying that she could do it now, and needed no more assistance.

In some programming languages, such as FORTH, a variable is the name
of a memory location. In others, variables can take on values like
trees. In strict functional programming, variables are immutable. A
value can be given to a variable once, and never changed after that.
(But if a variable has a stream for its value, it returns a different
value each time it is queried.)

So when we are evaluating polynomials and other functions, or solving
equations, or writing programs, we use variable names, but there are
no variables. Just names paired with numbers, or sets, or data
structures, or whatever we can define. If we understand this, there is
no harm in using the term "variable" when it is more strictly accurate
to say "variable name" and also to specify what kinds of object the
name can refer to.

A group of Yale math professors taught in the New Haven middle schools
one year, and reported that many children had deep questions about the
foundations of mathematics that their teachers had never heard of and
had no idea what to do with. Typically children who ask difficult
questions are labeled troublemakers, or even called stupid for not
understanding the (incorrect) explanation in the textbook.

> (the latter doesn't really /vary/ when you're trying to solve an equation),

Exactly. Solving an equation means asking which values of the variable
(numbers that we can call by that name) are solutions to the equation,
and then following an algorithm to find the answers. Varying a
variable is what you do when you draw graphs.

> it seems possible to me that computer programming experience might help kids

This has been verified. In fact, we can go much further. Some
physicists say that you don't really understand any idea unless you
have six different models for it.

> Someone with more energy than I should get a grant

I'll help, but I have too much on my plate to do this.

> _______________________________________________
> Its.an.education.project mailing list
> Its.an.education.project at lists.lo-res.org
> http://lists.lo-res.org/mailman/listinfo/its.an.education.project

--