I often see a distinction made between teaching school-age people 'Computing' and teaching Computer Science in college or beyond. The attitude about general education teaching seems to be that we can start where we are today and just teach that, but for more in-depth understanding, it is better to start with the development of computers and include a wider background of hardware and so on.
I realize that we can't teach everything to everyone, but it seems to me that leaving out the basics of how computers actually work is a disservice to students. I would say the same thing about teaching someone how to drive: they have to have some understanding of the engine and transmission, brakes, how the tires stick to the road and so on, or else they will be dangerous. The best preparation for driving is to learn on something simpler, like a bicycle.
I have been reading this free copy of Structure and Interpretation of Computer Programs (SICP), which is in fact the same textbook that one of my professors used over 3 decades ago when I was in college. It still seems perplexing, cumbersome and entirely unnecessary to me to introduce an entire method of doing things for 300 pages -- the substitution model -- before disclosing the mystery (or misery, as they might say) of Assignment. Why teach people something that the authors admit is impractical in the real world, merely because they think it would be nicer if the real world worked that way? No other field has this kind of arrogance, as far as I know. Put Assignment on page 3, where it belongs. It is the entire point of why we created computers, and variables are the very thing that make computers and programs what they are: a unique and unduplicated feature of reality. Nothing else in nature works like a variable! Teach that first.
I respect SICP and the authors, and when I was a student (already with years of exposure to the primitive computers of the time) I could see the 'academic' slant that they put on it, but it did very little for the half of the students in the class who washed out or gave up on computing.
The modern world is a huge and growing ziggurat of concepts and systems. If we just plop people down on the top, they will have no idea what they are using, what is using them, and how and why it all got to be that way. It is an arduous climb to the top, or to explore any one level, but building an accessible ramp will not give people the background they need to really make use of a field.
As an example, my father first got a computer less than 2 decades ago, so he was plopped in to Windows, email, images and so on. His major activity on the computer seemed to be email, and exchanging photos. I can't tell you how many times I walked him through attaching and detaching photos, and every time I said 'click' he would always bark: "Right click or Left?" No matter how many times I said 'click' means left and "right click" means right, he had no basis for the distinction, so he could not realize that right clicking invokes a contextual menu. This is like how some functions of a car are conveniently on little stalks arranged near the steering wheel (my car has three, and it is pretty old), while all the others are on the Ribbon, er, Dashboard (now why the heck is it called that? Oh yeah, muddy roads and horse's hind-ends).
If my father had understood that we started with toggle switches and lamp bulbs, then went to Nixie digits, then Teletypes, then character terminals, then added images, then someone figured that we might as well create a comprehensive OS with a UI that all programs could make use of instead of reinventing it each time, then my father would have understood the difference between frequently-used contextual actions, and the blizzard of lesser-used Menu actions.
It shouldn't take too long to start students at the beginning, continue until the reach the present, then teach. Someone I know says that not disclosing something is the same as lying to them. Perhaps we should no longer have these implicit "lies to children" by withholding vital background from them?
(I was tempted to name this post "That's Really SICP!" but I figured that most people would not get the reference - 'sick' is like 'bad' was in the 70's. But, I bravely turned my keyboard and fled from making yet another joke within a joke within a joke because:
0) No one gets my jokes anyway, and
0) People find them irritating
(A reference to The Dancing Wu Li Masters))