
Ask HN: Programming resources for a 9th grader? - joelhooks
I was chatting with one of the moms at my son's baseball game and she asked my advice for her 9th grade cousin. The kid is stuck for a semester learning FORTRAN from a wizened teacher that believes it is an absolute essential component of child's introduction to computer science.<p>This is how you make kids <i>hate</i> programming. No?<p>I am assembling a list of resources to forward to this kid, and wanted to get your input.<p>Where do you think he should start digging, and what should he do after that?
======
cookiecaper
I think that most critical for new programmers is a nearly-immediate feedback
(reward) loop. You should teach them something that will let them do something
they think is cool almost immediately and something that has enough utility
that it can be deployed for real. As the programmer and a few others (family
members, teachers, classmates) use that thing, the programmer will see the
need for new things, make tweaks, and learn a lot about the environment in
which he works.

HTML might be good in this regard. Everyone hold your horses -- I know HTML is
not a real programming language (no variables, conditions, control structures,
etc.), but HTML is easy enough to understand and can teach an individual about
the rewards that lie in programming, and HTML is a vital skill for most
prospective programmers -- let's face it that most people who want to be
programmers are not fantasizing about a job in the basement of an insurance
company writing business logic, but creating exposed, useful, and beautiful
software for others to use and enjoy. In many modern cases this falls back to
websites.

You'll be teaching the kid some of the basic principles (a bit of perspiration
and study = pride and rewards) that keep programmers going. As you continue to
nourish this principle with progressively advanced topics, ensuring that you
are almost always making something at least vaguely useful, the new programmer
will develop a passion for experimentation and learning that is absolutely
required to be a decent programmer. From here, he'll probably take care of
himself and use you only as a reference material when necessary.

~~~
celer
On your first paragraph, I agree completely. As a relatively new programmer
this was what made me adore Python.

On your second paragraph, I disagree. HTML doesn't have the immediate feedback
of "I can write something that makes my life better" in the same way that, for
example, Python does. Python lets you write something you can use for your
benefit six months in. Something that will actually save you significant
amounts of time in some cases. There is a power and a promise there that I
don't see being matched in HTML. HTML is made firstly for others to view on
browsers, while the first Python script you write can be done just to make
your life easier. "Scratch your own itch."

For your third paragraph, I am again in complete agreement as a relatively
new(2nd year in high school) programmer.

------
Mithrandir
I highly recommend 'Invent Your Own Computer Games with Python'
<http://inventwithpython.com> and How to Think Like a Computer Scientist
<http://www.greenteapress.com/thinkpython/thinkCSpy/> Both are great books
that walk you through the basics up, without talking down to you.

I assume that the kid is on Windows. Using a UNIX-like system (Linux, BSD) is
definitely a good way to understand computers better, especially because of
the large amount of programming libraries available often by simply running
one command. It's not required of course, but it might help him/her. Yet
again, it might not. :-)

Once they've learned the dynamics of Python (or other) setting up a GitHub
account might not be a bad idea.

------
taftster
I think there are other decent choices, but I'm liking Small Basic (from msft)
for my home-schooled children: <http://smallbasic.com/>

There's also Scratch from MIT, but the IDE doesn't feel as polished:
<http://scratch.mit.edu/>

Edit: One of the nice things about Small Basic is that they are also putting
together some teacher curriculum and lesson plans. Very helpful, especially
for home schoolers: <http://www.teachingkidsprogramming.com/>
[http://computerscienceforkids.com/MicrosoftSmallBasicTutoria...](http://computerscienceforkids.com/MicrosoftSmallBasicTutorials.aspx)

No affiliation with any of these companies or sites.

~~~
cookiecaper
I also came here to mention Scratch. I haven't used it but it looks promising.

------
SoftwareMaven
I wrote this post as a result of this question (well, 8th grade) from a
friend: [http://softwaremaven.innerbrane.com/2009/03/advice-
to-13-yea...](http://softwaremaven.innerbrane.com/2009/03/advice-to-13-year-
old-starting.html)

------
cwbrandsma
Kodu from Microsoft research is fun. You make a game. Scratch from MIT is cool
as well. Can do lots of things with it. Alice (alice.org) I'm just downloading
this one now. HTML and javascipt :) Lego Mindstorm A friend of mind is
teaching his kid Python. (4th grader)

------
mhooks
Give them Design Patterns and hook them up to a car battery that shocks them
if they try to fall asleep.

------
pressurefree
fire guy. buy arduino uno. download arduino IDE. file>open>examples

