I've been an engineer (EE) for just over 40 years now. Attended the univ of Florida
for undergraduate, Stanford for my masters.
I would suggest going more toward a mechanical engineering degree over
programming. Software has been a hot area for so long there is now a lot
of competition for the really good jobs. With a traditional engineering degree
your son will be in a better position for stable employment. And a big part of
any engineering field these days is programming or at least a working knowledge
of how programs work.
But the most important thing is he does what he enjoys doing and feels
passionate about. All too often I've mentored students that went into
a field without really exploring others and change majors mid stream.
As far as colleges go, I've attended a state and an Ivy league college.
Very little difference other than cost. However as others have stated
he'll have a better chance at a good first job from an Ivy league college.
Good luck!
Steve