No US College In Top 10 For ACM International Programming Contest 2013
michaelmalak writes "The annual ACM International Collegiate Programming Contest finished up last week for 2013, but for the first time since its inception in the 1970s, no U.S. college placed in the top 10. Through 1989, a U.S. college won first place every year, but there hasn't been one in first place since 1997. The U.S. college that has won most frequently throughout the contest's history, Stanford, hasn't won since 1991. The 2013 top 10 consists entirely of colleges from Eastern Europe, East Asia, and India."
So what? I don't see any of those schools being real power houses of innovation either.
. . . and . . . how come I never get those programmers when my company outsources . . . ?
For the same reason you never get a knowledgeable person if you dial a helpdesk.
Those outsourcing countries have internal markets as well, including normal programming jobs.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
TBH a lot of these people are not the kind of programmer you'd want to outsource your average business app to.
It's really more of an algorithm competition. The programming part is mostly concerned about getting a correct implementation, quickly. The winners tend to be people who 1. know a lot of algorithmic theory, and 2. can write and keep track of fiendishly complex code, with emphasis on conciseness.
I'm sure many of them can write clean and maintainable code as well, but it's not a requirement for this contest.
Actually, various small Pacific Island Nations are higher, then various Middle Eastern nations, then Mexico. Then US. Nauru and Samoa are 95% obese.
Slashdot: providing anti-social weirdos a soapbox, since 1997.
Cause or effect?
Questions raise, answers kill. Raise questions to stay alive.
What manner of "real world" is it where there aren't crazy deadlines and time to design and code properly?
This programming contests have nothing to do with real world programming or the skills need for most CS fields.
Phew, glad you cleared that up. For a second there I thought that the education system in the US had been flushed down the toilet!
Actually, Mexico just took over the top spot for obesity.
If you wanna be the best, you've GOT to be hungry.
I would guess that you've never entered one of these competitions. To do well, it is not sufficient to come up with quick and dirty solutions; these will generally fail. You have to be able to find a good algorithm, quickly, and implement it, catching all the edge cases. These are certainly valuable real-world skills.
Disclaimer -- I was on the Rice team that took 3rd in 1986 (before there were any international teams at all).
If someone does well in these contests, they're probably really good programmers. Inexperienced, yes, but......that's why they're still in college. They are programmers who know how to get the computer to do what they want, which is more than a lot of 'professional' programmers.
It's not clear why you think scalability and correctness aren't tested by these contests. A lot of the problems have huge datasets, so if you use an algorithm that doesn't scale, you will fail. And of course correctness is the point.......
"First they came for the slanderers and i said nothing."
Quick and dirty solutions have no place in real world? Tell that to the customer losing a million an hour due to broken system. He will take whatever quick and dirty fix you can give him in a matter of minutes.
I am not sure which real world you are living in. But thinking and coming up with fixes at very short notice is a real skill needed in software industry. I have saved or recovered from several disastrous situations with quick and dirty fixes.
Sure, if you can be quick and clean, that's valuable. But it's throwaway code by nature. You get no points for making the code readable, well structured, interoperable, etc. And, sadly, new complex algorithm development is the kind of development very few people actually get to do.
There are all kinds of programmers and skillsets The problem with these contests is they give the impression that this the "highest form" of programming skill. In fact, there are many important skills these contests don't address at all, and there are many good programs at schools those that would have a hard time fielding a competitive team.
Or better, it _is_ already lazy. I have done some competitive programming while studying, but it was a small group of students in a special elective course and only 6-7students in it. I already was a PhD student at that time and not taking the course, but I knew the professor doing it and he had told me that he was setting this up and also participating himself. Ended up being 1st until the professor and another student started "cheating" by using inline-assembler ;-)
Still, even in this specialized, elective course, only half of the student put any real effort into it. That is not good. Programming is something you need to be able to do reasonably well if you do anything advanced in IT, or you will never be any good at it. Historically, the west did protect its economic advantage by having better infrastructure, machinery and materials, but that is over. Any bright person with at least slow Internet access, reasonable English language skills and an older computer with Linux or one of the xBSDs on it can compete now on a world-class level, geography has become pretty meaningless. Or rather, being in the west is a disadvantage due to a pervasive sense of entitlement. Personally, I think this is a good thing. Competing on merit only is the only working way to identify talented people.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
I looked at the input/output files for the 2011 and 2012 contests. The biggest files I found were on the order of 10Mb. That's not a huge dataset in my mind, not by a long shot. I'd bet that most, if not all of the submitted solutions would fail if given datasets on the order of gigabytes, or not run in any reasonable amount of time. Makes sense, they don't have to. But that's real world scale.
It's easy to dump on "professional" programmers, and yes, there's a lack of talent, but being good in these contests is no predictor of success in a programming career. Programming as a career has nothing to do with getting the computer to do what you want; it has everything to do with getting it to do what your customer wants. Your boss wants, what IT wants, and frankly, it really is about not doing what you can't maintain or do well enough and having the courage to say no. And, yes, it does mean being able to work in a team with people that have different skills or are less talented than you.
I've seen too many students who thrived on this kind of work, were encouraged by professors and others for their talents, only to watch them crash and burn in the realities of programming outside of school. And academics is no recourse for some either, as that is not quickly solving problems with known answers, that's asking questions, forming a new problem (harder than it sounds) and then hopefully answering it well.
Which of the Indian teams are represented? I see one at 60th...
Irrelevant. What's relevant: if there's little need in the US (or any other country) economy for software people, it is likely there will be no winners from US in the ACM competition (or winning will happen only as an exception rather than the norm).
In a sociological context, one needs quantity to develop quality consistently over time (that is: it is highly likely the talents need nurturing by an existing culture in their field for them to reach their full potential; and this requires quantity).
Note that quantity alone is not sufficient for the quality to emerge - if in need for another example, you only need to look at the today's music
Questions raise, answers kill. Raise questions to stay alive.
Yes, I mean everybody who participate in the ICPC.
It's a contest where clever programmers do well.
The advantages and disadvantages of clever programmers are well known. These are all brilliant people who can write clever code, but not all of them will write code that other people can maintain.
Some of them are simply to clever to see why other people would have trouble following a piece of code.
I'm not saying their skills aren't valuable when you actually have a difficult programming task, but for outsourcing especially, where the task is hopefully basic and the code is guaranteed to pass through many hands of different skill levels, you don't need clever people, and especially not 'clever' people.
From looking at some of those problems, it seems to me that it's more important to be a better mathematician than a programmer.
It's possibly related to the results. Many of the top-tier universities use less industry-friendly languages for teaching undergraduates. At Cambridge we do a lot of ocaml, at MIT they use Scheme (and, apparently, Python), at a number of others they use Haskell. There are several reasons for doing this. The first is that teaching a less common language means that you don't start the course with half the students thinking that they already know the material. The second is that teaching a relatively simple yet expressive language teaches students to think about algorithms first and then about microoptimisation later when they learn their third or forth language.
In many other universities, there has been the growing trend to believe that the language that you should teach with is one that you would use to solve real-world problems. I believe that this is a mistake, because the requirements for a language for teaching and for creating maintainable large-scale applications are nowhere near the same. This would mean, however, that students from universities with this belief would have an advantage in these contests as they'd be using a language that they'd had a few years more practice with.
Looking at the results, however, I suspect that there's also a lot of apathy involved. MIT and Stanford are there, but they tend to encourage a very competitive atmosphere. Several universities that I'd expect to produce students that would do well appear not to have entered at all. Given the wide range of extra curricular activities available to students these days, I wouldn't be surprised if entering a competition is somewhere down the list.
I am TheRaven on Soylent News
Ah, in that case its even worse! It indicates the US is lacking behind other countries in producing quality mathematicians!
And our company employs a lot of our programmers from the university maths department. With good reason.
I looked at the input/output files for the 2011 and 2012 contests. The biggest files I found were on the order of 10Mb. That's not a huge dataset in my mind, not by a long shot.
10MB input is huge if you're solving traveling salesman. It's small if you're trying to count the number of binary 1's in that file. Your methodology of looking at the input size without considering the problem yields only a nonsense answer.
It's easy to dump on "professional" programmers, and yes, there's a lack of talent, but being good in these contests is no predictor of success in a programming career.
How do you know? Given that programming is highly IQ-loaded and so are these competitions, it would be entirely impossible for there to be no predictive effect. The only question is how much can be predicted. You clearly have no idea on that question.
The problems are such that you don't need huge datasets to choke O(n) solutions in the execution time limit. Winners at these competitions know how to produce efficient code. They may need to learn maintainability, but I'd wager that is an easier skill than producing the kind of efficient *and* correct solutions they come up with. Try your hand at some of the problems to see how hard they are: http://uva.onlinejudge.org/
If at first you don't succeed, skydiving is not for you
It's "fascinating" that St Pete schools make the top 5 twice. No team from England, France, Germany, or India? Hmmm...
University of Central Florida ranked 48, that's gotta hurt anyone outside of China, the former USSR, and whatever other teams didn't just say "hey I know some C, WTF!"
I did a double-take, since "St Pete" to me, means Tampa Bay, and these institutions are both in the OTHER (Russian) "St Pete", it appears.
I had a short, if enjoyable time at UCF and attended one of their ACM contest planning meetings back when they were serious contenders. They approached it with all the determination of the Invasion of Normandy.
I don't have much use for programming contests, myself, since practical programming isn't something that easily adapts to such short time frames, but it's still pretty sad that there are no US top 10 contenders.
Could be.
I did really well in these competitions during high school. Now I look back in horror at some of the code I came up with.
What slows me down today is all the second guessing I do now that I know what can go wrong.
There's a parallel in entrepreneurship. Many immigrants in the USA start businesses in part because they just don't know just how vulnerable they are to lawsuits and regulations. Many native citizens are much more cautious for fear of what the legal system or government might do to make their business life more difficult and they sit on the sidelines.
It's possible programmers in other countries are still in that exciting stage where they can code without fear.
Or, it could be that many immigrants in the USA start businesses because they have nothing to lose if they fail and everything to gain if they win. Like a high school kid in a programming contest, what is the penalty for failure? Now, take that immigrant who has made it past a startup or the high school kid is now working as a programmer, there is no longer "nothing to lose" and one has to manage risk. It has nothing to do with the legal system and everything to do with risk/reward.
Ironically, communication and teamwork is actually a part of this contest.
3 people in a team on one computer. Makes you think pair programming was inspired by them (given the long history of the competition).
Don't quote me on this.
Which is the foundation for computer science. These are computer science contests, not programming contests. There's a huge difference.
Computer science is a science - it's the study of computing. Coding is required, but relatively secondary to the whole thing. You can apply what you learn from CS to practical things - that's what computer engineering is about. Then there's just the garden variety coder who takes a course on Java and that's it - that's a trade.
These problems are about generating algorithmic solutions and realizing when one may outdo another (and sometimes, realizing that while nice solution is great, sometimes brute force is the order of the day).