Best ways to teach a beginner to program?
- by Justin Standard
Original Question
I am currently engaged in teaching my brother to program. He is a total beginner, but very smart. (And he actually wants to learn). I've noticed that some of our sessions have gotten bogged down in minor details, and I don't feel I've been very organized. (But the answers to this post have helped a lot.)
What can I do better to teach him effectively? Is there a logical order that I can use to run through concept by concept? Are there complexities I should avoid till later?
The language we are working with is Python, but advice in any language is welcome.
How to Help
If you have good ones please add the following in your answer:
Beginner Exercises and Project Ideas
Resources for teaching beginners
Screencasts / blog posts / free e-books
Print books that are good for beginners
Please describe the resource with a link to it so I can take a look. I want everyone to know that I have definitely been using some of these ideas. Your submissions will be aggregated in this post.
Online Resources for teaching beginners:
A Gentle Introduction to Programming Using Python
How to Think Like a Computer Scientist
Alice: a 3d program for beginners
Scratch (A system to develop programming skills)
How To Design Programs
Structure and Interpretation of Computer Programs
Learn To Program
Robert Read's How To Be a Programmer
Microsoft XNA
Spawning the Next Generation of Hackers
COMP1917 Higher Computing lectures by Richard Buckland (requires iTunes)
Dive into Python
Python Wikibook
Project Euler - sample problems (mostly mathematical)
pygame - an easy python library for creating games
Create Your Own Games With Python ebook
Foundations of Programming for a next step beyond basics.
Squeak by Example
Recommended Print Books for teaching beginners
Accelerated C++
Python Programming for the Absolute Beginner
Code by Charles Petzold