Slashdot Mirror


ACM Programming Contest Results Revised

Goonie writes: "After the controversy over the results of the ACM programming competition, it appears that the results are being revised. Check out the new standings. The winner hasn't changed, but some teams have moved up the rankings." Actually, from the look of the page at 4:15GMT this morning, "final rankings are under review." Let's hope the fairest decisions prevail, and that all involved are gracious.

29 of 68 comments (clear)

  1. Cool... by pb · · Score: 2

    What happened to them sounded pretty lame, I hate it when people can't just fess up and admit they made a mistake.

    The rules sounded somewhat weird, but it's probably no weirder than the programming contest I've been doing lately (its monthly, so hold your horses). (and MazeMan can admit he makes mistakes. :)
    ---
    pb Reply or e-mail; don't vaguely moderate.

    --
    pb Reply or e-mail; don't vaguely moderate.
  2. Disappointed by Cadre · · Score: 2

    I was very disappointed in this years contest. The automatic turnin program written in Java was not functioning at the Scranton site.

    All our submissions had to be hand submitted by the judges which greatly reduced the speed of which we could get back feedback (you could have submitted a program an hour into the contest and chances are you wouldn't have known if it worked or not).

    --
    All editorial writers ever do is come down from the hill after the battle is over and shoot the wounded.
    1. Re:Disappointed by heliocentric · · Score: 2

      I agree, things at Lehigh weren't much better.

      I would like to add, however, that this contest is important to motivate people to take an interest in teaching group software development under a time constraint. What I have learned from being an ACM coder for the past few years greatly helped me on the job working with other coders, and people who had an idea but just didn't know how to code it up.

      Sharing a single computer was better influence over good programing practices (for speedier debuging if not having the occasional team-mate reading over your shoulder) than any software development course I've had.

      --
      Wheeeee
  3. Coding C in Pico by zpengo · · Score: 3
    I looked at problem F, the controversial one.
    I don't see how anyone could have made enough sense of it for there to be a controversy.

    Damn good programmers, them.

    --


    Got Rhinos?
    1. Re:Coding C in Pico by sphealey · · Score: 2

      "teams were forced to realize on their own what was going wrong, and guess at what kind of output the judges wanted for such a graph."

      And exactly how is that different from real world systems development? Sounds like a pretty realistic contest to me...

      sPh

  4. programming::contest? by siokaos · · Score: 2

    how can one rate a programmer?

    i program in many a language
    i program so i can use my computer
    in different.ways

    programming is an art



    --
    http://siokaos.org/
    1. Re:programming::contest? by heliocentric · · Score: 2

      Points are awared for creating a working solution (since that's the point right?) and if there is need of seperating a tie then efficiency* is brought into play.

      * Sometimes they say that if your program runs in say >5 minutes it is considered non-functional, so a very naive approach that is technically valid is often not accepted.

      --
      Wheeeee
  5. Re:What Languages? by Coward,+Anonymous · · Score: 2

    I wonder if anyone hacked something together in perl....

    C, C++, Pascal, and Java are the only acceptable languages.

  6. Couldn't make sense of problem F? by TheMeld · · Score: 2

    I must have missed the controversy, or perhaps I'm looking at the wrong problem set, (gee, the pdf says 2000 ACM Programming Contest World Finals), but this doesn't seem to be at all vague. It is an application of graph theory. The classic question is 'what is the shortest route from node A to node B.' This just asks you to average all the answers to all the possible pairs of A and B.

    Now, this does not mean that it is easy to do, or that I remember the algorithm I once learned for finding the shortest path from a to b on a graph, but I don't see why anyone with a bit of computer science knowledge wouldn't be able to understand the problem.

    Of course, as I said, I missed the controversy, so that may not have been what the hubub was about.
    -Matt

    --
    -Cheetah
    1. Re:Couldn't make sense of problem F? by heliocentric · · Score: 2

      I highly recomend storing the adjaceny list in a hash table for easy lookup, but past that there is no known fast (ie in polynomial time) alg. to find a shortest path - if someone out there knows of one: email me and we will go on tour!

      What is possibly the best (yes, yes, there is always that worst case where the path goes through all n nodes) solution uses a breadth first search using a queue with parent points to find your path back to your starting node.

      A depth first search is often not the best.

      --
      Wheeeee
    2. Re:Couldn't make sense of problem F? by Dominic_Mazzoni · · Score: 3

      Heh. You're thinking of the longest path problem, which is NP-complete. Finding the shortest path between a pair of nodes is easy - use a simple breadth-first search for an unweighted graph, or Dijkstra's algortihm for a weighted one.

      To find the shortest path between all pairs of nodes, you can use the Floyd-Warsha ll algorithm, which runs in O(n^3) time. It can be done faster, but in this particular case we were guaranteed n is no more than 100, so this was quite reasonable.

    3. Re:Couldn't make sense of problem F? by Anonymous Coward · · Score: 2

      as far as i understand, the difficulty arose because shortest paths between nodes which have _no_ path between them are not really well defined - should it be infinity, or not included or what? the question mentions strongly connected graphs, which imply that all nodes have a shortest path to each other node, but a data set used in the marking included some nodes which were not connected to some others. this is pretty clearly a problem.

  7. Official changes posted by April 24th by Dominic_Mazzoni · · Score: 2

    The teams recently received letters from the contest directors, who say that they have finally decided to "personally re-examine all submissions of Problem F from the archives" and that "the results of the re-examination will be posted in the standings by April 24th."

    So I'm not expecting to see any changes until April 24th, which is next Monday.

    If they make any changes, teams will be bumped up to a higher position, but no team will have its position lowered. Best of all, they have changed their official policy so that in the future, teams will have access to their programs after the contest is over, and also there will be a standard procedure for regrading after the contest is over, in case this happens again.

    I'm particularly happy since there's a reasonable chance that my team's score will improve, but I think everyone should be glad that they're making an effort to keep this a fair contest. I highly recommend this contest to all interested college students. If you haven't already, check out the problem set from this year.

  8. Re:What is this? by ChadN · · Score: 5

    Check out this link about the Controversy over Problem F, and look for Dominic_Mazzoni's post (+5 interesting). I'll quote from that article:

    Take a look at problem F. (Here are the contest problems in PDF if you're interested.) In a nutshell, you're given a complete directed graph, and you need to return the average length of all shortest paths between all pairs of nodes. The problem explicitly stated that you will only be given graphs in which there exists a path from every node to every other.

    This is not a hard problem to work out, but anyone who has had a formal course in computer science ought to recognize that the Floyd-Warshall all-pairs shortest path algorithm is designed to solve exactly this problem. Then all you have to do is add up all of the elements of the matrix and divide by n * (n-1).

    Except that the judges made a mistake, and tested our input using a graph that was not connected - in other words, there were nodes that could not reach other nodes via a directed path. This would not be a big deal, except that the problem explicitly stated that this would not occur. (Input validation is never a part of this contest.) Furthermore, without further explanation it is unclear how these nonexistent paths should affect the average. It turns out that the judges' solution was not counting these paths, and averaging only the paths that existed. Some teams did this by accident, and others (including Waterloo) figured it out only after submitting multiple runs and incurring large penalties. My team was one of the many that did not figure out the judges' mistake, so we did not get credit for the problem, even though our solution was certainly correct as the problem was worded. If we had received credit we would have had four problems correct, possibly putting us in the top ten. Of course, if we had received credit right away, we might not have wasted so much time figuring out what was wrong with our solution and we could have solved another problem in that time. Of course, many other teams were in a similar situation, so I have no idea what the final ranking would have been, but clearly it would have been different.


    --
    "It's overkill, of course. But you can never have too much overkill." - Anonymous Slashdot Coward
  9. You would think... by Shaheen · · Score: 2

    You would think that the hosts of the world's foremost programming competition would take the time to write its own database software with a CGI interface, or at least have the sense to use a more stable, open source package. But NO!! Here's what you get by going to the ACM finals page and clicking "Teams":


    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

    /past/icpc2000/finals/RosterPublicFull.asp, line 11

    --
    You should never take life too seriously - You'll never get out of it alive.
    1. Re:You would think... by Frac · · Score: 2
      yeah yeah...

      I'm sure hosts of a world famous programming competition would want to waste time and resources to write its own database software and reinvent. Maybe it's a foreign concept to some of you guys that sometimes the most practical, most time-saving solutions is the best one, even if it's not "the right thing".

    2. Re:You would think... by Mr.+Slippery · · Score: 2
      Maybe it's a foreign concept to some of you guys that sometimes the most practical, most time-saving solutions is the best one, even if it's not "the right thing".
      Tell us, how does something that costs a lot of money and doesn't work qualify as the most practical, most time-saving solution when compared with free, open, and stable solutions?
      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    3. Re:You would think... by Frac · · Score: 2
      How is creating their own database from scratch a "time-saving solution"?

      I don't know what webpage you're on, but when I accessed it, it looked fine to me. Spending X amount of time and effort to get a server that fails 1% of the time sure beats spending 10X amount of time and effort to get a server that fails 0% of the time. Especially since it's not mission-critical.

      Frac

  10. It was fun anyways by Anonymous Coward · · Score: 2

    So, the administration may have botched a little this year, but it was still a very interesting experience, being in the company of 240+ other intense geeks for four days. Plus you can't really beat a free trip to Florida. To repeat what some other guys have said, you should all go participate in programming contests; they're a lot of fun, and you can often win cool stuff! Oh, and props to IBM for the nicest promotional pens I have ever received. :)

  11. Re:What Languages? by Anonymous Coward · · Score: 4

    Does anyone know which teams used what languages?

    The team from MIT spoke only in 13th century latin. The team from Oklahoma State communicated solely in cattle brands.

    The team from NYU in Ebonics. The team from Dakota State University spoke only in a very slow drawl.

    The team from Georgia Tech kept referring to functions as crackers, and arrays as yankees. The team from UCLA constantly threw in random "likes" like, like this, like.

    The team from University of Winnipeg felt it necessary to say aye after each sentence. The team from University of Southern Florida wouldn't shut up about Elian, and often develoved into a Spanglish.

    The team from Brigham Young University kept referring to the moral crumbling of the ACM contest. The team from Texas Christian University always commented their code in the form: //John|3:16

  12. Entrant's opinion by Anonymous Coward · · Score: 5

    I was one of the University of Melbourne team (thats Melbourne, Australia).

    If it hasn't already been explained, problem F went as follows: find the average shortest path length between all pairs of nodes in a strongly connected directed graph. The judges appear to have put a non-strongly connected graph in the testing - one for which not all pairs of nodes have a connecting path. It was then pure luck whether you had chanced upon the same method for computing the average as the judges, so while some teams solved the problem in the first few minutes of the contest (notably St. Petersburg state U. ;), others struggled with it for the entire five hours, trying to find bugs in their correct code.

    Because it was by far the easiest of the problems, many teams began with this question. By the end of the five hours, many perfectly clever teams had not solved anything, due to the stuff-ups on the part of the judges.

    Now, making errors is one thing, and it certainly screwed up the contest for everyone, but in some sense errors are forgivable - what was really appalling was the way in which the situation was handled.

    A protest regarding the question was submitted (by my team) within a minute or so of the end of the contest - there was no official channel for appeals, so we were just told to write it down on a piece of paper and give it one of the judges. We never received a response of any sort.

    After the contest most of the teams were aware of the problem - one team had submitted a program designed to go into an infinite loop if the input graph was not strongly connected, thus working out what error the judges had made. In any case, we took our printouts to verify our solution, and later presented our arguments to the tournament director, Bill Poucher.

    I have never met someone so unprofessional, with no concept of accountability or responsibility, and little even of courtesy. I am not sure what his background is, but if Mr. Poucher were the director any public company, he would have been on the street - or in court - in seconds. He refused to listen to any of the requests from the teams or coaches, telling them instead their memories of the contest perhaps weren't clear. Nothing was done and the prizes were awarded, with Bill Poucher announcing at the ceremony that "every problem was solved by at least one team" - so that there weren't any problems.

    After the contest, in the face of protests from regional directors and coaches from around the world, with proofs that their solutions had been correct, the contest organisers continued to deny there had been any problem. It took quite a while for them to agree to remark the solutions.

    Now, I have no especial gripe at the judges that an error was made, because people make mistakes - it's just an indication that they need better validation on the testing programs. I'm also not especially fussed that my team didn't come first - because in some sense, we were one of the LEAST affected teams. Just look at the results of the American universities. I mean, it's nice to have a laugh at America getting its ass kicked once in a while ;), but in this case (having spoken to several of the teams) I think most of those teams just came up against problem F and got stuck.

    What I do have a problem with is the contempt the organisation showed to the tens of thousands of man-hours of work that go into the contest on the part of the contestants. No channel for appeals, no official responses to protests, no means to elect new directors, no accountability, not even a report saying "we made a mistake; we plan to do this to fix it". There was a similar problem in our regional contest this year, and the regional director (Raewyn Boersen) fessed up, and sent around an email describing the problems, the changes she would put in place to the validation of the competition, and the transparency with which future contests would be conducted.

    My question for slashdot is, how do you get an organisation like this to to act like it's accountable to the people who enter?

    In any case, I'd still recommend entering the contest to any CS students - its an amazing experience, however it goes. I've never learnt as much CS in such a short time as in the week's training leading up to the finals. Ask yourself - if you had to, how fast could you code up a 3D voronoi tesselation? Or a fast constraint solver? Can you find a bug in someone else's uncommented code under time pressure, or look at a problem and say how long it will take to code, and what the best order algoritm is? These are the kind of things you learn.

    cheers all,

    John FitzGerald, University of Melbourne,
    Australia

    1. Re:Entrant's opinion by ralmeida · · Score: 2

      But how would they know that it *had* gone into an infinite loop? Isn't that the essence of the halting problem? ;-)

      Simple. They knew because the first step of the loop took 1 second, and each subsequent step n+1 took half the time of n -- so in 2 seconds the program had completed and infinite loop.

      --
      This space left intentionally blank.
    2. Re:Entrant's opinion by adaking · · Score: 3
      I was at the contest. It was the first year for anyone from my school to make it, so there was quite a bit of pressure to do well. Especially since we were one of those schools that everyone kept asking us where it was. I worked on Problem F, and I quickly realized it was very similar to a problem that we had practiced. So I had the solution coded up and submitted in about 30 minutes. After getting a wrong submission, I kept revising it and submitting it. Never got a correct solution. I kept telling myself that there must be some weird case that I'm missing, and if I could find it and show that my program broke on that case, then I could figure out why and fix it. Unfortunately, I never found that case. I am positive the algorithm was correct - I copied it almost exactly from the Cormen book (which I saw many copies of there).

      In the last 5 minutes of the contest, we printed out all of our code to all of the problems that we worked on, so we could have something to go from. We gave the code to our coach, who coded it up and likewise never found a test case that broke it. So he wrote an email message to Bill Poucher.
      A few days later, we got a response. Here's a copy-paste of what we received :
      > > I will issue a general statement about this. There has been a lot of
      > > speculation based on some incorrect assumptions about the data set and
      > > how F
      > > was judged. As an exception, I am going to share some information about
      > > the
      > > problems, but I still am working on getting confirmation from all
      > > parties.
      > >
      > > Basically, all of the test cases were strongly connected. This has been
      > >
      > > verified by at least three very reliable sources. The case that caused
      > > the
      > > vast majority of rejection was a directed circuit. To build your own
      > > test
      > > data, make four or five test cases followed by:
      > >
      > > 1 2
      > > 2 3
      > > 3 4
      > > ...
      > > 99 100
      > > 100 1
      > > 0 0
      > >
      > > Be sure to terminate your list of test cases with another 0 0. It is
      > > easy
      > > to mishandle a sentinel-terminated loop of sentinel-terminated loops.
      > > Problems that would cause rejection: not explicitly using long
      > > integers,
      > > improper type casting, coercion problems, loop bound mistakes, incorrect
      > >
      > > initialization of the shortest path matrix, improper traversal of the
      > > shortest path matrix, improper memory allocation, exceeding stack
      > > limits,
      > > failing to reinitialize between test cases, faulty parameter
      > > passage, getting the algorithm wrong, and so forth.
      > >
      > > Be sure that you test it with the command-line compiled version of your
      > > submissions using the exact command-line compiler flags used in the
      > > World
      > > Finals. Make sure to precede this test case by five or six others to
      > > test
      > > re-initialization and proper memory management.
      > >
      > > I don't know whether Delphi suffers from the same malady that Borland
      > > C++
      > > suffers from, but Borland C++ defaults to 16-bit integers at the
      > > command-line, but 32-bits at the IDE level.


      The reason that 16-bit integers would break any potential solution is that for the case given where we have a 100-node loop is that the sum of distances could easily go beyond the 32767 mark. I guess the teams that did get it either found another algorithm to use or they explicitly used long integers. Pardon me, but ever since 32-bit operating systems came around, I have pretty much assumed that int == 32-bits.

      Since then, I have yet to hear of a "general statement", except for this Slashdot story.

      In my opinion, many of the results of the competition are invalid because of this problem. Had a correct response come back to us in the first few submissions, we would have gotten at least one, if not two more, correct. We wouldn't have changed the top-most standings, but it's possible that there are other teams that would have.
    3. Re:Entrant's opinion by Jobe_br · · Score: 2

      That is a foolish assumption to make.

      No it isn't. If you're programming for portability - maybe. Knowing your target platform is absolutely imperative. The goal here wasn't to program for x different platforms - it was to show that you have what it takes to code up algorithms to solve some of the toughest theoretical CS problems, under the constraint of time.

      What happens when you work on a small embedded 8- or 16-bit processor?

      Especially on this type of work, you want to know exactly what the compiler is going to do - you don't want to throw in a bunch of junk code to make your code portable. Its called optimization . Anywayz, they weren't compiling on a small embedded processor, they were compiling on 32-bit x86 processors running NT where its assumed that the compiler being used by the contestants creates target code exactly the same as that used by the judges. If not - this should be mentioned.

      What happens when you work on a 64-bit system?

      Well, since you asked, in this case, the algorithm would still work. The fact remains that they weren't compiling on a 64-bit platform, tho - see above.

      The C language spec makes no guarantee for the exact range of an int.

      This isn't what's at issue here. Maybe in some other thread, your comment has relevance, however, nobody in this thread lacks knowledge of what is and isn't guaranteed by the C language spec. Nobody really cares what you know about the C language spec, either.

      I won't make the uninformed assumption that you've never been to a programming competition or that you don't know what its like to sit for hours trying to fix something that doesn't end up being a problem with your code ... but it would certainly seem that way. You're pounding issues that are highly irrelevant.

      as always - my $0.02

      Jobe

  13. Re:It's the ACM, they just *can't* be wrong...blec by Anomalous+Canard · · Score: 2

    As someone who works with computer systems that have been coded in the near to remote past by other people, I can assure you that if your program displays some values, someone somewhere perhaps in the remote future will look at them and try to use them. Even if your specification gives the file output as the designated deliverable, in the real world outside of academia, I would consider any incorrectly formatted output a problem with the code.

    Anomalous: inconsistent with or deviating from what is usual, normal, or expected

    --
    Anomalous: deviating from what is usual, normal, or expected
    Canard: a false or unfounded repor
  14. 1. Get Tenure, 2. Eat brain by jabber · · Score: 2

    I don't know Mr. Poucher, but he sounds like the stereotypical American career academic. I've had the misfortune of studying under a few.

    They rise to a certain level of recognition, probably higher then they feel (deep down) they deserve. They resolve this insecurity about their competency by believing that they are actually the 'right hand of God', and look down on the unwashed masses with utter contempt, from their Ivory Tower.

    'How DARE this student (spoken through clenched teeth) question MY process and MY organization of MY contest!? Without ME he is nothing.'

    Typical case of recto-cranial inversion, easily cured with a clue-stick beating and a few months at a REAL JOB.

    --

    -- What you do today will cost you a day of your life.
  15. Clueless director by Bj�rn+Stenberg · · Score: 2
    I don't know whether Delphi suffers from the same malady that Borland C++ suffers from, but Borland C++ defaults to 16-bit integers at the command-line, but 32-bits at the IDE level.

    That's a pretty clueless statement coming from the director of a programming competition. Borland C++ in fact ships with two command-line compilers:

    • bcc.exe - The DOS compiler, with 16-bit integers and pointers suitable for DOS' segmented memory model.
    • bcc32.exe - The win32 compiler, with 32-bit integers and pointers suitable for Win32's flat memory model.

    First rule of programming: Choose the right tool for the job. Apparently, this fellow skipped that class.

  16. Contests are great, and Dr. Poucher's a great prof by zorn · · Score: 2

    Dr. Poucher's a great guy. You just have to remember, in any contest, that you are catching the contest director in the absolute worst possible circumstances. I hope that you get to meet him some other time. Re: the ivory tower comment -- That may be a problem of some profs, but not Dr. Poucher -- he does a lot of "real world" work on the side.
    I have had two classes from Dr. Poucher (one theory and one software development) and I never knew him to be anything but fair to students.
    Ask yourself this, though, what would you have done in his situation? You knew that three people, whom you trusted, had checked the problem data. You knew that the problem had been solved on the data already. You've not encountered such a problem in ten years of running such a contest. You knew that every contestant at the contest was way keyed up and running on adrenaline.
    I agree about contests though. They are a lot of fun and you do learn a lot. This is true in general, IMHO. Texas has statewide academic contests in high schools -- participation in those takes away all the "test anxiety" many otherwise excellent students face. Programming contest is the same way. It gives you a great confidence, whether you win a contest or not, to just sit down and start slamming out code.
    Once again, I am sorry that you had to meet Dr. Poucher under such adverse circumstances!
    Zorn

    --
    / is the root of /all/evil.
  17. btw by jesser · · Score: 2
    For high school students, there's a cool contest called usaco. It's used to pick the US team for the international high-school level contests, but most of the participants are actually outside of the US. I think the problems are similar to (but easier than) the ACM problems.

    --

    --
    The shareholder is always right.