

Ask HN: How to get 13yo's excited about programming? - hugoshteeglitz

Hello all!<p>I&#x27;m starting an afterschool CS program whose goal is to get kids (ages 13-15) excited about computer science and hacking. So far, I&#x27;ve been constructing a curriculum based on pure CS principles found in MIT&#x27;s OpenCourseWare classes. My concern is that the kids will either be intimidated or bored by the topics in a college CS curriculum.<p>Is there any other sort of open source CS curriculum any of you would recommend to get kids excited about programming? If there&#x27;s any source of &quot;fun and useful hacks for beginners&quot;, I would love to hear about it.<p>TL;DR If you&#x27;re a 13 year-old who&#x27;s skeptical about CS, what would you want to see or learn to get you excited about it?<p>Thanks everyone!
======
throwaway344
Hey! I'm a 13-year old who is interested in CS and programming in general, so
I meet at least one of the given categories. I have been programming for a few
years and since then I have tried to teach friends programming. I have not
really successed much, save for one person. In that case I gave him my copy of
"Head First Python" and showed him how to build a tiny little web app. He was
really impressed by this because it shows how there really isn't any
difference between what he could do, and what so-called real startups can do.

To me that's the key point. They need to understand that what they can hack
around with in Python or whatever language you choose is just the same thing
that real progammers do simply varying in scale. With that in mind, I would
stay away from direct CS ideas without clear practical relations to things
that they can build by themselves.

~~~
tptacek
You write extraordinarily well for a 13 year old. Keep working on that. It's
going to be way more important than you might think it will be, today.

As the parent of a 12 year old and a 14 year old, lemme ask you: what got you
starting coding? What keeps you interested? My older kid hacks Minecraft a
little, but I'm still having trouble coming up with interesting projects for
him to work on.

~~~
chunky1994
I'm 19 now, however my dad got me really interested in math when I was around
that age. (Cs-ey math). He had this book on fortran which he told me to read
before falling asleep as a way to get me to sleep by my bedtime.

It was a pretty profound book, and he used to always explain everything to me
in terms of patterns and sequences, and could see if I could guess what lay
ahead (in terms of a specific pattern or sequence). It was quite exciting when
I got the answers right.

I would guess that a similar approach would work now, perhaps with a more
modern language?

Also, kids (at least I know I used to) love stories on web security
(admittedly the gritty details can be boring to them) however, with your
expertise I'm sure you could find some way of conveying the excitement of
beating the system without actually going into the details.

EDIT: To answer your question particularly about projects, I think that they
will grow into coding from the more math-like perspective that I described.
When they figure out algorithms and want to actually see them fleshed out in
real results, they'll automatically take to coding things. After that, the
world is their oyster.

~~~
dylangs1030
Curious, do you remember the title of that Fortran book? Was it a for kids
book or an actual textbook? It sounds like a great place to dive into Fortran,
from what you described.

~~~
chunky1994
I distinctly remember it was the numerical recipes book, and the language used
was Fortran 77; so, it was an actual textbook.

However, I really didn't understand much, until my father explained it to me
in very simplified terms. The concepts are pretty simple, the details are not.

~~~
dylangs1030
Numerical Recipes in Fortran 77? [http://www.amazon.com/Numerical-Recipes-
Fortran-Scientific-C...](http://www.amazon.com/Numerical-Recipes-Fortran-
Scientific-Computing/dp/052143064X)

Cool, I'll give it a go, thanks for sharing :)

------
nandemo
I read this blog post by an Argentinian guy who teaches programming to
elementary school students. Maybe not exactly what you're looking for since
it's primarily about programming and not computer science in general, but it
might give you some ideas. In particular, it might give you a sort of
yardstick for how much kids can learn. He started them on Python (though some
kids already had experience with another, pedagogical programming language),
then switched to Haskell. I was surprised by this:

 _> When I presented Haskell at first time in both groups, they were making
conclusions in only two hours about these topics:

Functions, expressions and types (they answer questions about the type of
functions and expressions)

Parametric polymorphism and polymorphic functions

Currification

Sum and product types

Pattern matching.

Partiality and the use of Maybe._

And this is just beautiful:

 _> Map, filter and fold, comparing them with iterative implementations in
Python. They infered the types of the paremeter functions. One girl understood
the difference between foldr and foldl, and she said "if the binary operation
is conmutative the result is the same"._

Although he seems clearly excited with Haskell, I think the interesting issue
isn't whether "Haskell is a better teaching language than Python" but just how
much kids can learn by themselves, including theoretical stuff, as long as you
don't underestimate them and give them interesting problems instead of paint-
by-the-numbers programming.

Unfortunately the samples he presented at the end weren't that impressive.

[http://sawafaso.blogspot.jp/2013/07/why-haskell-at-school-
ma...](http://sawafaso.blogspot.jp/2013/07/why-haskell-at-school-matters.html)

------
creature
Have you heard of Code Club¹? It's aimed at 9-11 year olds, so younger than
your audience, but you might want to examine their curriculum. They work in
Scratch, and AFAIK focus more on "programmer thinking" \- understanding
conditionals, loops, and events. There's also the Logo turtles².

I think the most important elements are fun, immediacy of feedback, and
relevance. When you're working with Scratch you can see what happens
immediately, and it makes it easy to explore changes. ("What happens if I
change this number? What happens if I invert this conditional?" etc.) Making
your own game or making a robot move is far more interesting and relevant than
printing text or working with test data.

¹ [https://www.codeclub.org.uk/](https://www.codeclub.org.uk/) ²
[http://en.wikipedia.org/wiki/Turtle_(robot)](http://en.wikipedia.org/wiki/Turtle_\(robot\))

------
wikwocket
I wouldn't worry too much about the kids being intimidated or bored. As for
intimidation, kids of any age will surprise you with what they can do, and as
for boredom, if this is an after-school program hopefully the attendees will
be self-selected to be interested in the subject. Just keep providing them
interesting, achievable projects, and be very encouraging and enabling.

I can't speak to curriculum, but could you set up each student/team of
students with a Wordpress install, and have them build a website for whatever
interests them? Start with basic working with software and following
instructions, go into configuration and customization, eventually have them
write plugins to do basic web-app-like things?

------
brudgers
See Outreach links from the Racket Community here:

[http://www.racket-lang.org/learning.html](http://www.racket-
lang.org/learning.html)

One of the relevant features of Racket is that so many fundamental decisions
are based upon teaching and learning programming.

------
lsiebert
Show them something cool but simple like a game, and say "by the end of the
week, you will have made this."

