Russians bury us

Russia buried the U.S. in a computer-programming contest for college students. CNET reports:

Saratov State University placed first, with four other Russian schools in the top 10 in the 2006 Association for Computer Machinery’s International Collegiate Programming Contest (ACM-ICPC).

Only one U.S. team — MIT — made it to the top 10, finishing 8th. Polish teams placed second and seventh, the Dutch took fourth and a Chinese team finished fifth. The next highest U.S. finisher, CalTech, tied with a Bangladesh team.

About Joanne


  1. Cousin Dave says:

    Part of the problem is the way that U.S. colleges teach computer science. There is far too much focus on learning the details of syntax of particular languages. Yes, that’s something a programmer has to know, but these students are coming into these classes having never had any exposure to either formal logic or Boolean algebra, much less sort algorithms or computabllity theory. They can write code that passes the compiler’s syntax checks, but the code doesn’t work because, ultimately, they don’t really understand what they are supposed to be doing.

  2. Cousin Dave…interesting. The complaint I’ve heard is almost exactly opposite: that CS majors have tremendous exposure to theory but are not terribly practical.

  3. Jack Tanner says:

    I’ve got to agree with photo – I took college programming classes after working as a programmer and they were mostly theory and few of the kids actually new a lot about programming. I’m not saying that’s wrong because of all the hack code that’s written but that is what I experienced.

  4. My husband will graduate on May 13th from the University of Iowa with a double major B.S. in Mathematics and Computer Science. His complaint is that it has been all theory, and not nearly enough practical application. He’s going into the job market soon, and he knows a lot of “computer science” but on the practical level, we’re still trying to figure out what that means he can actually _do_ in terms of what types of jobs to apply for.


  5. Indigo Warrior says:

    Computer programming is as much of an art as a science. Colleges teach the science well enough, but not the art – which is more difficult to learn requires time to develop, through practice mostly. Not only is programming an art, but it has a strong vocational component. The best programmers are the ones who have hands-on experience with computers, often at a very early age. In other words, the “hackers” and “pirates” now shunned and criminalized by the corporate world.

    Another problem is that the recent crop of tech-school graduates have seen Information Technology as a gold mine requiring little effort (much less innate talent). The last five years have helped to cut away that attitude. It is these lackluster workers that have been the first victims of outsourcing.

    With this new age of PlayStations, I would expect more clever hackers; the type who at five years old exploited undocumented features of their iPods. They are guerilla scholars, just like the kids who mix chemicals in the garage, but without the physical danger. (Or maybe not. This is also the age of the Patriot Act, DMCA, Bernstein, etc.)

    Or perhaps most of these hackers now grow up in Russia, Poland, China, and Bangladesh.

  6. Wayne Martin says:

    Programming is an art .. and as such, takes much practice to become a master of the art.

    Solving “show problems” is very different than working on projects that take two years to conceptualize, specify, code, debug and eventually hand-off to the customers (only to find that what you have delivered is not what they wanted).

  7. Time to import more immigrants.

  8. Indigo Warrior says:

    Time to import more smart, talented, inspired immigrants to design and build some robots to flip burgers and mow lawns. Time to add IQ testing to immigration requirements – and see how the liberals like that.

  9. Photo is right – they taught a lot of theory, and then said, “go do it in this language” without a lot of support.

    It’s one of the reasons I switched to Information Systems, which fits my way of thinking instead.

  10. I’m yet to meet any very competent programmers coming out of colleges. Yes CS students get a lot of theory. But, they should, they need to learn algorithms and data structures, and whatnot. The actual syntax of the languages they should be learning on their own. Is that really so much to expect of college students? The languages are changing, they might as well get used to learning this stuff on their own.

  11. edgeworthy says:

    I’m a bit surprised that MIT and Caltech did that well. Programming is considered to be a narrow technical skill which is slighted by those schools. The focus has always been on mathematical/architectural theory with the students left to pick up programming on their own. My guess is that outsourcing low level programming would be the best possible boost for our computer industry.

  12. Maybe programming’s an art when practiced by artists but mostly it’s a craft. More like carpentry or stone masonry then wood carving or sculpture. And even when practiced at the rarified level of the artist the program still has to run right, to work.

    If you want to get good at a craft you practice it. A lot. If you’ve got innate talent you’re ahead. If you have a good “rabbi” to help prevent you wasting time duplicating the efforts of your predecessors, your ahead.

    The Russians probably just spend a lot more time hammering out code.

  13. Y’all missed the details. The Russians solved one more problem in one more hour than the MIT group – 6 in 15 hours compared with 5 in 14 hours. Since there is no indication of the total time limit or any effect of partial completion, it certainly doesn’t look like a “blowout” to me.

    Another interesting question is how many teams were competing from the US versus how many from Russia and elsewhere. But since this was the finals, the question is how many started the initial competition, I guess.

  14. —I’m a bit surprised that MIT and Caltech did that well.

    Then you certainly don’t know ANYTHING about either MIT or the ACM programming contests.

    –Programming is considered to be a narrow technical skill which is slighted by those schools.

    Yes, programming is for typists and monkeys. But THINKING is what MIT teaches, particularly in its core computer science course, Structures and Interpretations of Computer Programming.

    — The focus has always been on mathematical/architectural theory with the students left to pick up programming on their own.

    If by that you mean that there was something more important than learning what a private abstract data type is vs. an interface, then YES, definitely. Details like that are irrelevant to learning how to THINK about solving a problem.

    — My guess is that outsourcing low level programming would be the best possible boost for our computer industry.

    Yes, we should outsource it to machines. And nowadays, we practically do. And kids from MIT, Cal and other top thinking CS depts are the ones who draw the solutions on the board and feed them to machines to code up.

  15. edgeworthy says:


    I am surprised you sound so vehement as I agree with most everything you’ve said. Perhaps you thought my remarks were critical of Caltech/MIT? I only meant that training at the top schools is likely to be less directly tied to the contest-specific skills vs. teams from other countries. Hence, thinking skills — which are appropriately emphasized — only correlate weakly with performance in this sort of contest. I am quite familiar with faculty at both schools and quite supportive of their teaching philosophies.

  16. It would be really interesting to have another contest: a problem which requires enough design, implementation, and test effort to require the full efforts of all team members over a period of a couple of weeks or so. This would test the team’s ability to organize the work, as well as to do it.

    There is a tremendous problem with the failure or poor performance of large-scale software projects, and a contest like this would provide a slighty more realistic model of what such projects are really like.

  17. Tom Hudson says:

    Edgeworthy, this kind of contest is actually biased very strongly *towards* what the top colleges teach. It typically isn’t about the details of a zillion different frameworks or popular toys, but about understanding complicated questions (with fairly simple input and output requirements), devising algorithms to solve them, and coding basic implementations of those algorithms, quickly and accurately. The teams that do well tend to be those with lots of math and physics background. Photoncourier, there is a lot of coordination that goes on in those teams, even though it’s in a short burst.

    As a CS professor, I don’t much care if my students know .NET or UML2.0 or whatever the latest fad is. If they actually understand their degree, they can pick those things up once they’re out. But teaching at a midlevel liberal arts college we do have to handhold through a lot of elementary language instruction, and have many students who apparently don’t code for fun outside of class or do anything else that would get them the amount of practice they really need. Sure, they install their own linux, and keep up-to-date installs of several other open source projects, but if that’s the kind of job they want they should just get an Associate’s degree.

  18. Tom West says:

    If you look at previous years contests, the North American schools have never dominated. This year might year a little worse, but it’s not a great change.

    Admittedly, the top US universities are laboring under the intense disadvantage of losing many of their foreign students in the post 9/11 environment.

    As for the CS curriculum, one should remember that as an academic discipline, Computer Science is often considered a branch of mathematics. The fact that it involves computers is only its most recognizable facet, not necessarily its most important (from the academic discipline perspective).

    I will say that the universities don’t spend enough time emphasizing this fact. There’s a lot of students who enter CS expecting to learn programming (or perhaps “software engineering”) and then get blown out of the program when they hit group theory in 3rd year. Seemed a bit unfair to me when I was going through that it was only in 3rd year that they revealed what the program was *really* about.