
Ask HN: What should I teach a class of low-income kids about programming? - ccallebs
Wednesday, I'm speaking to a group of inner city kids about software engineering and have been moderately stressed about what I should tell them. I feel that this is a great opportunity to reach out to my community and I don't want to waste it. What are some talking points that you would focus on?<p>EDIT: These are middle-school aged kids.
======
Jun8
I've done this in Chicago. You didn't specify their ages, I'm assuming these
are high-school kids. The important point to stress, I think, is that
computers and programs are all around us, and not just as computers, either.
Ask them to name a computer they use daily, then surprise them with the usage
in dishwashers, cars, etc. (these are more microcontrollers but the
distinction is not important).

From there you can go to the theme of "be a programmer of be programmed", i.e.
everybody needs to know _some_ coding. Tell them that math is not a
prerequisite (a usual worry about programming) and show them some cool but
simple game programming examples using Scratch, pygame and the like. In fact,
it would be great if you can create a game _during_ the presentation, with ~10
lines of code.

~~~
AlexCyrlex
Just out of curiosity, could you provide a link to a simple game written in
~10 (ten!) lines of code? My understanding was that for anything close to
interactive game at least 50-100 lines of code are needed: to draw something,
make it move and react to user input in a meaningful way.

I am not familiar with frameworks such as Scratch or pygame; still 10 lines of
code look like too few for a game.

~~~
lsiebert
You can do a simple terminal program in 10 lines. 10 commands probably not,
but this is still fairly readable. in perl, a simple guessing game that runs
in linux/unix

#!/usr/bin/perl $SIG{ALRM} = \&timesup; my $random_num = int (rand(10)); print
"Guess my number (0-9) in less than 10 seconds!\nGuess: "; alarm 10; while(1){
my $guess = <>; if ($guess == $random_num){alarm 0;print "You Got it! Well
done!\n"; last; } else { print "Nope; guess again: ";} } sub timesup {die "Uh
oh! Time ran out while waiting!\n";}

------
stucox
How cheap and easy it is to get into web programming. Everything they need
(except a computer and an internet connection) is free. And the fact that
there'll be plenty of jobs in software/web for the foreseeable future. And
that it's fun and they can pwn their mates.

Maybe throw in a focus on mobile development too - I'm always amazed at how
many low-income kids around here have smartphones.

~~~
ccallebs
I definitely want to focus on the accessibility. I came from similar roots and
would likely not be in the career I am today if not for the low barrier of
entry.

------
dylanhassinger
A friend of mine here in St. Louis is starting a non profit that does just
this. They have started by having hack-days (with Arduino and other DIY
projects), pop-up tech classes, and tours of local startups.

<http://thedisruptiondepartment.org/>

His name is Gregory, feel free to ping him for thoughts or advice.

------
japhyr
I teach high school math and science to at-risk students, and I teach an intro
to programming class when I can. I have heard numerous stories of smart kids
who realized in middle school that they wanted to be programmers. It often
falls along the lines of "I noticed that all of my peers liked playing games,
but I was more interested in how you make games."

These students often spend years chasing different leads about how to follow
up on their interest. All of the software tools needed to dive into
programming are free, but the ecosystem is really hard to navigate if you
don't know anyone who is aware of current professional programming practices.
Many "computer science" teachers do harm to these students by directing them
to dead-end languages on old school-district-based Windows systems. I don't
use the term "do harm" lightly, either. I have seen numerous examples of young
people who have built up serious resentment towards education in general
because of their frustration in dealing with teachers who know less than they
do.

/rant

Here's what I'd suggest: \- Look for the students with a spark in their eye.
See if you can pick out which ones already know they want to be good hackers.
\- Map out their next few years of learning, so they know what to focus on. \-
Tell them to learn Linux. Tell them that if they can find a beater laptop,
download a distro, and load it, they can have functioning computers their
whole lives. Low-income students have a difficult time maintaining Windows
computers at home. If they can build a linux box, they can take charge of
hardware issues. \- Tell them to learn python. The community is incredibly
supportive of non-traditional programmers, and the language leads you to
whatever kind of actual work you want to do in programming. \- Last, and most
important: if you can do a followup visit two weeks or one month from now,
your impact will be deepened. Ask the students which of them have tried to
follow up on your talk. Those are the students who need your support. Just act
as a guide for them; help them find a beater laptop, help them get a distro
running, help them run an interactive shell, point them to some learning
resources. \- If you really want to make a difference, keep visiting every 2-4
weeks so these students spend minimal time lost in the programming ecosystem.

In closing, thank you for doing this. There are incredibly smart kids in low-
income areas, and many of them have a strength in them from dealing with
adversity. If we support them, they can channel that strength towards very
meaningful work.

