Quantity – Different Kinds of Numbers: Classes
Let me recap what this series of blog posts has been about. I’ve been looking at different kinds of quantities, different kinds of numbers. I started with observations like: it’s meaningless to add 1951 AD to 2009 AD but completely meaningful to take away 1951 AD from 2009 AD. It doesn’t make sense to take half of a phone number, nor twice a phone number, though comparing two phone numbers will tell us if we’re in the same region or not.
It is fun to think about classifications of different kinds of quantities, and there isn’t a single way to achieve such a classification. Those of you familiar with the subject will have noticed that I deviated from a well-known approach suggested by Stanley Smith Stevens in 1946. Many of the discussions about this subject have been focused on statistics – for example, if I use a survey where the answer “1″ means “very unsatisfactory”, up to “5″ meaning “very satisfactory”, does it make sense to compute the mean (average) score of a bunch of these surveys?
My intentions for engaging in this exercise are somewhat different. One, I am interested in the different mathematical reasoning that goes with different kinds of quantities, reasoning that is quite distinct even if the numbers used (e.g. “two”) are not. What you can do with a “two” depends a lot on whether we’re talking about a scalar number or a key. In some ways, the numbers take their meaning from the operations rather than the other way around. More precisely, the operations take their meaning from the actions they represent in the context in which they are used. In fact, what to you and me may sound like a single operation, like “minus”, may have quite different meanings depending on the context in which it is used. We addressed this in a post on unary minus, but the idea applies just as much to ordinary subtraction (“binary minus”). Ordinary subtraction has different meanings (though identical numerical results) when thought of as “take away”, as “missing addend” or as “distance”, and which one we think of most naturally depends on the situation. As grown-ups, we’re have become so familiar with all three giving the same results that we are hard pressed to look at them as different operations. We call them all subtraction, and we expect a single key on the calculator to stand for each of them, undistinguished. For a child, there is nothing obvious or inevitable about this – it must all be learned.
Two, I’ve been wondering how to bring in some of the fundamental thinking and some of the fundamental ideas from computer science into the whole discussion about math learning. There is half a century of re-thinking of mathematics that has been taking place in the world of computers and software, and almost none of that thinking has found its way into the thinking about mathematics we do in school. Depending on how much computer programming you’ve done, you may be familiar with one or more of these terms: interface, data types, data abstraction, data hiding, records, classes, function prototype, implementation, class instance, inheritance.
There is a way of thinking about data, and about working with data, and about representing data in different ways, that comes together in the notion of a class – or at least this is what it is called in some common programming languages, such as Java or C# – that I think could be very usefully imported into the world of school mathematics. I don’t have an easy way to talk about it yet – I haven’t articulated it carefully in ways that will make sense to educators and teachers of mathematics. I don’t quite know where to start. You shouldn’t need a computer science degree to make sense of this, and yet there seems to be a limit of how much I can say about them without bringing in computer stuff left and right. I will attempt to talk about it in settings that are not computer-like, but I assume that some precision will be lost.
The main idea of a class is that of a carefully designed abstraction, one that leaves room for different kinds of implementation. Let’s say I design a bank building, where customers walk in and stand in line for a counter, and behind the counter is a person who is authorized to perform certain transactions on the customer’s behalf. The counter can be thought of as the interface, the boundary, between the customer and the bank. Certain actions can be performed across the interface. The counters provide the face of the bank to the customer. Lots of the work that goes on in the bank will not be seen by the customer. If I, as the customer, come in the bank to deposit a $20 bill into my checking account, I won’t typically see what happens to the $20 bill after I hand it to the teller. I do see my new balance, increased by $20, and that tends to be the limit of my interest in the matter. For example, if I were to come in a week later, and withdraw $20 from my checking account, I would expect them to hand me a $20 bill, but I could care less if it was the same $20 bill that I deposited. Those are the kinds of details that the bank is free to implement in a variety of ways, I just want to know for sure that I can withdraw all my money from my account, meaning I get back the kind of money I can spend in a store, in the amount that corresponds to my bank balance.
Almost all business have a similar distinction between their front office and back office. Certain interactions are public, exposed, accessible from the outside, and they form the basis of my view of what a bank is. It represents a contract of sorts, that the bank has with me, whether explicit and enforced by law, or implicit. An example of an implicit contract would be the Google interface. Google never promised me explicitly what would happen if I type “unlearning math” into their search engine. But I do expect a page back with ten entries, sorted in some way that I trust is helpful to me, each of the entries representing pages that contain the words “unlearning” and “math” closely together. How Google manages to deliver this is not my primary concern, and I trust that the details on how their search engine works have changed considerably since I first started to use them years ago. I assume they have replaced their disk drives for newer models many times over, I assume their web crawling software has been redone many times over, I assume their web page sorting algorithms have been refined many times over, all behind the covers. But for all I know, Google works by having a pool of really smart and really fast Marians the Librarians responding to my queries.
One of the key ideas behind all this is that things can be done in more than one way, and that it is essential to maintain some flexibility in the means and separate it carefully from the ends. For the bank customer, the ultimate item is the stack of $20 bills, for the bank itself, cash and currency are a nuisance, a bother, an expense, compared with the low cost of a megabyte of data on a disk drive and the low cost of sending a megabyte of data over a wire from one place of the world to another.
For a first post on the notion of a class, and on how it may be a useful concept in school math, this will have to do; more to follow.