So, how does a programming contest work? Participants make groups (usually 1-3 people). Every group is presented with the same set of problems, and they must solve as many as the can in a limited amount of time (1 hour, 5 hours, or even more for internet contests). Each problem requires the programmer to implement an algorithm to solve it. Some problems require trivial or ad-hoc algorithms, other require more sophisticated methods such as dynamic programming, search and pruning, etc... The format of the input and output are also specified in the problem's text. Input and output are almost always done by stdin/stdout. There are some other rules, such as time penalties for incorrect solutions, but these vary from contest to contest. For examples of typical problems, see my list of solved problems below.
Nowadays I am no longer an undergrad I therefore I can't participate at the ICPC anymore. Anyway, I continue solving programming problems for the fun of it.
To start, go to the Online judge webpage and register. Once you do that, you can start practicing solving some of the problems (go to the "Browse problems" section). These guys also organise from time to time online contests were everybody can participate.