I recently discovered the website Coderbyte which is great place to train and improve your programming skills by solving challenges and taking part in competitions.
After a quick registration you can solve the given challenges. There are three categories: Easy, Medium and Hard.
You can earn points by successfully implementing a solution. For a perfect solution you get 5 points. If some test cases fail, you get less. Another criterion is the time: the faster the better. The maximum is also 5 points. So you can up to 10 points per challenge.
In my opinion this is a great way to improve your programming skills. I just started but at a later date I will present my solutions to interesting challenges here on my blog. So stay tuned.