If you are a student, I would join the Google Summer of Code. You can actually get paid while learning something. You could also look for Open Source projects that need a maintainer. Or grab one of the lists of startup ideas and try to implement one. Yet another solution would be to try to implement a web server or a framework just for fun.
You are right in that you need to work on projects to become a better programmer: that is the fastest way to learn. There are a ton of problems out there that need solving. You just need to find ones that interest you.