TopCoder

http://www.topcoder.com

Topcoder consists of programming competitions in four different parts - algorithms, component design, component development, and marathon matches.