Hardware Matters

A big focus of my time these days is on introduction to computer science courses. What might be called CS0 at the university level. basic courses to provide a foundation for later learning. Perhaps these courses will create or drive interest in additional courses. One of the topics that comes up in these courses is always hardware. Is it really needed? After all kids grow up with computers don’t they? They know how they work right? Well I’m not so sure they do. Of course people often point to Dijkstra saying "Computer Science is no more about computers than astronomy is about telescopes."

To some degree Dijkstra was right. But you know I think astronomy is somewhat about telescopes. Computer science is somewhat about hardware (computers). I’m no expert on astronomy but I’ve owned a telescope or two in my time and I’ve looked at the stars. Understanding a little about how telescopes work is quite helpful in understanding how to use them and what you are seeing through them. So too understanding how computer hardware works provides some understanding into how computing works. Especially as to its practical (compared to theoretical) limits.

So I think it is useful for beginners to understand the parts of a computer, especially conceptually, before they get too deep into CS. Registers, accumulators, different types/levels of memory or storage, how binary arithmetic works, and much more. I also think it is useful to explore the various ways of getting information into and out of computers. And how information is stored as well. Can you understand why 0.1 added ten times is not 1.0 if you don’t understand how computers store floating point numbers in binary?

I think we do students a disservice if we skip too lightly over the computer itself. That information is valuable. Of course we should also encourage them to think about alternative ways that computers could work. After all it is harder to break rules through limits if you don’t know what they are.

Now that I have decided that hardware is important I have to figure out what the key must know pieces are. Suggestions?