If you want to improve your coding skills, you can do so by solving some problems used in the ACM International Collegiate Programming Contest. You can find the entire collection here, which is really huge.
Solutions to problems are verified by an automated program, the Online Judge. To get started, you must sign up for an account; after that, you will be given a user identifier and a password. The identifier must appear on all problems you solve (check the documentation in the site for more information), so that the judge knows who solved them.
After that, start to do solve any problem you like. When done, it must be sent back for verification (again, check the site on how to do this). The judge will reply you with a code indicating if your program ran ok, failed during execution, did nor compile, lasted for too long, etc.
Note that these problems are not all about coding skills, though. Coding helps in getting a solution implemented as quickly as possible, but you first have to know which algorithm to use. Some of them require geometry or graph theory knowledge, for example. Others are very easy.
Frankly, I don't enjoy much these problems; if I have done some is to pass a subject in my degree, but not to spend my free time. Even though, you may be different, and enjoy solving them, like other people does. And you can even join the programming contest!