This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
We have our our course, the Cattle Drive. The problems are free - anyone can give them a go. If you want nit-picking, there is a small fee that goes to support this site.
You can also look at sites like Project Euler. It has over 200 little math exercises. All COULD be done by hand, but would be difficult. The idea is to write code in any language you want to solve them. I'm working through it, and it's great fun.
What I'm basically saying is that the best way to improve your skills is to practice.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors