

Ask HN: Best strategies, analogies and/or scenarios for teaching kids CS skills? - discorunner

We&#x27;re currently working on developing a teaching platform based around our BASIC interpreter DiscoRunner, and we would love to hear from HN readers as to what methods they&#x27;ve used in the past to teach kids computer science concepts -- which worked, what didn&#x27;t, and why.<p>This will obviously be invaluable to us when it comes to working out the lessons that will be taught in our fight-to-save-the-world-from-evil learning environment, and we would be eternally grateful for any scraps of wisdom you could toss our way. =)<p>Thank you!
======
bgraves
I spoke last week to 50-60 middle school students (ages 12-14) during a day
long S.T.E.M demo day. There were 4 sessions with 10-15 kids in each hour-long
session. My theme was "Learn to Program" and why _everyone_ should learn to
read and write code.

For the first 20 minutes, I reviewed some slides (the "who", "what", "why" of
programming). For the rest of the time, we built a Flappy Bird game using the
tutorials on code.org. This made everything "click" for them, since it was
hands on and practical. Suddenly, abstractions like variables and events make
sense when you think of them like "background scene" and "click".

After they loaded their personalized Flappy Bird game to their iPhone, we
spent the rest of the time going through CodeCombat. Lots of kids really liked
this because it was a game you play with code.

I wish I had a bit more time to do something purely creative (there's a
"Frozen" movie art tutorial on code.org, but it's slower paced and would've
taken up too much of my time)

\---

A few takeaways:

1\. You HAVE to make it interesting. Kids today need to go from zero to
awesome in 2 minutes or less. I don't see this as a bad thing. When I learned
to program, I wanted the same thing. Being able to write some stuff in Notepad
and see a webpage in Internet Explorer in 1995 is what got me interested in
programming in the first place. I wanted them to get that same feeling.

2\. Focus on them. How is computer science going to help them? Basically,
these kids (or their parents or teachers) are your customer and you have to
make the benefits obvious. I talked about the creative aspects ("stretching
your mind"), the career path aspects ("Bill Gates and Mark Z started when they
were in middle school"), and the long term impact on the world ("Bill and Mark
are two of the most generous people on the planet"). Again, this is aimed at
middle schoolers so I'm not going to get into the politics of anti-trust
lawsuits or over-reaching privacy concerns.

3\. Only about 10% of the kids in a classroom are going to be really
enthusiastic about learning this stuff. You'll have 80% that are indifferent
and 10% that are bored/lost. That's okay. Not everyone is going to be
interested in computer science just like not everyone is into music.

4\. I didn't get too deep to quick, just focused on helping them seeing
results. I didn't get into any nitty gritty like is JavaScript better than
Python or anything too technical at all. Keep it as high-level as you possible
can.

5\. I also let them work things out. "Oh, your Flappy Bird isn't flapping when
you click your mouse? Hmmm, which piece of code do you think handles when you
click your mouse? Do you see any actions that you could attach to that event
that might make your bird flap?"

\---

Overall, it was well received and there were a few kids that used their
"Genius Hour" (a set time where they could further explore the STEM topics
they learned about on their own) to go through more CodeCombat lessons.

I would definitely do it again, but really needed a nap afterwards. Teaching
is HARD!! :)

