Is the University of Waterloo any good if I want to go for their regular (i.e non-coop) program in CS? I also have offers from the UofT and Purdue University. Which one would be the best choice at the undergraduate level?