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:
Basics of Digital Systems, Number Systems, Boolean LogicNumber System 1,Number System 2, Boolean Algebra 1,Boolean Algebra 2, K-maps 1, K-maps-2, RAM, ROM, Memory etc.
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: