“Mathematics, rightly viewed, possesses not only truth, but supreme beauty —a beauty cold and austere, like that of sculpture, without appeal to any part of our weaker nature, without the gorgeous trappings of painting or music, yet sublimely pure, and capable of a stern perfection such as only the greatest art can show. The true spirit of delight, the exaltation, the sense of being more than Man, which is the touchstone of the highest excellence, is to be found in mathematics as surely as poetry.” - Bertrand Russell
The biggest complaint heard amongst a lot of computer science majors is how little most of our math education effects our programming education. While by the end of the major, most people tend to see the light, there are still a few who claim that, “Blah blah class isn’t worth it.” You know what, though, they’re missing the point.
I’ll admit it. I hated math most of my life. I’m fairly convinced I have a condition known as dyscalculia. As such, simple things such as addition, subtraction, and multiplication have always been a laborious task. I understand the concepts behind them, when and how to use them, even why they exist (thanks to my Calculus teacher who explained to us the derivation of the number systems). The way I explain it to people is that my mind crosses wires… for instance, I’m one of those people who cannot get the concept of “Left” and “Right” correct in my head. I will point left and say, “Turn Right,” while giving directions. I’ll also hear, “Turn Right” and I’ll turn left. I have to literally say to myself, “you write with your right hand,” every time to get it right.
What does that have to do with mathematics? The same kinda thing happens in my head when I try to add two small numbers together. My brain restarts in the middle of the calculation and gets turned around. I realize it’s happening, though, so I catch it and fix it… or it happens again… then I catch it again… and fix it again. All this goes on in my head. It’s a loop, of sorts… while (!right) try(); I’ve spent a lot of time and effort trying to get this disorder straightened out and to figure out how to add without getting turned around (I’ll add those tips at the end).
Programming is not math. Fine. I’ll admit it, most of us wind up parsing CSVs, querying databases, writing GUIs, etc… but that’s not why we take math. Math is not some ethereal discovery that man is lucky to happen upon. Math is a language… a language invented to describe reality… a language invented to formulate man’s common existence between observers. This sounds a lot like what programmers do. So while mathematics is not the same thing as programming, it is awfully similar.
Math is a language. It is used for communication of ideals. Just as when someone says “Left” and I turn right, that is a misunderstanding of the language. Just as when someone asks what 86 - 17 is, that’s a communication of rules whose very basis of thought is formed in early childhood. And just as when your project manager says, “We need a higher precision than 14 decimal places, what can you do?”… you need to communicate to him that you know what to do and that it’s reasonable.
I guess my audience for this post isn’t most people already in the field. Those who have been through this and have been around know that they’ve run into situations where a mathematical solution would have been better than a procedural one. This post is to encourage everyone who reads it to continue their mathematical education. It is not useless. It means you can speak to a wider audience.
Tricks I use while doing math:
1) I've found that I cannot add primes. If I encounter a prime and I need to add it to a number, I'll subtract one, add, and then add one to that answer. If I have problems with the number before it, I'll subtract two and do the same thing until it's right. I don't know why, but this helps... a lot.
2) Divide by iteration... In other words, if I want to divide an 85 dollar check by 3, I would subtract 25, leaving 60 which I know is divisible by 3 evenly. 60 divided by 3 is 20 which we'll call component A. Then I subtract 10 from the 25 remaining, leaving 15 and 10. 15 divided by 3 is 5 which is component B. Then I realize that 10/3 = 3.3333.. so I call that component C. Add up A + B + C and I have 28.3333.. It's very roundabout, but it's significantly faster and more accurate than my keeping track of long division.
3) Multiply primes when possible. I seem to have a knack for finding prime factors, so if I guess a prime factor series for a large number, I can generally tweak that to be the right answer if it's not already. Once I have the prime factors, it's a matter of multiplying small numbers by grouping... doesn't work all the time as smaller numbers can create bigger ones, but meh.. better than nothing.


July 15th, 2008 at 3:08 am
There’s them that would say
That mathematics is a tool
And others who write ream and reams
“Fun mathematics!”, “Math is cool!”
Charlatans all, who see not Truth;
I call bullshit, and claim instead
That math is masturbation
Only, with the head.
And actual calculation is
As like a potty joke.
Pretty okay in other circumstances:
But a turn-off, dream-awoke.
Leave that to chips, eh
And rusty minds to un-wither.
We have better things to do:
Calculus, my sweet, come thou hither.
July 15th, 2008 at 9:08 am
I wish Captcha could filter out schizophrenics.