CMU SCS, Caltech, or Columbia SEAS

As has been stated above, CalTech is a great fit is ones goal is a PhD program.

CMU has bit of a trade school style. It makes you very hard towards the profession. CMU CS grads all get hired by Facebook/Google/ and are very ready for these jobs. They might not have the breadth of education and experience if they may want to branch out, and say, get into management positions. Many in software industry feel a burnout after a few years.

Columbia might give you that breadth of education. It is still a top school, which means top software companies will be recruiting.