X PRIZE Foundation
Automotive X PRIZEArchon X PRIZE for GenomicsSpace

The essence of Coding Contests

A couple of days ago we told you about a coding contest that will be taking place tomorrow in Linz, Austria. We received several questions about what the contest will be like and what one can expect. So I have decided to collect a few notes here to tell you more about it.

This is the fifth Catalysts Coding Contest (CCC’11). I have been there the last two years, but unfortunately, I have yet to score anything notable. The CCC is small coding contest that focuses on slightly tricky problems that typically require algorithmic solutions - it’s puzzle solving with programming.


The Rules

The rules are fairly easy. There are multiple levels to the competition. The goal is to complete as many levels as possible within the four-hour time limit. At each level, a detailed problem description is given. You must then devise a solution with the computational tools of your choosing. Any programming language is allowed. You may compete either individually or in teams of up to three persons. In previous competitions, only time to complete the levels was considered, but this year they’ve added a time bonus award to the “best solution” for each level. So, everyone has the chance to improve their standing through clever programming. This should keep the competition exciting right up until the very end.


The Contest Environment

They competition utilizes a web-based interface called CatCoder. The CatCoder interface will provide you with the problem statements, the test case data, and will allow you to submit the results of you program for acceptance testing. You can also see how far along the other contestants are, and can compare your progress to everyone else.


The contest procedure

Once you have registered with the server, using your real name or a pseudonym, and you have logged in, the CatCoder will provide you with an overview of the problem and description of the different levels of difficulty. Each level must be completed and they must be completed in order. When you are ready to begin, you select the current level and a more detailed description of the problem will be presented. After you have developed a program to compute the solution, you will request detailed test cases from the server, and then use the CatCoder interface to submit the results for acceptance testing. The test cases are typically large enough the output can’t be easily guessed or computed by hand on a sheet of paper. If your program computes the correct results, and the server accepts them, you will be allowed to proceed to the next level. The goal is to solve each level as quickly as possible and solve as many levels as you are able.


Some coding tips and tricks

  • Use the programming language you feel most comfortable with. This is a timed contest and most of your time will be spent coding. So it’s of no help if you use some tool you think would be better if you can’t whip out a detailed implementation quickly.
  • If you have an idea for an algorithm that you are sure will solve the problem then code it up. It’s better to have a working solution that does its job than to have a more elegant, but only half-working solution. If you know a brute-force solution take it! If you think you may have a more elegant solution, you will have to decide if it’s worth the extra time, or if it’s clever enough to win the time bonus.
  • This is not contest for the prettiest code, nor the most perfect indentation (well, that might not be true for python…), it’s a contest for quick & dirty implementation that work.
  • Likewise, this is not a contest about designing the perfect object oriented solution. You have to understand the essence of the problem in front of you, and your choice of data structures should simply support the algorithms which will compute the correct solution./li>
  • Don’t over-think the problem. You will have time to think deeper about the problem as the levels increase in difficulty. If you have an easy solution to the easy levels, then use it.
  • Prepare yourself. Get your coding environment ready before you start. Write some skeleton code that you can use quickly during the contest. For example, you can assume that there will always be some input to read and some output to print.


One more thing to note

Some people were a little bit disappointed that the online participants would not be eligible for prizes. We agree, and we think that’s a problem that needs to be solved. Therefore, we have decided to give each of the top three online contestants one of our so much sought-after “Hell Yeah, it’s Rocket Science!” T-Shirts. If you win, though, you may have to give up some of your anonymity so we know where to send your shirt.


I look forward to seeing you tomorrow either in Linz or in Cluj-Napoca (Romania) on site or perhaps online.

Daniel Ziegenberg




If we caught your attention, follow us on Twitter, Facebook or our Team Blog!






<< previous      |      >>