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.
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.
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.)
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.
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.
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).
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."