I highly recommend getting him a copy of Chris Pine's "Learn to Program" and having him start out with Ruby.
Learning with a modern object-oriented language has the enormous benefit of allowing one to focus on flow and structure, without the clutter of underlying mechanics like pointers and memory allocation. Those things are easy to learn in isolation. Learning both how to think in software _and_ how your approach is supported at a low level, at the same time, is a burden that hasn't been necessary for over a decade.
Old school grumpies will tell you that it's important to learn both at the same time, because that's how they did it. Pants to that.
Thus spake the master programmer: "When a program is being tested, it is too late to make design changes." -- Geoffrey James, "The Tao of Programming"