2016 ACM International Collegiate Programming Contest Scoreboard
icpc.baylor.edu
icpc.baylor.edu
[1] https://www.edx.org/course/how-win-coding-competitions-secre...
ITMO did not get 1st place this year because the team changed, and I believe tourist graduated. Last year [1] for example they solved all 13 problems, while the 2nd team solved 11; there simply was no competition.
7th is still an excellent result. Let's see what they do next year!
China have raw numbers, America has the resources/ecosystems to train and prepare these programmers. Russia seems to have neither and regularly outperform both nations.
Also, I know for a fact that many (but not all) people who were good at these contests are also good all-around programmers. (In fact, you probably do better at these contests by writing more readable code, even accounting for the time cost. But some people can get by with messy code as well.)
For me, practicing for programming competitions alongside the job as a software library maintainer really boosted my C++ skills faster than anything else could have.
I guess that applies to other Eastern bloc countries to some extent (see Polish universities at ##5, 9 and 25, Ukraine at #11, Belarus at #17).
On interesting thing to note is the ACM World Final ranking usually doesn't correlate perfectly with perceived ranking of the school, even the ranking of its CS department.
Another point is, ACM is fun, but if you purposefully train for it, you reach the point of diminishing return quickly. Being a former Olympiad in Informatics contestant (high school equivalent of ACM), I find these kind of competition absolutely not helpful in real world programming. It does help me pass the interviews.
In China at least, ACM is perceived a way to prove oneself to potential graduate schools in America and employers. And I do know employers give very high priority to these students - even Google.
So, the reason the Chinese is good at it is mostly, this is not a hobby, but a high stake exam. It is a way to land at prestigious graduate program or job.
Why isn't the US, and why aren't top universities doing as well as we may think they would be? Because they have better options than ACM.
Are an overwhelming number of Chinese ladder climbers? I don't think so.
I know many Chinese are feeling strong with just numbers since we did not have that kind of numbers for a long time. But we are still playing games invented by other explorers mainly in our backyard.
We are so used to playing existing ones that numbers became the only thing matters. What is invention? Never thought of it.
Sure, current Chinese elites can enjoy high life while having a decent way out. A nation not wanting to face its true weakness and strength is going nowhere.
The teams that win are the teams that practice extensively. Universities like St.Petersburg care a lot and have official programs for preparing for the ACM competition. The students care a lot too as the competition is a way for them to distinguish themselves.
US universities, at least the top ones, don't care that much. American students have better things to do, as you said. If you look at a typical US university team, you'd see a lot of Chinese and Eastern European students that have done IOI in high school. Their advisor would be a professor who typically just signs the paperwork.
The difference is evident when you observe the typical sophomore-level discrete math class in US universities. Most of the students have that deer-in-headlights look that shows they are struggling with the basic concepts of logical reasoning and how to write a proof like a grown-up. Kids from what I'll call "enriched" or "non-traditional (in the US)" math education have been doing that stuff since middle school and are a little bored.
(Off-topic asides: 1) If your kid likes math, look for a local Math Circle. They all vary, but hopefully you live near a good one. 2) If your kid is a middle-schooler and really likes math, I highly recommend the MathPath camp -- see mathpath.org.)
Memorization of algorithms.
In addition, programming competitions always seems to have an overabundance of Computational Geometry problems which are really hard if you have never seen them before but relatively straightforward if you know the correct algorithm off the top of your head.
I prefer to see the "head-to-head" competitions over some competitive task than these. Sometimes, a simple but clever hack does better than advanced algorithmic programming (and sometimes not).
You don't need to memorize them. You can have some amount of printouts with you, which teams usually use for having a bugfree implementation of stuff like arbitrary graph matching, maximum matching of lowest cost, 2SAT or just Gauss elimination.
At the same time these advanced algorithms do not get used very often -- in the 2 finals I took part in we've used something from out printouts maybe once.
From the site: "compare RSM's average math SAT score of 774 (out of 800) to California's average math SAT score of 516."
ACM ICPC is basically the Olympics of Competitive Programming.
The significance can vary from person to person but sometimes Universities and Companies look favourably at good results in such competitions.
It looks good on the resume, especially if the person reading the resume has been to that kind of competitions too.
However, Caltech itself doesn't care that much about its team's performance.
When I was at nearby USF, our programming contest teams were student-run. It's not a priority for the department and there is a lot of inconsistency as students come and go. There's also a smaller pool of participants to draw from. We did reasonably well for a little while when I was there and put a bunch of time into it, recruiting, teaching, running practices with and without other unis. But it takes a lot of effort.
To prepare for it they generally practice either on UVA online judge (1800 problems) or Topcoder.
To see how insanely challenging it is, try to solve even 90 problems out of the first 100:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge...
http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=503...
However, I really haven't applied much of what I learned doing the problems to "real" work. It's cool to see methods of looking at things differently, but just doesn't translate well to software development.
A bit of background about ICPC, for those who don't know: It's a team competition. You have 3 contestants on a team, but only one computer on which to write, test and submit your code. Most of the work of solving a problem is usually done in your brain or on paper, so typically, one person will be coding at a time while the other two think about problems and get ready to rotate to the keyboard.
But although the primary scoring criterion is number of problems solved, you also get penalized for time taken and incorrect attempts. So it's really important to be able to glance over someone else's shoulder and notice things like "oh, there's an off-by-one error in that loop condition" or "you forgot about such-and-such an edge case".
There's actually a study group where the winner team and number of older contestants rotate to talk.
P.S. Link [Ukrainian] for anyone interested http://mycollege.org.ua/