by Chris Douce
by Jamie ID Campbell
Psychology Press, 2005
When I was a youngster I remember talking to a wise elder relative about my interest in computers. 'Ooh, you have to be good at maths to work with computers' came the reply. 'Is this really the case?' I asked myself? Shrugging my shoulders, I continued what I was doing: typing 'LOAD' then pressing play on the cassette recorder.
Several years later when I was doing some work experience, messing around with an implementation of Basic on a Compaq 'portable' (the type that hospitalised many a keen executive), I asked the IT man a question. I asked him: 'do you really have to be good at maths to be good at computers?' (Meaning, at the time, to have a career in IT; to be a software developer). Of course, my question was profoundly simplistic. The reply that I was given was a pragmatic one and was administered with a sagely nod: 'I think it might help'.
At its most fundamental level software is, of course, entirely numerical. When writing the simplest of programs you are immediately reminded of the connection between programming and maths. You are faced with expressions which comprise of conditional operators, have to construct functions that return values and make data types that are made up of different types of number: integer, real and boolean.
I have been aware for some time of a subfield of cognitive psychology which tries to understand how we deal with mathematical concepts and ideas. The publication of a book called 'handbook of mathematical cognition' has allowed me to see how this topic is profoundly connected to our own.
Handbook of Mathematical Cognition, a collection of papers representing the state of the art, is divided into five parts. Part one is entitled 'cognitive representations for numbers and mathematics'. Unsurprisingly this first part will be of interest to those researchers who study the notation aspects of programming languages and systems (whether it be programming languages or design tools).
The second part is entitled, 'learning and development of numerical skills'. The third part is, 'learning and performance disabilities in math and number processing' followed by 'calculation and cognition' and the part that I found particularly fascinating, 'neuropsychology of number processing and calculation'.
Another key question addressed is which faculties are used to solve mathematical problems - how is 'number' represented and manipulated? Does language have an effect on the representation of numbers (in terms of how numerical values are presented in natural language)?
It's always fun to look beyond your own immediate discipline and it's really fun to see what kinds of experiments other researchers are coming up with and seeing whether certain approaches are adopted by others. An experiment is described which shows that it takes more time to decide which numbers are larger when numbers are close together (i.e., 5 and 6 versus 2 and 8).
Here we find further parallels between the psychology of computer programming and the psychology of mathematics (as a programmer I am continually telling a machine to discriminate between different sizes of numbers). In both computer programming and mathematics we are both obviously constrained by bounded rationality. Only when we try to understand what tasks and concepts are difficult can we then begin to understand how we can improve our educational approaches or develop tools that offer useful support.
I do have my favourite papers; they are: Development of Numerical Estimation by Siegler and Booth. Stereotypes and Maths Performance by Ben-Zeev, Duncan and Forbes explore an issue that is common between mathematics and computing: the gender imbalance. Mathematical cognition and working memory by LeFevre, DeStefano, Coleman and Shanahan is also good fun. I also recommend Spatial Representation of Numbers by Fias and Fischer.
Strategy selection and usage appears to be an important subject. In the psychology of programming strategy and the adoption of strategy during comprehension (as well as production) is a perennial topic. Since the domain of mathematics is particularly precise (it overcomes the notorious issue of the problem domain), studying the literature regarding strategy selection in mathematical performance may yield interesting insights into programmer performance.
Others papers illustrate how learners apply different strategies as expertise increases. Mathematical operations change from simplistic finger-based operation, to verbal counting strategies, to memory-based where mathematical facts are recalled from long-term memory, thus freeing working memory to attend to more complex operations. Of course, there is much similarity with work performed in the area of programming expertise. Interestingly there is also an exploration into the performance of exceptional performers.
There also exists a parallel with our own attempts to create models of programming activities and action. This is clearly evident in the paper Architectures for Arithmetic by Campbell and Epp.
The Handbook of Mathematical Cognition is not an introductory text. The papers demand a degree of familiarity of the domain but the literature review papers will help you to get oriented. It's more like a reference book - something to dip into from time to time to find out what others are working on. What is really great about this book is the referencing - it gives you a whole new set of jumping off points in to the literature which may inspire some interesting ideas.
But do you have to be good at maths to be a good programmer? Of course, the answer to this question can never be a simple yes or no. I find myself agreeing with the IT man who I asked the same question many years ago, 'I think it may help.' My conclusion? Certainly recommended. (But ask your library to get it since it's fairly expensive!)
Do you know of a journal that may be of interest to fellow PPIG members? If so, please tell us about it. Interested in writing a review, or perhaps you are an editor and would like to introduce your journal to us? Please feel free to send us a message.