Speaking of COBOL and Admiral Grace Hopper, I have one of her actual
nanoseconds, a piece of insulated solid wire about 11.2 inches long, when
she was a Superintendent's guest lecturer. Since I was a Navy MSCS
student, she "signed" it with stripes and gaps in magic marker, as the ones
and zeroes in ASCII representing her name.
An enterprising headhunter scoured retirement communities in Florida,
Texas, Arizona, etc., in 1999, looking for COBOL programmers who knew where
the two-digit dates were in the code. In many cases, the source had been
lost by the 1990s, so they really had to know the code. AIUI, the Federal
Reserve and many banking systems still run COBOL executables that have been
wrapped to enable them to be run on modern OSes on current hardware, much
as FORTRAN executables run on NASA missions, such as the Mars orbiters,
landers, and rovers. Rewriting such code would introduce bugs galore,
especially anything contracted out by the government to the lowest bidder.
As for learning computing, I have a slightly different range of students
that are my charges than present company. It starts with kindergartners
and ends with adults of all ages in colleges and universities. OK, so what
the heck can a kindergartner possibly learn about computing? Notice that I
didn't say computer science, that's a subset of computing. Computing
encompasses mathematics, physics, science, engineering, hardware, software,
and all of the more specialized areas under each of those major
categories. Programming isn't even up toward the top, any more than
soldering is, although my students all learn some things that will be
useful throughout their lives, no matter where they wind up career-wise.
Here's what kindergartners can learn about computing: the concepts of
something and nothing, and that there is literally money in computers.
Huh? The little ones don't even see a one or a zero when I start them out
- we start with one of the most fundamental concepts in computing that even
some freshman CS students often don't comprehend, the difference between
something and nothing. I ask them to identify opposites that they can
sense, such as light and dark, a marble and an absence of a marble, left
and right hands, magnets that attract and magnets that repel, etc.
Eventually, we graduate to pennies: nice, shiny, brand-new-from-the-bank
pennies that, to a kindergartner, are actual gold. They play with the
pennies to discover that they can roll around, and learn that they're not
food or nasal suppositories, under careful supervision by multiple adults.
They also find out that there is another opposites concept: heads and
tails, which we acknowledge as what we educators call a scaffolding
element, upon which other concepts will be built later.
They're then provided egg cartons, which enables them to start learning the
concept of organization, which even many adults never get close to
mastering. After a while, the tykes are encouraged to toss the pennies
short distances and they learn that the pennies just happen to fit nicely
at the bottom of the egg-holding parts of the cartons. That's when I begin
repeating the mantra to them every day: "There's literally money in
computers. There's literally money in computers ... " When they start
repeating it at home, their parents/guardians thank me profusely when they
see me.
Now the magic begins - the kids are shown that patterns can be created with
shiny pennies and not-so-shiny empty holes. I collect egg cartons from
institutional kitchens that use real in-the-shell eggs, e.g. breakfast
places like IHOP, Denny's, etc., that serve eggs sunny-side-up/down. Very
few kitchens use real eggs any more unless they're serving dishes with
actual yolks and whites - omelettes, scrambled eggs, baked goods, etc., are
all made with powdered eggs or liquid egg mixtures, even at what you might
consider upscale restaurants. The cartons they use are upwards of
eight-by-eight eggs in size, which stack nicely for storage, as well as
rapid access to make lots of whole, fresh egg dishes.
You might be seeing where I'm going with the eight-by-eight cartons,
because they're ideal for representing arrays of bits as bytes, with rows
potentially representing successive memory locations, registers, graphics
buffers, etc. Of course, the kindergartners aren't going to understand
anything about those sorts of concepts, but by the time I do get to them,
they don't think twice about manipulating pennies in egg cartons.
In the higher grades, I teach them binary math after we map pennies to
ones and the egg holes to zeroes. They haven't learned decimal numbers and
math at that point, yet, so this is a terrific opportunity to get them
comfortable with bits without the confusion of seeing 10 and reflexively
reading it as ten - it's always pronounced "one zero".
At that point, they can learn the four rules for binary addition: 0 + 0 =
0, 0 + 1 = 1, 1 + 0 = 1, and 1 + 1 = 0 and carry 1 to the next digit to the
left. This is much simpler than learning decimal addition and prepares
students by scaffolding decimal math on top of binary math that they
learned as early as possible. Early on, I also ensure that the
something-nothing opposites concept of something and null are deeply
instilled
I use these techniques for students all the way up through elderly adults
to help them understand what's really going on in binary digital
computing. You would be surprised at how many supposedly computing-savvy
people have no idea that computing hardware almost universally executes
everything at the bit level, and that the air around them is filled with
exabits/second of serialized data via all sorts of frequencies and
modulations.
Extrapolate that sort of progression through all of the computing concepts
discussed in previous posts, and much more, using scaffolding all the way
up through the postgraduate computing level and you now have an idea of
where computing education is going. This is not your grandfather's,
father's, or even your own kind of educational experience, this is
something more befitting of the 21st Century, and it's not limited to just
computing.
Waiting until the post-secondary or even secondary educational levels to
teach computing is no longer an option, as we don't have the luxury of only
educating an elite few. We have to start as early as possible with
everyone and build layer upon layer alongside all of the other fundamentals
to establish a citizenry to whom computing fundamentals are as familiar as
the A-B-Cs and 1-2-3s, along with other important ideas and skills that
haven't been taught appropriately for going on 100-plus years.