I'm a software dev at a major software shop and have been in the industry for around 13 years.
RE: School choice
A prestigious school like MIT will almost certainly provide more opportunities in terms of getting a foot in the door at a Google, Microsoft, etc. However, once you've secured that Big Internship none of your co-workers will care what school you went to when they hand you your first project. It will come down to how well you perform, which is a combination of smarts, talent and work ethic.
And once you've got a few years of industry experience under your belt, almost no one--save maybe for initial screenings--will give your alma mater more than a glance while looking through your resume. I for one don't give two shits where someone went to school when I look at a resume. I even know successful devs who didn't go to school at all (just super smart and taught themselves).
So take that into consideration as you are effectively balancing short-term opportunity vs long-term debt. (Note that if successful as a software developer, your child will likely command a good salary, so the debt wouldn't necessarily be insurmountable/crushing. But that is not guaranteed.)
RE: Computer Science vs. Computer Engineering
Note that--generally speaking (depends on the shop)--a degree in Computer Science, Math, Physics, Electrical Engineering or Computer Engineering can "check the box" on resume screens for entry level programming jobs. You'll need to know how to code in any case.
Also, everyone's path is unique, but for what it's worth...
I started as a hobbyist programmer at around 8, after realizing I could modify some QBasic games I had been playing. This turned into a life-long love of coding, including self teaching (loved making games) and taking classes in high school. So it seemed like an obvious choice to get into computer science.
However, I was also very interested in computer hardware. I especially enjoyed reading about current and upcoming processors from Intel and AMD, what was different about them, etc. But I didn't really understand how a computer worked. None of my HS teachers really knew, and I didn't really even know where to start online.
This bugged me because here I was making games, etc., on this box for which I couldn't really explain at a low level how it all worked.
I didn't have choices in terms of school like your son, but I had settled on a very good state engineering school. And long story short, after reading through pamphlets and speaking with an advisor, I settled on Computer Engineering as I wanted to expand my horizons and learn something truly new and interesting to me, but I didn't want to full-on commit to Electrical Engineering.
Fast forward ~3 years and I found that I loved EE and decided to basically switch (technically the two degrees heavily overlapped, so ended up with a double major simply because the EE classes I wanted to take fell outside of computer engineering).
In parallel I continued hobby coding, and had programming internships--but never pursued an EE related internship. So in sum, I graduated with an education heavily slanted towards EE, but with all of my practical experience in programming and this lead to a career in programming.