Here's an idea for anyone who's up for a challenge (or a few!) You may have heard of this site before, but I'd really recommend it if you want to get into the flow of "thinking" like a programmer from early on (rather than just knocking out simple hello-world-like applications.)
Head over to osix.net, sign up and work your way through. There's a main section of challenges, a reverse section and a bonus section. I'd recommend following the main section through as far as you can and pick out a couple of the bonus ones as well.
If you're a beginner you should be able to do the first couple of challenges and a couple of the easy bonuses - they don't require that much programming experience or knowledge. If you're an accomplished coder already you should be able to finish quite a few (though going all the way is hard... very hard!)
I've done levels 1-7 of the main challenge and 10 of the bonus levels so far, so if anyone wants a hint or 2 feel free to post here and I'll try and help (within the rules of course!)
Save the whales, feed the hungry, free the mallocs.