[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [seul-edu] Language to teach 10 year olds
I think we are a bit off topic discussing "marketable" languages in this
thread. Not that it isn't a valid topic. I just don't see the
applicability to what language to introduce to 10-year-olds, most of whom
are surely still a long way off from entering the work force.
On Mon, Jul 16, 2001 at 11:51:19AM -0400, Chris Hedemark wrote:
> think the best hope for a young programmer or a young network administrator
> is to give them practical skills at the high school level (and sure teach
> them theory along the way, but using real world practical languages).
OK. At the high-school level, I'll grant you.
> I do
> think academic languages that are rarely used in the real world are a waste
> of precious time that could have been used to teach a practical language.
But in the original context, teaching a 10-year-old, the criteria for
beginner language selection are going to tend far more towards the "what
works best with kids" end of the spectrum than "what will get the child a
Why not have both? I think if you're only just introducing programming at
the high-school level, you have already missed a great opportunity to get
kids started at a younger age. Depending on the child, anywhere from mid
to late grade-school is a good time to start. And certainly at least by
junior high (ages 12 through 15 where I live) they are ready. From this
vantage point, using a more "academic" language at first has some merits.
By the time high-school (age 15 through 18) arrives, then yes, we are
ready to prepare the child for the work force, and the focus needs to be
much more on "practical" languages than "academic". So, start the child
with a "teaching" language in the earlier grades and introduce new
languages as the child moves into the "preparing to work" stage of their
> But no real experience that they can put on a resume. Picture this, a
> student is sitting in a job interview for a web programming position where
> good knowledge of Perl, Tcl, or C would be enough to get the job.
> Interviewer: "So tell me, which of the requisite languages do you have?"
> Interviewee: "Perl & Tcl."
> Interviewer: "Did you learn these in school?"
> Interviewee: "No. In school we learned Foodle, Topaz, and Hobo."
> Interviewer: "I never heard of those."
> Interviewee: "They are strictly academic languages. They are used to teach
> programming theory."
> Interviewer: "So where did you ever learn Perl & Tcl?"
> Interviewee: "On my own, at home."
> Interviewer: "Oh look we're out of time. It was nice meeting you. We'll
> give you a call in a few days."
But step back from the problem again. Are all children who are taught
programming in high-school going to get jobs in programming? What level
of programming are they going to need in their (programming or non-
programming) jobs? Macro-scripting for a spreadsheet or word processor?
PHP? Perl? C? There is no "one-size-fits-all" language for "the
marketplace" (which is huge, and encompasses a broad palette of
languages). The "hard core" geeks *will* be off on their own at home
learning C, C++ or what have you. It is highly unlikely their high-school
education is going to prepare them adequately for the market anyway. Their
schooling *will* be untraditional, usually at home, and hey, guess what,
there actually are employers who will hire them. If you're a company
hiring someone fresh out of high-school, you have different expectations
than a company hiring someone out of college or university. You're more
apt to see self-taught languages as an asset than a liability. It shows
incentive on the part of the student, that they have the "right stuff".
As an employer, I would be very wary of hiring someone fresh out of high-
school who did *not* pick up additional languages at home. I also
wouldn't count on their high-school programming courses to adequately
prepare them to hold down a job using the languages they picked up in
those courses. I would want to see plenty of code written outside of
school projects as proof that the student knows more than just how to
parrot back to the teachers what they've been taught in order to make the
> So again, why waste precious time with a language that has no practical
> application, when you could teach the same theories using a well known
Because it isn't a waste. Because kids who are going to learn to program
for a living aren't just going to learn one or two languages. They will
end up learning dozens. Get them off on the right foot, starting them out
with a firm foundation, knowing the fundamentals of programming using well
designed languages. You do them a disservice if you sacrifice clarity of
programming concepts in the name of being practical. (For example, I
personally think C is not the best "teaching language", not even for high
> > For me, the primary discussion should be what educational value a language
> > posesses (I've made my point - Squeak Smalltalk). If this happens to be a
> > popular industry language so that kids can have summer jobs with it -
> > But that should *never* be an a-priori decision factor.
> And why not? What is the value of using Foozle over Java? Good programming
> practices and theory can be taught with any language.
To use an idea that Stroustrup introduces when talking about C++ support
for an object-oriented paradigm, it is the difference between a language
"enabling" a certain way of programming and "supporting". Yes, good
programming practices and theory can be taught with any language, but some
languages support it whereas others only enable it. So, back to the
original problem, what is a "good" beginner programming language? What
are the most important features of the language that are *supported* by
that language? And for what age range, and with what end product in mind?
An understanding of procedural programming? Objects and classes?
Good program design? Debugging? Employability? Or a mere appreciation
or "literacy" in programming?
I don't think you're going to get any *one* answer to any of these
questions. I would say that so far as teaching my own children is
concerned, it's going to be a little bit of each, and it's going to start
early, and it's going to take a long, long time. It will likely involve a
whole host of programming languages.
I have already shared in a previous post about how highly I regard
community and relationships in choosing which language to start with. My
son and I are going to start with Python because we know people who also
know it and we all think it is a great language to learn with. This is
backed up by comments from the broader Python community, and backed up
with some excellent resources for using Python as a "teaching language".
Whether or not Python lasts more than the next five years is going to be
irrelevant for us at this stage. He's seven, and I'm going to be around
when he's twelve to help him with whatever his "language du jour" happens
to be that year. He's still going to be a few years away from entering
the work force with what he has picked up. Most of it is going to be
at home, and I think that will reflect very well on him indeed when he
says in *his* interview fresh out of high-school:
"Yes I know C, and Perl, and Python, bash, C++, Java, and a whole
host of others. I learned these all at home from the time I was
seven. I can show you some recent projects I have been working on
with some friends just for fun. Oh yes, and also we learned
Foodle, Topaz, and Hobo at school which I know you probably
haven't heard of, but they helped me correct some bad habits I
picked up along the way, and I learned some new concepts about
good program design from them. Do I get to do much design in
this job? Because that's what interests me the most: designing
new things and then implementing them in code. Would you
like to see a design I'm working on for a really cool project me
and my friends thought up last Thursday?"
And he will get the job. And I will be very, very proud.
nSLUG http://www.nslug.ns.ca email@example.com
Debian http://www.debian.org firstname.lastname@example.org
[ pgp key fingerprint = 7F DA 09 4B BA 2C 0D E0 1B B1 31 ED C6 A9 39 4F ]
[ gpg key fingerprint = 395C F3A4 35D3 D247 1387 2D9E 5A94 F3CA 0B27 13C8 ]