If your goal is to become a typical software engineer after you graduate, any of these three will do. However, if you want to dive deeper into a CS specialty, especially a more mathematical/theorectical area in CS, Cornell will be the best choice academically. I visited all three schools a few years ago with my S (and twice to Cornell including both its engineering and A&S divisions). The only concern we had about Cornell CS was the prioritization/waitlisting for some of its CS classes. We also ran into a CS graduate student at Princeton who graduated from Duke, when we were visiting Princeton. We talked extensively and he wasn’t very complimentary about his alma mater relative to Princeton in CS.