Advice to Student Finishing School
siong1987: Which college are you going? But, college doesn't matter much.If you think that you want a head start before starting your CS degree, you can learn Java right now. Most of the 4 years college will only require you to learn Java, C++ and C. They may have some others languages that you have to learn. But, I am sure that these are the main three.In fact, you don't have to learn tonnes of language to be good in CS. From what you describe, you may be lack of some practical experience on programming. Try to work on some open source projects or your pet projects. But, I strongly recommend you to work on open source projects so that you can learn from other good programmers in the project.For Math, it is good for you to learn some basics of Discrete Math before you start learning some deep algorithms that may require more advanced math than high school math. I don't know any book that I can recommend to you. But, I am using "Discrete Mathematics and Its Applications" in my first semester in UIUC. The author of this book tried to relate Discrete Math with Computer Science. So, it may be a good head start for you. From the book, you can learn some basic algorithms and some Math theories such as graph theory, number theory, etc that will be very important in your CS degree. You will learn CLRS usually in the last year of your CS degree.Remember: Books are good to learn a new knowledge. But, practical experience is always more important in real world.