I taught my kids programming the same way I learned in college, the teacher makes the appropriate framework for the student to do their work and studies in, then give them an assignment that is age appropriate and child interest specific. then have a discussion on the part you want them to fill in or what you want to do that is learning specific for their level. May kids will NOT pick up a book and read it, especially a technical manual on how to program or on
Java or any other language.
the first things I did with them was just make bounding balls. I made a graphics engine that you would drop a graphics object into a specific folder and it would instantiate the object in the running instance and the child could see their object bounding around the screen. They were younger than 12, but that is the first step in understanding objects and creation of dependent object to interact in a known environment. they loved it.
I had them make their favorite color geometric object, shape, as supported by Java and I'd drop it in, then have them make changes like color, shape, or movement and they could see it change on the screen and see the multiple object interact. I would then ask them what they thought and we would go from there, often it became the child telling me where they wanted to go for many lessons. I was happy to do so, because they were engaged and they were getting hands on.
One thing in this to remember: if it's not fun, then a kid will just drop it. There is no carrot at the end of the stick trying to get them to understand college prep, college study, problem solving, or a future career. it has to be fun and they must want to do it, so keep them engaged by letting them help design, tell you, what they want to do. do not fall into the trap of saying: "here is the Java tutorial..." that is a sure way of getting a kid to find other interestes.