Here is a list of resources to hone your skill in solving algorithmic and mathematical challenges. Many of these sites host frequent contests which you can participate in.
|UVa Online Judge||YES||YES||NO||YES|
|Sphere Online Judge (SPOJ)||YES||YES||NO||YES|
|Timus Online Judge||YES||YES||NO||YES|
|SSU Online Contester||YES||YES||NO||YES|
|Tianjin University Online Judge||YES||YES||NO||YES|
|Google Code Jam||YES||YES||NO||YES|
|Internet Problem Solving Contest (IPSC)||YES||NO||NO||YES|
|Croatian Open Competition in Informatics (COCI)||YES||NO||NO||YES|
|USA Computing Olympiad (USACO)||YES||NO||NO||YES|
|International Olympiad in Informatics (IOI)||YES||NO||NO||NO|
|International Collegiate Programming Contest (ICPC)||YES||NO||NO||NO|
|ACM-ICPC Live Archive||YES||YES||NO||NO|
|Nordic Collegiate Programming Contest (NCPC)||YES||NO||NO||NO|
PA = Problem Archive, a site that has an archive of problems (sometimes from past contests).
OJ = Online Judge, a site that has the ability to judge solutions to their problems, either based on actual source code or output data.
WC = Weekly Contest, a site that frequently holds online contests, perhaps a couple of times a month.
AC = Annual Contest, a site that infrequently holds online contests, perhaps a couple of times a year.
There are a huge amount of site on the internet offering programming challenges. If you have one which is not on the list, feel free to let us know through the contact form.