What to Expect at the Contest

At the programming contest, your team will be presented with several problem descriptions, along with some sample input and output for each problem. You have five hours to solve as many problems as you can. Solving a problem means that your program, when compiled by the judges, and run against the judges' confidential data, gives the results the judges expect. You are free to solve the problem with any algorithm that will produce the results specified in the CPU time allotted.

What kinds of problems will be posed?

This is a programming contest, not a coding contest. -- Jefery Roberts, Contest Judge

The problems are descriptions of tasks which can be automated. The problems cover a wide range of application areas: business data processing, engineering, text handling, process optimization, and so forth. Each problem is stated in terms of user requirements: you will not be asked to "write a sort" although the problem might require you to sort data in order to present the answer. A few problems are fanciful. Many emulate the kinds of problems you might be presented with in industry; some of them are actual industrial problems.

The problems will vary in difficulty from fairly straightforward to quite challenging. Problems are presented in random order without respect to problem type or difficulty. Every problem will require thought: each will need to be read and analyzed, and a solution designed, coded and tested. Solving any problem successfully is a significant accomplishment.

What background am I supposed to have in order to compete?

You do NOT have to be a Computer Science major to compete.

The judges assume that contestants are familiar with English and mathematics: algebra, geometry, trigonometry, some discrete math, and some elementary analytic geometry/calculus. The contestants are also assumed to have a basic knowledge of computing principles (algorithms and data structures). Problems do not rely on any prior knowledge of a specific application area. Any application background that is required for a problem will be contained in the text of that problem.

There is usually at least one problem that involves more advanced computer science knowledge: backtracking, shortest path, state machines, information theory, graphics, etc.

What do I need to do to succeed at the Contest?

To succeed, you must be skilled at programming and problem solving, and also allocate your resources  --  your time, computer workstation, and team members  --  appropriately. I've seen teams with talented contestants fail to score because they didn't allocate their resources well. -- Marc Furon, Contest Director

Some things to keep in mind when planning your strategy:

How is the Contest scored?

A team which solves more problems than any other team wins. Among teams that solve the same number of problems, rank is determined by the total time to solution in seconds for the problems solved. A lower total time ranks higher. Time to solution for a problem is defined as the elapsed time from the beginning of the contest until a correct solution is submitted, plus 20 minutes (1200 seconds) for each rejected submission for that problem. For example, if you have two rejections for a problem before the judges accept your solution, then 40 minutes is added to the solution time for that problem.

Why should I compete?