In the last post, I discussed some steps for learning to program, and ended with a few general resources. This post will provide some specific links and free books for learning programming with either Java and Python, and the next post will go into web development languages.
As discussed, Python is a great language to learn programming with, and there are tons of learning resources online. A good path would be to start with a simple tutorial and problems, and then go through a more advanced resource that teaches fundamentals of programming.
Codecademy recently expanded to offer Python tutorials, and they have a well-designed site that's good for beginners. There are many other places you can practice problems, such as CodingBat or PythonChallenge. To get a better understanding of what the code does, you can visualize your Python executing.
To learn computer science fundamentals, How to Think Like a Computer Scientist is a great interactive book to go through. After you get through that (or if you already have programming experience), you'll want to look at Dive Into Python 3. If you want a video course, Udacity offers short videos combined with coding problems. You can start by building a search engine in Introduction to Computer Science, and then move on to either Algorithms or Web Development.
Also, If you know a kid who wants to create computer games, Invent Your Own Computer Games is a free eBook on the topic (see also the PyGame modules.)
There aren't as many free Java resources, but there's enough to get started. There's a Java version of How to Think Like a Computer Scientist available online. There's also a free version of Thinking in Java, though you may want to buy the most recent version instead. If you like lots of pictures and attitude, Head First Java is a good book. Once you have more experience, the recommended Java book is Effective Java. You can also go through the official Java tutorials.
Since Java is a different kind of language than Python, there aren't as many interactive resources online. To practice problems, you can go through CodingBat and some stuff on Programr. However, to benefit fully from Java's "safe" features, you will want to do most of your programming in an IDE. I don't think you should use a beginner IDE like BlueJ, since it lacks features that are also useful for beginners. While you type, an IDE can catch certain kinds of errors and auto-suggest methods and let you lookup documentation. Later, you should also learn to use more advanced tools like the debugger. A good full IDE for beginners is Netbeans, though if you want to do Android development later, you should use Eclipse. However, if you know a kid who wants to learn programming, it might be worth checking out the Graphics-focused IDE, Greenfoot.
Since app-development is very popular, I'll briefly discuss it here. Due to Android's complexity, you shouldn't try developing apps before you're comfortable with Java. One you're ready, Google provides a fair amount of training resources. You can also buy a book like Programming Android. If you're impatient to start creating apps, you can use the visual programming tool AppInventor, which should help teach some programming concepts.