You might want to look at University of Maryland, College Park. It has one of the best CS programs in the country (was rated best last year above MIT but that may have been at the graduate level), and is strong in math and engineering. UM has a nice honors program where the honors kids are housed together making the big campus smaller. They are pretty generous with aid, and with your son's stats he might qualify for the Banneker Key which is partial tuition or a full ride. They have other merit scholarships, too. They do look for strong OOS students. We had never really considered UM until visiting and really liked it. Let me know if you want further info about the school, area, etc.