I have been meaning to post this for a while now, but I just haven't gotten round to writing this and anyway there has been plenty of other stuff to talk about.
Before I started my work placement at the primary school I wondered wither anybody would ask me, what the best way to teach their kid programming skills and I wondered this myself because I am sure many programmers spent weeks writing example code without understanding the structure and how things related. I know that doesn't happen with any of the visual languages, but I started with Java.
Anyway the answer seems to be a program called CeeBot. Basically it gives you a robot in a virtual environment that you have to program (so it can complete tasks). To program the robot you have to learn CeeBot's coding language which is similar to C.
It is very simple and even the advanced problems don't require you to program object orientated code, but as an introduction to programming it is excellent because it teaches instruction ordering, syntax, debugging, loops, conditions, veriable declaration, properties and methods. So other than teaching about inheritance, interfaces and input it's almost all there.
The demos are fun and I would recommend CeeBot-4 to all the other versions available, simply because it has plenty of problems, and you are taught everything gradually. Plus it starts off easy, gets harder, ends with a challenge and allows you to be creative.
I have completed all the problems. I did have to read the help text at the start of each section to findout what the problem was and what code it was trying to teach me, but all the problems are solvable. I highly recommend it to anybody who has considered learning to code, but coding is like Kung Fu, the more you practise and the more techniques you learn the better you become.