Best ways to teach a beginner to program? | **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](http://www.python.org), 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](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-189January--IAP--2008/CourseHome/)
* [How to Think Like a Computer Scientist](http://openbookproject.net/thinkcs/python/english2e/index.html)
* [Alice: a 3d program for beginners](http://www.alice.org/)
* [Scratch (A system to develop programming skills)](http://scratch.mit.edu/)
* [How To Design Programs](http://www.htdp.org/)
* [Structure and Interpretation of Computer Programs](http://mitpress.mit.edu/sicp/full-text/book/book.html)
* [Learn To Program](http://pine.fm/LearnToProgram/)
* [Robert Read's How To Be a Programmer](http://samizdat.mines.edu/howto/HowToBeAProgrammer.html)
* [Microsoft XNA](http://creators.xna.com/)
* [Spawning the Next Generation of Hackers](http://vodpod.com/watch/914464-inspirational-oscon-keynote)
* [*COMP1917 Higher Computing* lectures by Richard Buckland](http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444) (requires iTunes)
* [Dive into Python](http://diveintopython.net/)
* [Python Wikibook](http://en.wikibooks.org/wiki/Programming:Python)
* [Project Euler](http://projecteuler.net/) - sample problems (mostly mathematical)
* [pygame](http://www.pygame.org/) - an easy python library for creating games
* [Invent Your Own Computer Games With Python](http://inventwithpython.com/IYOCGwP_book1.pdf)
* [Foundations of Programming](http://codebetter.com/blogs/karlseguin/archive/2008/06/24/foundations-of-programming-ebook.aspx) for a next step beyond basics.
* [Squeak by Example](http://www.iam.unibe.ch/~scg/SBE/)
* [Snake Wrangling For Kids](http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids/) (It's not just for kids!)




---


**Recommended Print Books** for teaching beginners


* [Accelerated C++](http://www.acceleratedcpp.com/)
* [Python Programming for the Absolute Beginner](https://rads.stackoverflow.com/amzn/click/com/1598631128)
* [Code by Charles Petzold](https://rads.stackoverflow.com/amzn/click/com/0735611319)
* [Python Programming: An Introduction to Computer Science 2nd Edition](https://rads.stackoverflow.com/amzn/click/com/1590282418)