On Thu, Jan 5, 2012 at 10:52 AM, Liam Proven <lproven at gmail.com> wrote:
Very *very* few people's careers are going to
involve programming
computers. One in a million, maybe, if that.
That is a gross exaggeration.
For 2006, the stats I could find without spending all morning, it
looks like this:
US Civilian Population - 230M
US Civilian Labor Force - 150M
Estimated number of "Computer Programmers" (Seried ID EEU80737101) - 700K
So as of a few years ago, in the US, it's more like one in 200 active
workers was classified as a programmer, not one in a million. One can
debate how many of those are "career programmers", but I think the
order of magnitude is close enough.
I also think that there is a significant difference between teaching
elementary/middle-school children (6-12) and college students (18-23)
specifically in reference to abstractness. Young adults pursuing a
technical education are going to be able to handle abstract concepts
better than someone half their age or younger (or they are going to be
finding a new field of study ;-). Having learned these concepts
before age 12 and having taught workshops (as an amateur, not
certified, teacher), my experience tells me that if you want to teach
programming concepts to the age 6-12 crowd, it's important to start
with very concrete examples and build on those to abstraction, much
like teaching arithmetic is easier by putting items on a table and
having a child count and group real objects before moving on to
mathematical notation (numbers, symbols, etc).
To that end, I don't see how teaching BASIC, even 1980s BASIC with its
limitations and line numbers and all, is a terrible way to introduce
simple concepts like assignment, input and output, branching and
control flow. You can do a lot with LET (optional typically, I know,
but useful educationally), PRINT, INPUT, GOTO, and uncomplicated
IF/THEN/GOTO statements. FOR loops, subroutines, arrays, etc., are
easy to add in later, and may be easier if the students have
encountered sets and arrays in their math classes. I would posit that
trying to teach recursion as a programming concept is likely to be
frustrating unless the students have encountered factorials in math as
well. It's a hard enough concept to teach when it's just trying to
explain what 5! is, let alone asking a student to abstract the concept
to general recursion (and besides, unless you are doing certain kinds
of tree walking or string searches, how often _have_ you written
recursive routines? I don't do it as often as once in five years with
the kind of code I write).
Five-ish years ago, I got involved with a thread on the
author/futurist David Brin's blog because he was looking for a
contemporary way to provide a BASIC environment for his, IIRC,
13-year-old son to learn on. There were examples of BASIC code in his
son's math book, but it took extra (and not well known by the general
public) steps to get BASIC onto a Mac or PC of the day. Since he was
looking for a small computer that would be used specifically for this
purpose, not a toolset to load onto a "modern" machine, I pointed out
several kit computers (like the MicroKIM and Spare Time Gizmos Elf
2000) that could run Tiny BASIC. I would be curious to learn what
ever developed from that inquiry. It's only one datapoint, but it's
via someone who took an active interest in furthering their own
child's education, so IMO, one worth examining.
For those that might want to dabble lightly with 1980s Commodore BASIC
on a modern machine, let me shamelessly plug
http://sourceforge.net/projects/cbmbasic/
-ethan
--
References:
http://pw1.netcom.com/~rdavis2/employ08.html
http://answers.google.com/answers/threadview/id/43888.html