Some years ago a first year teacher (Name withheld to protect all involved) was trying very hard to teach Binary numbers for a group of sixth graders. It was not going well. Not at all. At the end of class, on the way out one student turned to the teacher and said “This stuff is math. Why are we doing Math in computer class?” The teacher had had a long frustrating day (as days can get for teachers who are not really ready for this sort of thing) and they replied with a conversation what went something like this:
Teacher: “Is this English class?”
Student: “No” (note the student had a very confused look on his face – no surprised there)
Teacher: “Then why are you talking?”
This actually caused the student to stop in their tracks and think. The teacher explained that often times subjects were related and that one used things from one field in other fields. We have no idea if this idea stuck with the student but one can hope so. Even if this was perhaps not the best way to try and teach it.
Those of us who have worked with computers for any length of time and in any real depth do understand how Binary numbers fit in with computer science of course. I believe though that learning number bases is generally helpful to math. Perhaps more helpful than for budding computer scientists.
I was first introduced to number base systems as a grade school student – 5th or 6th grade as I recall. I was fascinated. Binary, Octal, Hexadecimal and more. I spend hours using base 5 for some reason. Base 12 made calendars make more sense to me. Was it the Mayans who used base 12 and base 60? I forget now but is was so cool. But the most valuable thing was that it made decimal make more sense to me. Sure I sort of understood the value of zero as a place holder but knowing that the same things worked in different number bases made it more real to me. It made math more fun to me. I lost that joy some where along the road (teachers? Me? peer stuff? who knows why) but it was computer science that brought it back.
Math and computer science are tied together. But so is physics especially in terms of understanding hardware and its limitations and powers. And natural language for describing algorithms and plans and instructions and so much more. It’s all tied together. I am not sure we do enough of making that clear to students though. We compartmentalize things. Students think that math doesn’t belong in other classes when we know it is essential in science (all sciences) and even social studies. How do we communicate this to students? That may be the key question. If we can tie things together then students can see the relevance themselves. They will know it exists and not have to take things on faith.
Binary numbers fit in with computer science of course,Math and computer science are tied together,They will know it exists and not have to take things on faith.
I think binary numbers (and other number bases) should be introduced in math class. They are a mathematical construct, and should first be studied in their pure form. This also allows people that don't go on to computer science to learn them. Learning them helps you understand decimal numbers better, like learning a second language helps you understand English better. It gives you a "meta" perspective.
Computer science class should build on the theory of binary numbers by discussing implementation issues -- twos complement, sign magnitude, fixed vs. floating point, etc. If you teach this all at once in computer science, many students will walk away thinking binary numbers are some special entity, just for computers.
In the high school class that I teach, I expalin to them that all a computer can do is add. Subtraction is just adding negative numbers. Division is just adding negative numbers over and over until no more can be added.That usually catcher their attention long enough to be able to explain decimal to binary conversion.
That conversation leads into how binaty is represented from a physics standpoint. Rick pointed out that this may lead to the tendency to think of binary as only relating to computers, and in a sense it is easy to explain when discussing the state of bits. However I have found that once one shows students how to do deciaml to binary conversion, decimal to octal or hexidecimal is easy.
This also leads into history lessons; specifically, how the Mayans used base 20, or how Native Americans used base 4, or how base 60 was used by the Sumerians. I have had more success by not limiting the discussion of mathematics and numbering systems to computer science.