Hi, I'm a prospective computer science student and would like to get a heads-up on some of the courses that I would most likely be taking at a university. Just to make the distinction, I'm not talking about books like "Teach yourself x in x decades" or "practical guide to data structures". I know how to program, and am much more curious about the mathematical and logical underpinnings of computation. What I'm looking for are books that are introductory in nature, but that provide a mathematical rigour appropriate for said level. Some topics I'm thinking of in particular are data structures, algorithms, discrete math, probability and some more advanced topics such as cryptography, data compression and fractals (obviously these are of a more advanced in nature, so humour me). So if you have any suggestions, I'm all ears.