Having said that, you are on the ground. You see and talk to them. You definitely have a good idea of what you are talking about. Me, i'm just a guy half way around the world feeling pretty bad about it - and hoping that this is not true.
You touched on so many points that i endorse and recommend heartily. Programming is coding. It's hands-on. People have to sit in front of a machine from day one, hour one of their learning. People learn from writing crappy code, and debugging crappy code till the code starts to work. People learn from making their own mistakes. People should learn that programming cannot be memorized and repeated ad nauseum on exams.
I remember the kind of folks i interviewed when i was starting a company in india in 1995. I was horrified at the nature of rote memorization in many schools and collages. I made a decision not to hire any one with a CS degree as i felt that i would have to spend too much time making them unlearn bad habits. I then decided to go out, hire students with no programming background, teach them coding from the ground up. Teach them to solve problems one step at a time. Teach them the joy of debugging. And they turned out to be great.
I suspect that every country, region, city, place might have to go through an evolution of programming culture, but the internet and it's legions of programmers gives a great way for beginners to short-circuit their learning process.
Let us know of ways we can help, as well.