For programming ideas what I've been doing is just picking random algorithms and implementing them. I focus on geometric algorithms because they provide even more feedback then just running a debugger (although learning to effectively use a debugger is important). For example, my last learning project was to implement convex hull algorithms and then keep integrating features each step along the way. You can learn pretty quickly about how to make code more flexible to change especially if you seek feedback from places like these forums.
What I want to do next is to pick up an interesting programming topic from the board discussions here and simply explore, through my own programs, about what the topics may cover. Ideas from topics are plentiful: code a bouncing ball on the screen, write a collision detection system and explore different approaches here, implement trajectory physics, make a toy audio player, try your hand at a system for data driven development (e.g. make a text and/or binary format that is interpreted by a program to control settings in your program -- maybe a combat simulator), explore pathing algorithms.
I ran across a good editorial on Dr. Dobbs for what to do when you're learning to program. Some sage advice: http://www.drdobbs.com/architecture-and-design/advice-to-a-new-programmer/240158341