Updated |

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?

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

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

### How is the Contest scored?

### Why should I compete?

*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.

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.

*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:

- the problems are presented in no particular order
- the easiest problem counts as one solution, just like the hardest problem
- the problem that is easiest for your team may not be the easiest for other teams
- when you ask the judges questions, everyone reads them, along with the answers
- 20-minute penalties add up (see below)

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.

- It's challenging
- You'll meet students from other schools (your future colleagues and competitors)
- You get to see and work in other computing environments

- IT'S A LOT OF FUN!