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 or Sunday 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.
(In the past, first-time participants who missed the practice contest have often had lots of trouble later.)
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.
If you want to be notified of future contests as soon as they are 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 Amazon gift cards. As of Spring 2016, the prize structure is as follows: The first four overall finishers receive $100, $75, $50, and $25, respectively.
The top four undergraduates also receive $100, $75, $50, and $25, respectively.
Contestants receive all the prizes they have earned, i.e., an undergraduate placing among the top four overall collects both prizes.
In addition, we often 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 through this link.
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 1800 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. In Fall of 2011, USC for the first time had a team winning the Regional Contest, and going to the world finals.
See the news story by the Viterbi School. In the following 3 years, USC kept the regional champion. Even tough we only got the runner-up place in 2015 regional contest, we still make it to the World Finals.
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 ACM-ICPC Archive. Two other very good links are Kattis and Codeforces, which are online judges that you can test your solutions.
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).
Are there other fun contests at USC?
ACM and UPE occasionally organize longer-term project contests and hackathons. In those, you usually work as teams, and try to come up with a project that has the core of something useful (and may develop into such a useful product eventually).
The math department has a Math Club which forms teams for the Putnam Exam, a prestigious national math competition. If you like a mathematical bent, you should contact them; they are interested in having participants beyond just math.
We also frequently get asked about whether there are programming contests for students who exceed our age restrictions. We have no plans to organize such a contest, but if you are very enthusiastic about it, you could probably make it happen, and we will be happy to give you some pointers.
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 USCContest@gmail.com
The USC Programming Contests are organized by David Kempe, Michael Shindler, Ruixin Qiang, Yu Cheng, Ehsan Emamjomeh-Zadeh, and USC's ACM student chapter. Please contact us at USCContest@gmail.com with any questions.