Two of my favorites are Project Euler which contains a lot of math type problems that can be solved in any programming language, and UVa Online Judge which has literally hundreds of programming contest problems. Neither are the same as completing a project, but some of the problems are pretty fun and require a good bit of thinking about the algorithms needed to solve them efficiently. UVa online judge in particular taught me that although micro-optimizations can speed up your code a bit, optimizations to the algorithm, including choosing the correct data structure, are what can give your code a real performance boost.
If you begin to try any of the problems and get stuck, post a question here or in the Programming Diversions forum and we might be able to help out.
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them. - Laurence J. Peter