Additional profile information on Alfred Thompson at Google+
As the old joke goes there are 10 types of people in the world. Those who understand Binary and those who don't. There seem to be fewer of those Binary understanding people in the world today. Or do I just ravel in the wrong circles? Does computer science really require a knowledge of different number systems anymore?
I learned different number bases in around 5th or 6th grade. I thought they were a blast. I played around counting in things like base 5 and 7 for weeks afterwards. The pattern and structure of numbers just made so much sense to me after that and it was fun seeing how it worked in different variations.
Then when I started taking computer science classes and Binary and Octal (Octal works very nicely to group things on computers with 12 bit words) were part of the daily vocabulary I felt right at home. Later using Hexadecimal was also pretty easy though I admit to being geek enough that I had a calculator that used Decimal, Hex, Octal and Binary and I used it quite a bit.
Back in the day I used Octal and Hex arithmetic to work my way through stack dumps, crash dumps, and to make patches in code of all sorts. Binary was the number system of choice for bit flags and setting and checking bits was something I did every day - especially when I was doing OS development those many years ago. I was as likely to want to know an ASCII code in Octal as Decimal or Hex when looking at data dumps. Today I still enjoy my binary coded decimal clock. In spite of the fact (or perhaps because of the fact) that it drives my wife crazy when I point to it and ask her what time it is. There was a time when she could have told me faster than I can but she's a little out of practice.
These days it seems as though Binary, Hex and especially Octal have fallen into disuse. Memory is cheap so people fell ok using a whole word to serve as a Binary flag. Sure there are people doing programming in C/C++ where they occasionally look at raw data but how many recognize that "20" means a space? Or maybe I'm wrong and people are teaching it. But are they teaching it as fun?
I've never been a math geek. Sad but true. Still learning binary and octal and hex (and more) gave me an appreciation for how numbers really worked. Just like learning different natural languages helps people understand how their own works I found that learning these other systems gave me a deeper understanding of Decimal. It was a great thing to learn at an early age. Its a shame that it doesn't seem to be part of elementary school math anymore.
I don't see many people getting down to the bits and bytes anymore - especially not to the bits. Are the days when one needs to know the bits gone or are they still around? Does understanding Binary (at least) still add an important component to a liberal computer science education? What do you think?
[Welcome Oregon Ducks from CIS 210 - if you are interested in a possibly interesting binary number project check out Binary Number Game.]
I'm not much of a hardware guy. Oh sure I have built a few systems and I can add and replace hardware with the best of them. I've installed hardware since back in the days when installing software meant bringing a tool kit so you could connect wires and cables and all sorts of things that aren't even included in computers today. So I can do it. It's just not something I think of as fun. So I buy my computers "off the shelf" with most additions added at the factory. More on that later.
Now not everyone feels the same way. My friend Max had a great Max Builds a PC series on Channel 8. It was very interesting and he got a lot of great feedback about what parts to use. On paper the system looks wonderful. It's probably pretty good in real life as well. But while it works for one of a kind systems how well does it scale?
Build it your self systems are very tempting as a way to save money. They and their close cousin the "white box" are some of the things that some companies and more and more schools are looking at to save money. Take for example this post by Christopher Dawson. He suggests that by putting his students to work (free labor) and buying parts he can build computers for his school at a much lower cost than he can by buying complete systems from a hardware company. The traditional "white box" vendor follows pretty much the same model but without the free labor. The lack of engineering and other costs (marketing, shipping, etc) lets them sell for less. It all seems so good.
I'm skeptical though. Not because I have any great love for the big hardware companies or because I have a careless attitude about money. No, rather it is that I have had some bad experiences in my short 35 year career and they leave me gun shy. That and because I have worked first hand at a number of companies who design and make computer hardware I have some appreciation for what goes into their boxes. It's not as easy or as simple as it appears. There is some real value in having professionally engineered computer systems.
When I first started teaching high school the school had built a lab out of "white box" computers. They had saved a lot of money. Unfortunately we had a lot of problems with them. Not just the usual early life failures but some of the pieces just didn't seem to work together well. The systems never really became reliable and I was happy to see them go a few years later. The time and effort we (staff) spent and the lost opportunity costs of students not having working computers really seemed to me to exceed the value of the money that (in theory) we saved. I've heard good stories and bad so your mileage may well vary.
Computer hardware is complicated and things do not always work as well together as one might think. How many people build their own Apple computers from scratch parts? Not many. Apple keeps tight control over the computers that are supported under their operating system for some good reasons. First among those is that it allows them to better control the quality of the user experience. PCs don't have that same tight control. The big companies on the other hand do have engineers and testers who do a strong job of making sure the components they use work together. That has added value to me. Perhaps not as much as the cost to everyone but it works for me. Because I do not want to spend my time fooling with hardware I buy off the shelf. Its a matter of priorities.
Now money is tight in schools and nowhere is it more tight then in technology. So building your own is doubly tempting. What I did when I was a school technology director was to buy top of the line off the shelf hardware for key applications - the things we absolutely needed to work everyday. The servers were designed and engineered as servers because a number of people who ran servers for businesses recommended that there was a lot of difference there. That worked out great for us. The business manager had a top of the line off the shelf name brand. Getting receipts in, payments (especially payroll) and managing the business of education was key.
In the labs and for many of the others we went down a notch. We didn't build our own (employee time was valuable and we paid students for their work - rightly so I think) but we didn't go with the most expensive brand names. That worked as well. We did maintain a spare parts inventory - mostly disk drives, keyboards, mice and some optical drives - and that let us repair most systems pretty quickly. But we started with professionally engineered systems and I think that was the way to go.
I imagine that in a vo-tech or other school with a computer hardware program building more computers from parts might work out. There are always trade offs though. I wonder how many of them build their own school buildings and school busses with student labor and in the school shops.
The other day I was chatting online with a good friend of mine. Dave was a teacher but has gone back to industry. He's a SharePoint consultant these days. Its been a real learning experience for him and he seems to be enjoying it. But one of the things he told me is that he thinks schools need to teach XML. On a day to day basis he's using that quite a bit. It is the language that applications use to share information. It is used for customization in SharePoint and other important applications and tools. It is also used within programs to comment code to automatically generate all sorts of things from Intellisense to documentation. In short, XML is showing up in a lot of places.
Now I have to confess that I have probably not been paying enough attention to XML. Oh sure I know its out there and I see it around. I know that it is the way LINQ queries return data for example and that is something high on my list of things to know more about. But I haven't really moved it to the top of my "things to learn" queue. After chatting with Dave I'm rethinking that.
There are a couple of questions that you my readers can help me with. For those of you in industry, just how important is XML these days? And if it is very important what do you think students should be learning? Just the basics because implementations are all over the place or are there specific tools or applications that are so critical that everyone knows them? What do you wish you had learned about XML before you entered the workforce?
And for those of you in education (especially at the university level), are you teaching XML and if so how, when and where in the curriculum? I'd really like to know where the logical place in curriculum is for XML.
Opinions of all sorts are welcome. Let's have a conversation.