torsdag 20 oktober 2011

World championship in programming

I've been interested in computer game competitions (or "electronic sports", e-sports) and went to the World Cyber Games in Italy in 2006 (the "Olympics" of e-sports) to check them out. That trip eventually resulted in a paper, "Exploring E-sports: A case study of gameplay in Counter-strike" (available online).

I had earlier give a Ph.D. course on "Cultures of programming: Hackers, crackers and open source". One of the participants who was then a Ph.D. student wrote an analysis of the open source movement in terms of sports/competition. His course paper, "Open source athletics" was eventually published in First Monday (available online). We later discussed a variety of "strange" intellectual activities that were made into competitions - including competitive programming - but nothing came out of it (and, he had a Ph.D. thesis to write at the time).

This interest of mine was rekindled when two students of mine wrote a pretty good (Swedish-language) bachelor's thesis this past spring; "Starcraft: A spectator sport for a wide audience?" [Starcraft: En åskådarsport för bred publik?"] (available online). From the abstract: "This study will examine what opportunities Starcraft 2 has to become a spectator sport for the non-Starcraft players. The focus of this investigation is on the spectator but we have also conducted interviews with two companies that are involved in the broadcasting of Starcraft".

I have thus for the longest of time been aware of the fact that some of the "neighboring" computer science students have participated in the ACM International Collegiate Programming Contest (ICPC). I was "almost" invited to come along to the ICPC "world championships" in Florida in May this year, but it didn't quite come together for various reasons. I might go to the world championships in Warsaw this spring though, and as part of the preparations I earlier this week "interviewed", or rather had a two hour long chat with a Computer Science teacher, Mikael G, who has been heavily involved in these activities. I was sort of fishing for interesting basic information that I could turn into great ideas for a study - and boy did I learn a lot!

I don't really know where to start as there is a ton of things I could write about based on what I knew beforehand and on my informal talk. I will however limit myself by "only" covering three different aspects of competitive programming here (and it's still probably one of my longer blog post to date).

1) There are lots of qualification competitions (national, regional) and around 40 regions worldwide (9 regions in the US alone) in the ICPC. In the 2011 competitions, more than 8000 teams from 2000 universities in 88 countries competed and 100 three-man teams make it into the finals (next year's finals will be held in mid-May in Poland). Each university can be represented by only one team in the finals, so the 100 finalists also represent 100 universities.

Some countries and some universities consistently do much better than others and Russian and Chinese teams are for example not seldom among the top contestants. IBM is the one major (and actually pretty much the only) sponsor for the competition, and beyond the prizes (10 000 or so US dollars plus a brand new heavy-duty computer for each of the winning contestants), Russian champions have also gotten a medal from Vladimir Putin's hand and a guaranteed spot in graduate school (perhaps with a scholarship of some kind?). That is, in some places these competitions are a Big Thing, but not so in the United States.

If a prestigious US university would win, nobody would expect less, but if they loose "everybody" would be disappointed. So there really is no upside for the best and brightest at the MITs and Stanfords out there to partake in the competitions - and so they don't. Or rather, the teams that represent these universities often aren't among the best. Perhaps the best and brightest young programmers in the US are busy thinking about business angels and venture capital and about how to start the next Google or Facebook already when they are university students in their early 20's?

I asked if some universities are consistently among the best, taking into account the fact that no individual person can be among the 300 finalists more than twice in their lives (i.e. fast turnover of contestants). Yes, some universities, for example a particular university in S:t Petersburg, very often do very good. I presume there is some kind of "sustainable" structure in place at such universities in order for them to repetitively and consistently "grow" talents and good teams? Yes, there probably is. And then Mikael G told me about the structure that is in place at KTH.

A bunch of people among the Ph.D. students and the faculty have partaken in these competitions and later come to work as coaches after having "graduated" from the competition itself. In fact, there is a formal course in place for the 4th year computer science students called DD2458, "Problem solving and programming under pressure" (responsible teacher = my informant, Mikael G). This course is limited to 30 students and the presence of this (optional) course is a good way to intercept and catch students who might be interested (and the students naturally get university credits in exchange for them trying out the concept even if they decide that this is not their cup of tea). DD2458 is for sure the natural place to encourage and search for talent.

That course is then followed by pretty informal voluntary practice sessions under the tutelage of a coach (previous contestant) - and the coach gets some credit for his work as a tutor/coach by KTH (i.e. can to some extent work with this as part of his job description). These two structural foundations introduce a level of stability that gives KTH an edge over many other Swedish universities.

What are the key factors that determine if a KTH team will make it all the way to the finals? According to Mikael G, the critical success factors are: 1) raw talent in students that apply for studying computer science at KTH (we'd like Sweden's best and sharpest young programmers to come here) and 2) An interest on the student's behalf of using his (sometimes her) raw talent for competitive programming/programming under pressure.

Note to self: Do a preliminary interview study of DD2458 students and teachers and those who participate in the follow-up practice sessions? How about a spin-off about the history of the "institutional support" around programming competitions at KTH that later branches out into a study of corresponding institutional support at ICPC top-performing universities? How much effort (time and money) is poured into these activities and how are such efforts (locally, regionally, nationally) justified? Why is competitive programming "good for you" in the first place?

2) Some people work more-or-less full time year round with organizing the ICPC, but this is not the same as them necessarily getting paid for it! Some people who organize the ICPC work for IBM and can officially use part of their time at work for arranging these contests. There are three technical systems and three different technical groups that manage these crucial technical systems.

The first technical system encompasses all the front-end stuff like the 100 100% identical computers that the contestants use. These computers are high-end souped-up never-before-touched (IBM) computers, and the hardware and software specifications are spelled out in detail so that teams can practice at home using the same/similar set-ups. My understanding is that this sysops group is primarily run by Americans/Canadians/IBM employees and that these are the heavyweight guys who make all the really important decision.

The second technical system is the back-end server(s) that accept contestants' programs, compiles these programs and runs the programs. This system also has different interfaces for presenting data to contestants, to the audience, to judges and to other persons who are involved in the competitions. A custom-made score board seems to play an important role in communicating the status of different teams during the competition. The software for the back-end system is based on software that has been developed at KTH to automatically judge/grade the results of undergraduate students' programming labs. It is in fact my informant, Mikael G, who is responsible for this software.

The third technical system has nothing to do with computers, but all the more to do with media technology as it is a system for producing video and for distributing live coverage of the event to people who want to follow the competitions (for example all those teams that didn't qualify for the finals). The video production unit is run by another KTH guy, Mex, who is an acquaintance of mine. The first time he/they did this video production thing around the competition was when the championships were held in Sweden - at KTH - two and a half years ago.

Note to self: How about a study of how competitive programming has developed from more open-ended games and play (like the "Green hackathon" I will attend this weekend) into a competition with formal rules? What are the steps in agreeing on a format (emerging consensus about about suitable problems, time frames, ways of judging contributions etc.)? How does a competition become a "spectator sport"; something that others (few or many) watch? Is there an emerging format of video production and ways of trying to visualize what happens in peoples' heads and impart drama (of kinds) into competitive programming? Although probably not applicable to competitive programming, how does an activity (contest, "spectator sport") become commercialized with the whole shebang including revenue streams and business models?

3) As stated, I've had a long-time interest in the relationship between work and leisure, and the movement from fun and games to competitions in the computer game/hacker culture. Even though I've now written this quite hefty blog post while still only covering parts of what I learned this week, chances could easily be that nothing much will come out of it... were it not for the fact that there will be workshop in Copenhagen about the interplay between sports and computer games, "Beyond sports vs. games", in the beginning of next year.

It is easy to see how a study of competitive gaming would fit neatly at this workshop, and the November 15 deadline for a 500-word abstract is also pretty neat and do-able. I think I could get access to some pretty great material, but my problem is that I don't, at the moment, know what I would make out of it or what material to collect in the first place. What question(s) would be of greatest interest to ask about the phenomenon of competitive programming?

If I make a study and write academic stuff up, where could it be published? Well, actually, if I could whip together something that is "good enough" that would qualify me for workshop attendance (limited to a dozen or so participants), the workshop in itself might be the perfect place to trawl for further ideas and for theoretical and other insights and frameworks. It is stated in the invitation to the workshop that "topics can range from empirical studies to theoretical or conceptual work that uses sports as a new interpretative frame for digital play". Most of the examples of proposed topics that are suitable for the workshop can very easily be adapted to me doing some kind of case study on competitive programming:
  • Sportspersonship and digital games. In my case sportsmanship and competitive programming; quite some energy is actually expanded to counter attempts (real or imagined) to cheat at these competitions.
  • Designing for digital sports/competitive programming.
  • Play as sporting performance, expertise and virtuoso play. In my case competitive programming as... and so on.
  • Sporting outsiders, alternatives, and rebels. Competitive programming vs other hacker/programming cultures/venues; white/black hat hackers, open source, engineers and other salary slaves etc. What happens with ex-competitive programmers? What do they do, where do they work and is it possible to find any patterns? Is participation in the competitive programming circuit seen as a career-enhancer?
  • Amateurism & professionalism. Competitive programming and the (future) programming career. What is the objective "utility" or "use" of learning to cooperate/compete under time pressure? Why do some nebulous "we" (somewhat) "want" people to be good at competitive programming? Or are these skills of no real use - it's just fun to those who are into it - and isn't that is reason enough? Not all great programmers like competitive programming; who likes/dislikes it and why? What does the act of reshaping programming into a competition between students and universities (and countries?) say about the (post-modern?) times we live in?
  • Coaching, leading, and mentoring teams. I have excellent possibilities to write something on this topic. I have to some extent already started (above).
  • Spectatorship, audience, and digital sports/competitive programming with a focus on the last three years of opening up the finals to "the world" through live video coverage and different efforts to reshape competitive programming into a spectator sport.
  • Rules and regulations of play/competitive programming.
  • Computation and sports/competitive programming.
  • Sport ethics and digital games/competitive programming
I know I could pretty easily write a 500-word abstract (this text is almost five times as long)! But could I deliver a (draft) paper by February? And can I deliver a paper of some merit and potential by February? Although I believe I could get access to some really exciting and original empirical material, what would be the purpose and what would be the angle (and goal) of a study of mine and of the resulting paper? Where would it be published? On a larger scale, if this paper was to be part of an imaginary research application, what would that application be about (I'm trying to link the large to the small; research program - study - empirical material so as to find the right motivation and the right research question to guide a study).

I have to think some more about this. Do you dear reader have any suggestions or comments?

PS. In preparing for (perhaps) writing a contribution to the workshop, I allowed a book to jump the queue and started reading Allen Guttman's "From ritual to record: The nature of modern sports" yesterday.

Inga kommentarer:

Skicka en kommentar