This is a programming contest, not a coding contest. -- Jefery Roberts, Contest Judge
The problems will vary in difficulty from fairly straightforward to quite challenging. 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:
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.