

Ask HN: Advice to Student Finishing School - strider24

I about to finish school and enter into an undergraduate course on CS. I have a few questions.
A little background first: I am a 16 year old guy and I really enjoy programming and every aspect related to it. I have been programming in C and C++ for a while now. Also, I have learned Allegro (Game Library) and (some) QT along the way.<p>Questions:
1. What should be the next language(s) that I should learn? And any specific order?
2. Where should I start to get a good mathematical foundation? (to say, understand algorithms and follow CLRS)
3. Any general advice to an undergraduate?
4. This might be a bit off-topic, but, do you as a hacker have a schedule for your activities?
5. Books that help improve programming skills and understand best practices(other than language specific books)?
======
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.

