Daily Archives: July 1, 2011

Algorithmic Thinking

some proto-thoughts on algorithmic thinking…

Algorithmic thinking is fragile thinking. Let’s say I have a computer issue, like I need to mount a hard drive. Now, I could just google it and find instructions on how to do it. I could copy and paste an example line from a sample fstab file. That’s algorithmic thinking: Google it and follow the instructions.

However, in this example, I don’t know anything about hard drives. I don’t know anything about mounting. I don’t even understand what each option means in the example line.

Sure, it can get me through the day, but it doesn’t mean I understand anything. I don’t have any feel for what’s going on. So, when the algorithm fails, I don’t know how to solve my problem anymore. If the drive doesn’t mount, I don’t know why it didn’t mount. I also don’t know what to do next to solve the problem. Shallow thinking breaks when it deviates from the algorithm.

Some math students are good algorithmic thinkers. They can follow directions really well. However, when the problem changes slightly, they’re dumbfounded. If the word problem is told is a slightly different order with slightly different terminology, they are stuck. They don’t truly understand the topic; they only know how to copy the algorithm.

I could be a master googler. I could know how to access information rather than keeping any of that information in my brain. However, it means that my thinking is not only shallow, but also fragile. Any time I have to deviate from the exact directions, I’m lost.

That’s not to say that this type of thinking is completely useless. One’s knowledge is naturally shallow when one begins to learn a subject. Mastery, though, can’t come from shallow thinking. Instead, one must to expose one’s knowledge to those situations where one can’t follow directions. This conflict forces the mind to learn a subject more deeply. It means the knowledge becomes more robust. The end result in my field, for example, is that I’m able to actually program instead of copy and pasting code. Or I can troubleshoot a computer issue instead of googling and picking random things to try.