With $150,000 in prize money up for grabs, the competitive coding contest draws some of the most talented developers in the world. The finals of the 2006 TopCoder Open start Wednesday at the Aladdin Hotel. Thousands of developers have been competing online for months in hopes of reaching the finals, where they will face off in two separate events.
The finalists include Michal Forisek, a top-rated competitor and native of Slovakia who goes by the coding handle "Misof." Also in the competition are international coding stars Natori Shin of Japan (better known as "Natori"), whose dream according to his biography is to buy Microsoft, Sun Microsystems, Apple Computer and Adobe Systems and open source their products; and "Visualage," otherwise known as Qi Liu of China, who traces his programming roots to that pesky little turtle from Logo.
TopCoder, which bills itself as "the major leagues for programming competitions," is receiving help this year from primary sponsor Advanced Micro Devices in order to help promote so-called multicore development strategies.
Intel has also gotten into the act as part of TopCoder's monthly competitions, where developers compete to solve problems that emphasize programming techniques for systems that use chips with, or processors with .
"It's not only fun to figure out how to thread something, but there's a huge educational aspect," said George Tsipolitis, vice president of TopCoder Employment Services. Tsipolitis is responsible for the other side of TopCoder, which takes the code submitted during those competitions and resells it to clients ranging from Philip Morris to ESPN.
TopCoder, of course, is best known for its competitions. While companies like AMD and Intel like to promote their products in front of developers at competitive events, they are also concerned about the need for greater education on multithreading programming techniques. Now that chip companies have decided thatare the way to go, they need to encourage software developers to change their habits and write code with more than one core in mind.
It's certainly a change. PC software has always taken advantage of the faster and faster chip clock rates delivered by Intel and AMD. Programs were written in serial, with one task following another, so as a chip got faster, performance increased without having to tweak the code.
However, that "free lunch," as one Microsoft developer put it last year, has come to a halt with the release of multicore processors. The heat given off byis simply too much for system builders to deal with anymore, so Intel and AMD are releasing chips with that sometimes run at slower clock speeds than their single-core counterparts.
That means that software written in a single-threaded fashion will actually run a little bit slower on a new dual-core chip that has a slower clock speed than a single-core chip, said Dean McCarron, an analyst at Mercury Research.
"If you want your application to continue to scale in performance with the PCs that are being sold, your application needs to incorporate more parallelism," he said. That means software needs to be written with independent threads, or streams of instructions, running side by side rather than in sequence.
This requires a new way of thinking about software development, at least in the PC world, said Richard Finlayson, director of the software strategy and alliances group at AMD. Although applications for multiprocessor servers and workstations have been designed with parallelism in mind for years, "we're right at the beginning with desktop applications," he said.
More needs to be done in computer science departments to emphasize multithreading strategies early on in the educational process, said James Reinders, director of marketing and business development for Intel's software developer products. "We've become convinced that this should be a fundamental way people think about things like this; it should be introduced as early as the first class," Reinders said.
Multithreading will be the topic for one of the semifinal competitions at the 2006 TopCoder Open, Finlayson said. The contestants are broken up into separate categories, such as the algorithm category, component design and component development. Separate winners will be chosen in each area, but competitors can participate in more than one category to increase their winnings.