So I’m teaching a kid to program. “A kid” to me meaning anyone born after 1980 – ’cause I’m old.
Here are the choices I made.
Start with C++
If you want to be a professional programmer for the rest of your days, you should be an expert in C++. It’s all there: pointers, Object Oriented Programming, complex build issues: all the experience you’ll need.
Get a book to structure the “class”
All books suck to some extent. Just pick one and go. I chose Sams Teach Yourself C++ in One Hour a Day (6th Edition). It is big on C++ syntax, light on Computer Science topics.
Assign outside projects
I’m assigning tasks like a console Hangman game, The Game Of Life, things like that. Nothing makes concepts concrete like actually building a program that does something.
Teach Computer Science as taught at a great university
To be a professional programmer you need to be literate in computer science. Like any other self respecting astrophysicist (and therefore professional know-it-all) I tried for years to avoid it but finally gave in and learned CS.
After my student makes a pass through the Sams book above, I’ll start using the curriculum available free online at MIT’s Open Courseware. We’ll be starting with 6.00 Introduction to Computer Science and Programming