Here is a list of sites with online judges (and similar) and a large variety of problems:
ACM Live Archive, problems from past ACM/ICPC regionals and World Finals.
Arbiter, online judge at Sharif University in Iran.
USACO Training Program Gateway - an excellent set of tutorials + online judge leading you through virtually all algorithms you need to know. Well worth doing.
Some other useful sites:
A few links to increase your math knowledge necessary in many problems:
Books that might help you:
C: Dennis Ritchie
The C++ Programming Language by Bjarne Stroustrup (Requires some familiarity with basic C++ and general OOPS concept for better understanding)
Data Structures: Yashwant Kanetkar (Beginner's Level)
TanenBaum (Advanced level)
Algorithms: Introduction to Algorithms by Thomas H. Cormen
# Programming Pitfalls: