This threads seems to have gone slightly more web orientated than I think the OP really intended. His son sounds like he is more interested in desktop and mobile development and for that there is no getting away from the fact that C (and Objective-C if you are happy to limit yourself somewhat) is the way to go.
The Android mobile phone platform uses Java but if you know C then learning Java is pretty straight forward, the same is true for Objective-C, C++, C#, PHP, JavaScript and a host of other languages. In short if your son is looking to be a developer rather than a Java programmer (an important distinction to make) it makes sense to start with C. If he is really adventerous then learning a language like Scheme using the book entitled "Structure and Interpretation of Computer Programs" would stand him in excellent stead for a CS degree (heck, that book is one he may actually study on his course). You can find the book for free on the MIT website (yes, it is legal).
The Android mobile phone platform uses Java but if you know C then learning Java is pretty straight forward, the same is true for Objective-C, C++, C#, PHP, JavaScript and a host of other languages. In short if your son is looking to be a developer rather than a Java programmer (an important distinction to make) it makes sense to start with C. If he is really adventerous then learning a language like Scheme using the book entitled "Structure and Interpretation of Computer Programs" would stand him in excellent stead for a CS degree (heck, that book is one he may actually study on his course). You can find the book for free on the MIT website (yes, it is legal).