Daniel Lemire's blog

, 5 min read

On rote memorization and antiquated skills

When I write that we should focus on teaching useful skills, and avoid deliberate rote memorization… I get far more opposition than I expect. To my surprise, there is an abundant supply of teachers and parents openly supporting rote memorization and antiquated skills.

  • When I object to having kids being drilled in doing complicated but useless operations like the long division… I am told that “you need to do it the long way in your early education so you understand what’s going on under the hood.”

Take a pen and some paper and compute 123.422 divided by 12.4. This is a real problem that grade 6 or grade 7 kids are being asked to solve. If you are anything like me, you will probably pause and realize that you have forgotten how to do it. Of course, it will come back… but my point is that it is a dead skill that only a tiny minority of adults use. And most of these adults are teachers.

If we are trying to teach what is under the hood… what is the hood?

How processors do divisions is not quite like pen-and-paper long division. In fact, most mathematicians have no idea how a processor does a division. Though it is an interesting process that might be worth teaching to some high school kids… it never gets taught… Let me repeat that: these educators telling you that kids need to know “what is under the hood” most probably could not design a circuit to compute a division without access to the Internet.

“Knowing what is under the hood” is overrated. Honestly, I barely know what is under the hood of my car. I do not need to. And even though I have been programming for over 30 years, and I am a published computer scientist… there is much that I do not know or understand about modern microprocessor technology. At a lower level, though I know a bit about circuits, but I do not really understand how a transistor works. It is not that I could not understand… it just never proved useful. I could look it up on Wikipedia, I guess, but I am not even motivated to do that.

How come millions of people use computers, but they do not know how transistors works? Well, because knowing how transistors work is not useful to them. Useful facts are relative: to a few people in the world, knowing about the inner workings of transistors is really important, but for most of us, it is irrelevant knowledge. Irrelevant knowledge is not automatically useful by some magical process.

So what makes us so certain that all kids worldwide, millions of them, need to know how to divide 12.45 by 45.1 by hand using pen and paper…?

For a long time, in Europe and North America, privileged kids had to learn latin. The intuition was that since European languages were derived from Latin, learning Latin made you better at these languages. Though this is true, the effect is small. You are much better off learning useful skills (like learning Spanish or German or French) than learning Latin. And that is why few kids learn Latin today.

Just like we stopped teaching Latin, we should stop teaching long divisions and related antiquities.

As far as I can tell, kids are probably better off playing Minecraft.

  • When I object to rote memorization for its own sake, people tell me that what is being memorized is useful. This, somehow, justify forcing kids into rote memorization routines.

Let me restate my objection: rote memorization on its own is theory divorced from practice. If you work a lot with numbers, you will learn to multiply and divide them reasonably quickly. Deliberate rote memorization is an attempt to take a shortcut in the learning process… Instead of having people learn important facts by themselves through practice, we decide once and for all what the important facts are, we delay practice, and start with the memorization of the “important facts”.

And, of all the important facts we could teach kids, we decide that 6 times 9 is one of them. In this world of ubiquitous computers, we have somehow concluded that doing arithmetic super quickly in one’s head is critical.

Let me repeat that I have never memorized what 6 times 9 is… instead, I do 6 times 10 is 60, minus 6 is 54. It takes me a few extra milliseconds I suppose… but my approach scales… to do 15 times 9… I do 10 times 9 is 90, plus half that is 135…

In a country like Canada where we are supposed to leave 15% tips, I am often amazed at how few people can compute the tip quickly. I suppose that is because the multiplication tables only go up to 12… but why 12 and not 15 or 25 or 50? Of course, multiplying by 15 is trivial once you stop trying to memorize and just apply simple algorithms. Maybe more people could do it if we stressed computational thinking instead of rote memorization.

I pity the kids who were forced by their parents into memorizing these tables… I will not discourage my kids from using algorithms to solve problems. Is it any wonder that kids worldwide conclude that mathematics is boring?

And what kind of model of learning does this rely upon? That the brain is some sort of crude data bank to be filled?

Our brain memorizes many important facts because they are useful to us. I know the names of my kids. I can also recall when they were born. I know two natural languages: French and English. I know about the fundamental theorem of algebra. I know about Galois fields. I know how to make excellent bread. I know the exact recipe to make good yogourt. My two sons appear to know a lot about Minecraft. But none of this memorization is deliberate rote memorization. Rather, it is natural or organic memorization… by repeated practice, you memorize important facts. Babies do not learn languages by deliberate rote memorization. Yes, learning mathematics is hard (for everyone!), but it simply requires practice. Nobody ever became a great mathematician, or even a good one, by relying on rote memorization. I have learned many computer languages through my life… The latest one is Go. I think I must have learned the basics of Go in a week or so. How did I do it? I started programming. I absolutely did not start by rote memorizing the grammar of the language. I just started programming and when I got stuck, I looked up the answer. And some facts just stuck with me over time because I kept looking them up. For example, I have memorized that fmt.Println(“…”) will print a string on screen. It is just something that anyone programming in Go will get to know. The objective is never to memorize fmt.Println per se. That string is not important… we just have to memorize it, as a side-effect of our practice. Now, of course, if you enjoy rote memorization, then there is nothing wrong with it. There are entire competitions dedicated to rote memorization. It is a fine sport, but a lousy general-purpose learning strategy… especially when you apply it to kids.