I remember thinking that long division was really fun, when you divided a big number by a single digit number.
there was a movement to teach set theory early, but they bungled the public relations http://en.wikipedia.org/wiki/New_math
I didn't learn long division in third grade. It was the first academic thing I didn't get. It led to a war with my teacher, the worst third grade teacher in the history of the world. She of the sending-me-to-the-library fame described in my book.
When I was in 3rd grade, we had a science hour and I thought science was pretty much just like magic.
20 years later, I can't say that I believe any differently. Even though I know on the molecular level how things work, it's still pretty much like presto chango to my eyes.
Though set theory and formal logic are totally sweet, I don't think the average fourth grader has the necessary abstract reasoning to understand them. It's a question of developmental psychology. I think that kind of reasoning comes along when they're in sixth grade or so. (And, really, I had some trouble in college understanding how "the empty set" could be an object in a set.)
Friending you, btw. Even though I really don't need more LJ friends. And I think it is weird that you also know Electra (I haven't spoken to her in a while), but then, I am getting used to the fact that Portland is tiny.
Portland is totally tiny!
Yeah, I think I've read that certain abstract reasoning skills don't kick in until later. But I bet a fourth-grader could draw a damn fine Venn diagram, or fill out a p ^ q truth table.
I was a geek and loved long division when I was in the third grade. But yeah, pencil and paper arithmetic is kind of fun. I remember losing my calculator and getting through a semester of algebra class before bothering to get a replacement, just for the sake of the challenge.
The scary thing about division is that all of the known algorithms for it are clumsy. That's why, of the main four arithmetic operations, it's by far the slowest for CPU's. It's the stuff of nightmares for chip designers. Incredibly slow, error prone, and it consumes a huge amount of chip space.
Hacker's Delight ended the chapter on division with this:
I think that I shall never envision
An op as unlovely as division.
An op whose answer must be guessed
And then, through multiply, assessed;
An op for which we dearly pay,
In cycles wasted every day.
Division code is often hairy
Long division's downright scary.
The proofs can overtax your brain,
The ceiling and floor may drive you insane.
Good code to divide takes a Knuthian hero,
But even God can't divide by zero!
Ooh, I need that book. A lot of things about computer arithmetic are mysterious to me. Starting with why there's an apostrophe in "two's complement".
What about exponentiation? How did the little 2 MHz CPU of the Nintendo manage to calculate so quickly just how many points you got for bursting eight bubbles at once?
(Do you know the answer off the top of your head?)
Power-of-two scale factor?
Sure. If you mean Bubble Bobble, you scored 1000*2^num_monsters. Powers of two can be done really easily with shift operations. Much the same way that you can compute some number multiplied by a power of ten by taking on the right number of zeroes, a shift-left in binary will do the same thing for powers of two. The CPU just takes all the bits in the number, moves them left by some amount and tacks on zeroes. In C terms, you scored 1000<<num_monsters. You can also divide unsigned numbers with truncation by shift to the right, the opposite way. The lowest valued bits will fall off and you'll be left with the quotient. Bit-shifts are relatively slow on modern hardware, but they used to be really important way back when CPU's didn't have multiplication built in.
More generally, for non-negative integer exponents, there's a cute little algorithm called the Russian Peasant's Algorithm. Say you wanted to find x^y. If y is even, then you know that x^y=x^(y/2)*x^(y/2) so you just find x^(y/2) and square it. If y was odd, then you know that x^y=x*x^(y-1). So find x^(y-1) and multiply it by x. In each case, you've reduced the problem a bit and you can recurse down to finding x^0=1.
Assuming that each multiplication step takes constant time, the algorithm performs in roughly O(log2 y). There are factors for which it's possible to do fewer multiplies than the Russian Peasant's Algorithm, but in general it's pretty darn efficient. x^100, for example, requires just 8 consecutive multiplies. One other really nice thing about it is that it only requires the associative multiplication to be defined over the base -- e.g., it works just as well for raising matrices to integer powers.
As for fractional exponents, that's beyond me. All I know is that those are fairly scary to implement.
Well, you certainly do know how to program! But do you know how to create the simple sense of wonder and joy from turning 8 nasty little critters into a plethora of fruit?
I read the Steve Yegge article. I know he's writing for an audience of programmers who have taken math classes, but its pissing me off when he says that Calculus is easy. :-(
Nonetheless, what he says makes sense, especially about teaching probability and statistics before other things. Learning statistics would incite us to learn the algebra and calculus behind it, wouldn't it?
Besides, learning statistics is better so that we understand the statistical crap that politicians and lobbiest (etc) throw at us to prove things, and understanding probability would help people understand the likelyhood events happen, right, which would perhaps decrease the fear factor over things like accidents (like being bitten by a shark) or other events.
Well, that raises an interesting point. If the kind of math we're supposed to be teaching kids is the kind of math that's going to be most useful to most of them in most aspects of their daily lives, then maybe we should throw both long division and
calculus out the window and just make sure that everyone understands the basics of statistics and probability. Like royhuggins
said on Wednesday, "Writers shouldn't be allowed to use statistics in their articles unless they've taken a statistics class."
2006-11-07 05:08 pm (UTC)
Well, perhaps if we waited to teach calculus after a thorough grounding in statistics, since a lot of statistics are calculated using calculus.
Calculus is also useful for understanding physics, which is something people should be exposed to, given that we live in a world with electricity and motion and stuff. ;-)
But, yeah, that is exactly the Roy quote I was thinking about when I wrote the first comment.