Ask HN: How do I teach 7th graders to program?

4 points by dlauer ↗ HN
I'm going to be volunteering an hour of my time each week to teach inner-city 7th graders how to program. I've got about 15 interested in learning, and I'm trying to figure out the best way to approach this. They'll each have a laptop to use.

I'm not a teacher but have been programming for a long time. I was thinking about using python (not pascal or basic, which were the languages I first learned). Does anyone have any recommendations, ideas, good sites/resources? I was thinking about using repl.it, but am open to any suggestions or ideas. Thanks!

4 comments

[ 3.8 ms ] story [ 18.0 ms ] thread
You might want to try to custom tailor your lesson plans to things they're already interested in, and not rely on "automated" or pre-generated lessons. You'll need to really engage them and make them see the benefit of programming and how it can be applied to real world situations

I have no idea what an inner-city 7th grader is into these days, but consider crafting a lesson plan that speaks to whatever that might be - if it's sports, maybe craft it so they slowly build some kind of sports team management software. If its cars, maybe something like inventory software for an autoshop.

Start with the basics, how math and string manipulation works, then slowly build upwards into more concrete work that they can apply to the real world.

Python is an excellent choice of language

Just my 2 cents

It seems Alice and Greenfoot are popular in 10th grade (at least where I live). You might start there.

There is also a wealth of older programming materials available for older systems like VIC-20 and C-64. Maybe you could use those with one of the free emulators (Google is your friend).

If you want to use a more modern language, I agree that Python is an excellent choice.

I did something like this a long long time ago.

Things that seemed to work well:

1) Find a basic computer game with available source code and have them play it for maybe 10-15 minutes to understand the game.

2) Teach them a basic Hello World type of app in the same programming language as the game.

3) Open up the games source code and start looking for any sections that seem "readable" in the sense of lines that can be manipulated to affect game play (eg: # of lives for a character, response of actions, speed of play, # of enemies, etc.). Walk through some basic edits, re-compiles (if required) so that they see the impact of code changes on a larger project. This is, IME, more rewarding to a limited attention span audience than starting from scratch.

4) Come up with a simple coding project than can be modularized. Assign 1 student or group different subroutine tasks and then pull it all together into a larger program that runs each subroutine. Simple ideas are things like a conversion app utility, expense tracker, etc.

This is a great suggestion because this is how I first became involved in programming. We had these books with code for BASIC in school, and I typed the code. After drawing random circles and stuff, I kept modifying the code to make it do different things. From that point, I started writing little games, and I would work on those while we had our computer lab time. (Most of the kids would simply play games during that time.) I would work on code within notebooks at home and was anxious to bring it to school so I can type in my code and see the results.