Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What should I teach a class of low-income kids about programming?
6 points by ccallebs on March 18, 2013 | hide | past | favorite | 9 comments
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?

EDIT: These are middle-school aged kids.




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.


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.


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";}


Sorry, they're middle-school aged. I should have specified. I think your advice is still applicable though.


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.


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.


Maybe also tell some success stories, like the guy who did the million dollar homepage, etc?


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.


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.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: