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))

  • $\begingroup$ At the end of page 320, the text says: "In particular, Section 3.1.3 argued that, in the presence of assignment, a variable can no longer be considered to be merely a name for a value. Rather, a variable must somehow designate a “place” in which values can be stored." So far, so good. It goes on: "In our new model of evaluation, these places will be maintained in structures called environments. An environment is a sequence of frames. Each frame is a table (possibly empty) of bindings, which associate variable names with their corresponding values." Severe violation of the KISS Principle! $\endgroup$
    – Scott Rowe
    Aug 2 '18 at 15:38
  • $\begingroup$ Interesting post. Now I wish we had a blog to place it in. To continue your comparison with drivers' ed., the drivers should be taught how the compression and fuel-air mixture achieves combustion. This, of course, only after an explanation, all be it brief, of how external combustion engines work, and why they failed for automotive applications. They should also understand how the gearing rations in the transmission, and rear end, convert the engine torque into motion, and how different tread patterns avoid hydroplaning, etc.....? $\endgroup$ Aug 2 '18 at 15:45
  • $\begingroup$ You have the vision, the credentials, and the knowledge needed to create a modern replacement for SICP. I look forward to reading the new textbook. From this question it seems there is an audience for updated materials. $\endgroup$ Aug 2 '18 at 15:52
  • $\begingroup$ @GypsySpellweaver Siphonaptera is a rhyme by the mathematician Augustus De Morgan, named for the biological order of the flea: "Big fleas have little fleas upon their backs to bite 'em, And little fleas have lesser fleas, and so, ad infinitum." All these programming bugs biting us started with the Byte, which was bit by the Bit. Similarly, Chemistry is founded on the proton, neutron and electron, and so teaching that left those out would be incomplete. $\endgroup$
    – Scott Rowe
    Aug 2 '18 at 15:56
  • $\begingroup$ Staff and students will appreciate your new book, PACT. Pragmatic Approach to Computational Thinking promises to deliver "only what every student really needs to know." Professors will appreciate PAACT, Pragmatic Approach to Advanced Computational Theory. $\endgroup$ Aug 2 '18 at 16:48
  • 1
    $\begingroup$ @GypsySpellweaver wrt the blog suggestion...you could always do as Worldbuilding and create a blog on Medium, though I think they might be transferring it somewhere - might want to ping Monica Cellio, as I think she's the main coordinator of the blog over there. $\endgroup$ Aug 3 '18 at 0:57
  • $\begingroup$ @heather We do have a blog for CSE in the works. It just happens to be a low priority, relative to real life, for the team developing it. $\endgroup$ Aug 3 '18 at 1:03
  • $\begingroup$ @GypsySpellweaver please state your question in the form of an Answer. $\endgroup$
    – Scott Rowe
    Aug 3 '18 at 1:56
  • 1
    $\begingroup$ Is there a question about cseducators.stackexchange.com here? If so, please highlight it in some way. If not, this is off topic. $\endgroup$ Oct 18 '18 at 15:41
  • $\begingroup$ @PeterTaylor Clearly, there is a question about how to teach computer science. I think that is on-topic, otherwise, please direct me to a site where it is? $\endgroup$
    – Scott Rowe
    Oct 18 '18 at 22:59
  • 1
    $\begingroup$ Questions about teaching CS belong on cseducators.stackexchange.com, not on cseducators.meta.stackexchange.com. $\endgroup$ Oct 19 '18 at 6:13
  • $\begingroup$ @PeterTaylor it is a question about questions about teaching. Your question is a question about questions about questions. I think I need a meta-analyst... This place is making me think about going crazy! $\endgroup$
    – Scott Rowe
    Oct 20 '18 at 0:06
  • $\begingroup$ Remembered this old thread from this recent chat $\endgroup$
    – Rusi
    Aug 17 '20 at 10:17

No one else wanted to offer a response, so I will.

The most destructive and dangerous fallacy that humans have had, and continue to have, is Magical Thinking. Education has to start with facts, and build up only with layers of well-known and reasoned concepts. There is no crying in baseball, and no magic in computing. A computer is literally and entirely a large number of transistors acting as switches, nothing more.

We need to begin with the very first insight about computing that anyone ever had: Ada Byron's idea that numbers can symbolically represent other things, like letters or anything with discrete characteristics (or things that can survive the brutality of being sampled digitally).

If we start at a higher level and leave this fundamental insight unexplained, we are doing a blatant disservice to our students. This is not Hogwarts, and there is no magic. The entire basis for computing being an equitable, accessible field is that it can be taught and understood, so we should not skip the basics.

Teach everyone the same stuff. Don't leave out the fundamentals. Don't start with abstractions that are unexplained. Anything unexplained is potential error, and these days, that is unacceptable.

  • $\begingroup$ Pretty soon, AI will be able to do most things. What can only humans do? $\endgroup$
    – Scott Rowe
    Jan 1 '19 at 3:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .