If you want to give these kids a solid foundation to build on that will instill good habits and understanding of how computers work - C.
Java runs on top of an engine written in C - same with Python. They're great for doing that they do which is providing a massive library to take out all the menial tasks, but those menial tasks are the ones that teach people how everything works in the first place. How do they become a menial task if no one ever learned they were there?
Do we teach calculus without first teaching numbers and then general addition, subtraction, multiplication, division, etc etc etc
I have spent years beating the bad habits of Java out of programmers. Garbage collection is all nice and wonderful but it prevents programmers from having to think about memory at all. Taking that Java programmer and trying to get them to write even simple C/C++ code or even something as basic as assembler is damn hard! Everything they have learned has to be re-grounded. It's like boot camp - break them down to so they can be built up into something useful.
It's easy to teach someone who knows C how to write C++, Java, Python, or the zillion of other languages out there.
Any of the contact addresses here:
Amnesty International have just released a truly powerful film to coincide with the official launch of the unsubscribe campaign.
This film shows a performance artist undergoing, for real, interrogation techniques permitted in the CIA handbook.
Warning: Some viewers may find this disturbing. Unsuitable for under 14s.
Please turn your speakers up
"The geeks shall inherit the earth." -- Karl Lehenbauer