The USC Programming Contest is an event organized once per semester for undergraduate and beginning graduate students. It is a programming contest for individual participants.This page tries to give you all necessary information about the contest.
Who is allowed to participate?
The contest is open to all students, regardless of year or major, so long as they were born in (current year - 23) or later. Older students are not eligible for the contest.
Why would I want to participate?
There are lots of reasons why you would want to participate. First and foremost, we think that it's a fun event. If you are looking for a more material incentive, you can win pretty cool prizes, and every participant gets free pizza and soda. If you make it on the USC team, you get to represent USC at the Regional contest, and might win an all expenses paid trip to the world finals. On the more career-oriented side, the contest lets you hone your problem solving skill and gives you practice in programming and solving algorithmic questions. Doing well in the contest looks great on your resume, and contest sponsors go to great lengths in trying to hire successful contestants.
What is the time commitment for me?
This is not a long-term project contest: The time commitment is one Saturday afternoon. If you are interested, you can improve your chances by practicing beforehand, or you can try out for one of the USC teams for the International Contest afterwards. But none of this is mandatory.
How do the contests work?
The first hour is always a practice contest, which is highly recommended in order to familiarize yourself with the contest environment. The contest itself is held immediately afterwards for four hours, followed by a 20 minute pizza party and the award ceremony.
When and where is the next contest?
We usually have one contest per semester: one early in the Fall semester, and one late in the Spring semester.
The Fall 2009 contest was be held on Saturday, 09/19/2009. The Spring 2010 contest will most likely be on a Saturday late in the Spring semester, but the exact date has not been scheduled yet. If you want to be notified as soon as it is scheduled, you can subscribe to our mailing list.
How difficult are the problems?
It's hard for us to predict how difficult the problems will look to any one person but we encourage you to look at some example problems. Check out the problems from past contests and the practice links below.
Does it cost anything?
The contest is absolutely free to all participants.
What can I win?
The first four prizes are typically cash prizes of $400, $300, $200, and $100. In addition, we often have have many additional prizes, such as games from Electronic Arts and various other gadgets from other sponsors. Recently, we were able to afford printing our own T-shirts and then typically have a T-shirt for every participant who attends the award ceremony. We do not hold prizes for participants who leave before the award ceremony.
How do I register?
You can register by sending an e-mail to
. Your e-mail must include your name, major, degree program, year of study, and year of birth. If any of this information is missing, we cannot register you. We don't need your USC ID number.
What happened at past contests?
You can see the problem sets, sample solutions, results and pictures of past contests by following the links below.
What's up with that International Contest?
The best participants at the contests, as well as anyone who shows specific interest, are invited to try out for the USC teams for the ACM International Collegiate Programming Contest (ACM ICPC). The ACM ICPC is a huge contest, in which over 1000 schools participate worldwide. . During the tryouts, we have simulated contests, and teach you language-specific tricks and algorithms that are commonly necessary in the ACM ICPCs. The USC teams will first represent USC at the Southern California Regional ACM ICPC and, if they win, get an all-expenses paid trip to the world finals. One of the USC teams (Daniel Birken 2007, Morgan Brown 2008 and Kenny Daniel PhD) placed 2nd out of 73 teams in the Southern California Regional ACM ICPC in 2006, beaten only by Caltech.
I want to get serious. How can I practice?
You can greatly improve your chances to do well in the contest by practicing beforehand. There are three areas that help:
- Know your language, whether it is Java or C/C++. Often, there are cool features that make writing programs a lot easier. And, you shouldn't get stuck on syntax problems during the contest.
- Know your algorithms. Most contest problems involve standard algorithms from the following areas: sorting, searching (including depth-first search, breadth-first search and backtracking), dynamic programming, graph algorithms and geometric algorithms. Identifying the problem and knowing the algorithm to solve it makes you a lot quicker in solving a problem.
- Most importantly: Practice on old problems. The style of contest problems might take a while to get accustomed to. And problems often enough resemble each other quite a bit, as there are only so many programming problems one can come up with. Having solved 999 problems previously, you will find the 1000th problem a lot easier to solve. A great place to look up literally thousands of old problems is the Programming Contest Problem Archive. Another very good link is the Problem Set Archive, which includes an online judge to test your solutions. We also are including the problem set for one of Cornell's local contests as an example.
Which programming languages are supported?
We try to stick closely to the rules of the world finals, which means that we support Java and C/C++, in the installation available in the lab that we use.
What do the official rules look like (a.k.a What tools can I use)?
The complete rules are a little lengthy, so they are on their own Rules Page. Perhaps the most important point is that you may bring any printed or written material to the contest, but no electronic devices (such as laptops, hand-held computers, disks, or even calculators).
How do I get informed about upcoming contests?
To receive announcements about the contests, you can subscribe to the USC contest mailing list.
Whom do I contact for additional information?
For more information, you can send an e-mail with your question to
.
The USC Programming Contests are organized by David Kempe, Sven Koenig, Suya You, Upsilon Pi Epsilon, and USC's ACM student chapter. Please contact David Kempe (
) with any questions.