USACO: Directions For The Next Decade Rob Kolstad, Ph.D. – USACO Head Coach ABSTRACT The last decade of USACO and worldwide programming competitions saw huge growth in services and participation. While USACO internet contests (via email) commenced in 1996 with just a few countries participating, more recent widespread internet penetration has enabled online competitions around the world including the popular USACO contests that now garner a thousand or more participants from a total of more than 65 countries on a monthly basis. The USACO effort appears to have reached a steady state for its current thrust toward algorithmics contests, surprisingly with only four dozen USA participants at the highest (Gold) level and a total of fewer than 250 USA participants across all three competition levels. While the best students acquit themselves well at the world level (USA teams consistently place in the top five at the IOI, most often at #2 or #3 in the unofficial rankings), it is unclear that the overall goals of USACO are being met at proper levels since participation is so very low. This white paper examines the state of programming competitions in general, some of the issues that limit current participation, and suggests a host of new proposals for increasing USACO’s ability to accomplish its mission and expand its participation. USACO and Its Goals The USACO1 is a volunteer organization headed by Director Dr. Don Piele, Head Coach Dr. Rob Kolstad, and Educational Director Dr. Brian Dean. After successfully running the International Problem Solving Competition (for high school students) for many years, Don Piele formed the USACO in 1992 to select and train the USA team for the newly formed International Olympiad in Informatics (IOI), the ultimate international programming contest for pre-college students. The United Nations Educational, Scientific and Cultural Organization2 (UNESCO) created the IOI3 in 1989 to follow in the footsteps of the successful international olympiads in mathematics, chemistry, physics, and others. The extremely competitive IOI pits extraordinary programmers (and some average programmers) from around the world against each other in two five-hour competitions to demonstrate mastery of algorithmic programming. Traditionally, the USACO’s goals are to: • Provide pre-college students around the world with opportunities to sharpen their computer programming skills to enable them to compete successfully at the international level. • Enhance the quality of pre-college computer education by providing students and teachers with challenging problems, training materials, and competitions which emphasize algorithm development and problem-solving skills. 1http://www.usaco.org 2http://www.unesco.org . 3http://ioinformatics.org/index.shtml , http://olympiads.win. tue.nl/ioi/ , http://en.wikipedia.org/wiki/International_Olympiad_ in_Informatics . Version 0.9 Preprint; Limited Distribution • Recognize those students with outstanding skills in computer science and encourage them to pursue further opportunities in the profession. • Provide educational, motivational, and competitive materials in the form of programming competitions and web-based training to students in the United States and over 75 other countries via the Internet. USACO accomplishes these goals mostly successfully. The background goal for all these items is the increase of talented students entering computer science and allied fields (which covers a very large number of areas of study). This includes provision of a peer group for talented high school computer science estudents, and stimulating pre-college students to study computer science along with considering a career in that field. Generally, the USACO goes about accomplishing the goals above with its training web site, training camp, internet-based competitions, and international travel. The training camp serves as both reward and a final set of competitions to choose the USA representatives at the IOI, which is held in a different country every year. A trip to the IOI is the ultimate prize for a USACO competitor. Additionally, USACO often takes a team to the Central European Olympiad on Informatics (as a ‘‘warmup’’ and first international competition experience). While the USACO is indeed accomplishing its goals, the scale of those accomplishments makes a too small an impact across all the industries that need computer scientists and engineers. Participation remains at the ˜250 student level (out of a high school population estimated at 16,100,0004 – a penetration 1 USACO: Directions For The Next Decade level of only 0.00155%). USACO should probably strive for a penetration level closer to 100,000 students (0.62%). Current USACO Status As an organization, the USACO currently has three long-term contributors: • Don Piele, Ph.D., founder and currently director. Don has retired from the University of Wisconsin-Parkside and moving toward a golden life in Arizona. • Brian Dean, Ph.D., Educational director. Brian organizes the instructional and competitive aspects of training camp and additionally administers a grant for augmenting USACO instruction at the introductory level.5 4http://nces.ed.gov/fastfacts/display.asp?id=65 1 5 5 1 15 39 1 38 1 9 ARE ARG AUS AUT BGD BGR BIH BLR BOL BRA 25 205 3 16 3 16 1 1 1 8 CAN CHN COL CUB CZE DEU DNK DOM ECU EGY Kolstad • Rob Kolstad, Ph.D., head coach. Rob runs the competition and training websites, coordinates competitions, solicits funding, and organizes the staffing and non-educational aspects of training camp. Additionally, almost two dozen associate coaches contribute tasks and solutions for competitions, including directing one of the three levels of the six annual contests. The $35-50K annual budget (principally provided by donations from The USENIX Association, Booz Allen Hamilton, IBM, and ita Software) funds these ongoing activities: 5NSF CAREER award CCF-0845593, for which the major thrust of the educational component is the further extension of USACO to younger students through development of effective on-line materials. Contest Participants by Country 1 ESP 23 IDN 6 MEX 5 EST 19 IND 5 MKD 10 FRA 23 IRN 11 MNG 1 GBR 1 ISR 4 NED 46 GEO 18 KAZ 3 NZL 1 GHA 1 KHM 1 PAK 5 GRC 6 KOR 2 PER 3 HKG 7 LTU 10 POL 8 HRV 10 LVA 34 ROM 1 HUN 2 MDA 7 RUS 2 7 3 2 1 4 8 6 1 6 SCG SGP SVK SVN SWE SYR THA TKM TTO TUR 16 17 260 2 32 17 7 1 TWN UKR USA VEN VNM YUG ZAF ZWE Table 1: 1,060 contestants from 68 countries who successfully submitted at least one solution for the December, 2009 internet-based competition. Figure 1: Historical participation in USACO internet competitions. 2 Version 0.9 Preprint; Limited Distribution Kolstad USACO: Directions For The Next Decade • Six About Training USACO has been training its members (and the rest of the world) quite intensely for the IOI for several years. Those competitors who diligently solve problems can see and solve as many as 1,000 tasks (including many at other sites) before the IOI. They generally place very high in the results. In fact, they do such a good job that the difficulty of the IOI tasks is escalating as organizers try to differentiate the top finishers. Superior competitors from just five years ago would probably not do so well in the most recent IOI competitions; the task difficulty is growing that quickly. USACO thus faces a dilemma: should USACO continue to train the world and expose all its best pedagogical technologies to students from all different countries? Should USACO keep the best techniques secret just for US students? This is a very real issue because the amount of time it takes to become a top-25 international-level programmer now exceeds 1,000 hours of practicing. While this is commensurate with the cost of athletic sports excellence, it is exceedingly burdensome on ‘‘intellectual athletes’’ who have other time-consuming interests, as well (including activities that potentially yield more ‘‘rewards for the time invested’’ than USACO). Increasing the level of competition is liable to reduce both USA’s ability to compete at the international level and drive potential students away from a contest that is already very difficult. Note that these results are antithetical to USACO’s goals. • • • • • • popular monthly internet contests each annual season. These contests draw anywhere from 800-1,100 competitors from over 60 countries. See Table 1 and Figure 1 to get an idea of the growth and participation levels. Annual bonus competitions with guest directors (e.g., China’s or USA’s top competitors) Year-round internet-based training conducted in multiple natural languages. See Figure 2 for the level of student visits to the training site over time. An annual training camp and contest (the USA Invitational Computing Olympiad – USAICO) for 15-30 of the nation’s best competitors (with occasional international guests. It includes another half dozen contests (two of which are five hours long), these days with two divisions. Additionally, multiple teams of attendees write AI players for one or more game competitions. The Central European Olympiad on Informatics (CEOI) during mid-summer. The International Olympiad on Informatics (IOI) in late summer. The USACO generally strives to send the ‘‘best representatives of our country’’ in both technical and non-technical ways vs. simply ‘‘the best programmers.’’ A new division for training college students using extant ACM competitions from around the world. Entrants compete virtually against the actual contestants with scores revealed incrementally as the contest progresses. 2002 2003 2004 2005 2006 2007 2008 2009 2010 80,000 70,000 60,000 50,000 40,000 30,000 20,000 Training Logins/Month 10,000 Contest Logins 0 Figure 2: Historic levels of student logins. Version 0.9 Preprint; Limited Distribution 3 USACO: Directions For The Next Decade Kolstad Assessing USACO Participation Challenges The USACO faces a number of challenges to increasing its participation: • Available training time: Serious USACO competitors are maxed out on the time they wish to spend training. This negatively impacts USACO’s ability to recruit students (they don’t wish to invest so many hours) and is easily demonstrated simply by counting the active contestants, a number that rarely exceeds 250 students for the entire USA (across all three divisions). Fewer than 50 USA student qualify for, much less compete successfully at, the highest level (‘Gold’) division. • Insufficient critical mass upon which to build: In the recent January, 2010 contest, 45 USA student participated in the Gold division, and nine of them failed to earn more than 100 points out of 1,000 possible. To keep the presentation balanced, note that five of the best USA students placed in the top 25 internationally. Only China has more students participating in the USACO gold competition than the USA; these participation issues are not limited to America. • Training and competition paradigms which attract and reward loners rather than encouraging collaboration and socialization: Traditional algorithmics training techniques demand hundreds of hours focused on solo programming. Coupled with geographically dispersed online competitions, this training style increasingly seems to motivate and encourage students who are loners, quiet students, and focused on little other than programming. It is these students who earn berths at our training camp. Their conversations at training camp concern algorithms and mathematics ... and little else. Generally (with a few notable exceptions), they would not be viewed as well-balanced or particularly socially adept in their interactions with adults and as observed by adults at camp and on trips. • • • Evaluating Computing vs. Math Contests One of my internet messaging correspondents is a 16+ year old high school junior of high ability who attends a public school in silicon valley, California. He is often quite excited about math contests. I polled him and almost a dozen other students as to what it was that attracted folks to math contests (my correspondent participates in roughly 35 math contests annually – and he is not active at the national level). I discovered several significant differentiators between math contests and computing contests: • Math contests foster a dramatically larger community. This means a competitor has some- 4 • one with whom to share their interest(s) over lunch, someone local with whom to collaborate and compete, and generally is not ‘‘on their own’’ to train and compete (unlike computing competitions). Math competitions attract the larger community in several ways: they often offer team competitions; math teachers (who populate every school in numbers much greater than computer teachers) encourage competition, often citing the mantra that ‘‘mathematics is the foundation of everything;’’ every student in almost every USA school system is required to take a decade or more of math instruction in order to complete their high school diploma. The reduced number of computing contest competitors in a given community means that they are unlikely to congregate frequently (only a few high schools supply more than one competitor to USACO). Math competitions offer a different experience from computer competitions. Computer competitions (with the rare exception of ACSL) are hardly ever shorter than three hours and thus generally occur outside the classroom setting (perhaps via the internet at home or off-site on a weekend). Math competitions range from under one to three hours (until the national level is reached). The mathematics mentoring community (which includes high school teachers) dwarfs the computer programming mentoring community, which is almost non-existent. Computer contests dramatically exceed math contests in many sorts of difficulty. First of all, programming requires the formulation of an algorithm (a task some might argue is mathematical) and then, once the proper algorithm is deduced, a solution requires a working program (which some have called ‘mechanics’). Making a small error on either one of these orthogonal requirements can result in a task that earns no points at all. Secondly, the ongoing training efforts of USACO’s site, contests, and other country’s contests has elevated the level required to differentiate among the top competitors to that of graduate students at leading research universities. Finally, programming contests for high school students tend to have but a handful of tasks; math contests have 7-40 tasks; a talented student will have total confidence in getting at least 2/3 of them correct. Programming contestants on challenging contests often have scores in the 30-50% range, which sooner or later must be frustrating to students accustomed to perfection. My IM correspondents argue about whether algorithmic programming contests tend to Version 0.9 Preprint; Limited Distribution Kolstad USACO: Directions For The Next Decade focus on a small number of algorithm types, of which only the ‘ad hoc’ and ‘combination’ varieties are not relatively standardized. This means that the variety of programming problems is smaller when compared to the relatively larger of math contest tasks. Simply knowing the maximum value of ‘N’ in a programming task often reduces the number of solution types (perhaps to a small handful), thus further shrinking the variety. Some of my correspondents (including international-level programmers and internationallevel math competitors) believe that this variance in variety is strongly evident; some argue it is a weaker proposition. The combination of these factors appears to combine to yield a feeling that ‘‘Programming contests are not as much fun as other activities’’ (like FIRST or math contests) unless you are super-talented and reaping benefits like trips. Furthermore, the properties listed above tend to attract (and create) loners instead of more socialized, team-oriented competitors who then gravitate elsewhere since other attractive activities are highly available. Thus, I argue that the current emphasis on algorithmic programming contests as a way to foster interest in computing and computing careers is not in the best interests of either the USACO, its fellow contest organizers, or its contestants. This emphasis surely should not form the only basis for accomplish USACO’s goals. Algorithmics is not the only programming challenge and surely is not the most appealing one to our audience; it’s also expensive to master. History of Programming Contests How did (algorithmic) programming contests get to their current state? Many modern programming competitions find their roots in the ACM college student competitions of the 1970s that featured a single keypunch shared by a team of three students who submitted batch jobs whose results were subsequently returned, printed on fan-fold printer paper. Modern ACM competitions generally have 9-12 tasks (vs. USACO/IOI at 3-4) in a five hour timeframe. ACM contests return some results in real-time, a twoedged sword that raises the excitement level but puts tremendous pressure on organizers to supply correct test data and judges’ solutions (a quality level which too many ACM contests fail to reach, thus betraying and frustrating the contestants, some of whom decline to participate in future ACM competitions). In ACM contests, the amount of data returned in the event of a ‘wrong answer’ is minuscule (e.g., ‘we have some test data that makes your task fail’). While any contest can put forth any rules it likes, this particular paradigm does not reflect real-world programming constraints and promotes perhaps excessive Version 0.9 Preprint; Limited Distribution stomach acid in trying to find the programming error. USACO/IOI contests return almost no data in real time (just a verification that your program can solve a single trivial case). This means that tiny errors can result in little or no credit for a task. Neither of these paradigms yields as much fun as they might (ACM contests give too little data to find a problem; USACO/IOI contests don’t give results at all until after the contest). Few sports decouple performance and reporting of scores this much (math contests and other written competitions being the exception). Appendix A documents a number of modern programming and other computer-oriented contests. Such contests are now widely available throughout the world for pre-college competitors and others. Recruiting New Programmers Recruiting new interested constituents is the lifeblood of our organization. It’s not possible to foster long-term interest without starting at short-term interest. Dutch IOI coach and database expert Eljakim Schrijvers has championed the Lithuanian ‘‘Beaver6’’ competition throughout central Europe. His examination delivery system annually administers the multiple-choice aptitude test to over 80,000 students in Germany (and many students in other countries as well). A country’s best finishers take another exam where small prizes are awarded to the highest scorers. Of course, the big benefit is the identification of highaptitude students to steer toward a training and competition program. USACO Coach and Clemson professor Brian Dean has won a grant from the National Science Foundation that includes, as one component, the training of computing newcomers (he has his own paper on this). Holland’s superstar Jelle van den Hooff has his own ideas on the creation of tutorials; that effort is ongoing in the first part of 2010. It will also encompass the majority of USACO’s effort toward teacher training and programs for educators. Modern trends in novice training include a move away from Java to: • MIT’s Scratch language – the much modernized version of Logo, at some levels: A dragand-drop procedural language that processes interrupts just like a real graphics system. Easy to make animations and games; kids pick it up instantly and almost automatically. • Python, a relatively new scripting language that is good for teaching both object- and procedural-oriented programming; it includes some graphics. • GameMaker7 enables students to create games quickly and easily. This is used in some introductory summer programs. 6http://www.bebras.org/en/welcome 7http://www.yoyogames.com/gamemaker/ 5 USACO: Directions For The Next Decade • CS Unplugged8 includes sets of classroom exer- cises (sometimes for very large groups) that teachers really enjoy for computer-exposure style drills. One of the real problems for early computer training is the lack of teachers with skills and interest in teaching about computer programming and technology. The set of good materials for brick-and-mortar classrooms appears to be too small. I am a big fan of coming up with a new set of ways to teach computer science and its allied concepts that avoid the quagmire of the AP program with its goal of giving college credit for a course that no two universities can agree on. Identifying teacher needs (and teachers!) is a paramount challenge. I am making no proposals that advocate competitive contests for novice programmers. That paradigm is anathema outside a fun Saturday morning team competition where most entries get a perfect score. A better paradigm seems to be stepped completion and achievement levels that offer encouragement and foster growth more like ‘‘merit badges’’ than rare competitive accolades that only a small fraction of students will garner. Merit Badges Not all rewards come from competitions. Working through a set of requirements to achieve a standard yields a reward in the form of a certificate, patch, book, web-recognition, etc. that many students find rewarding. They work at their own pace and succeed or fail as they wish. Material that grows sequentially more difficult can lead to great self-generated rewards as the challenges are conquered. Participation Paradigms While contests are not necessarily the be-all and end-all of promoting computers and their associated technology, they are one strong methodology with a proven track record. Certain kinds of contests (e.g., projects and associated authored paper competitions) do mimic many of the important qualities of competing in the ‘‘real world.’’ This section discusses new sorts of contests (and other paradigms) that sport novelty and fun that differ in small or large ways from the current algorithmic contest format. Proposal: Customizable Contests The current algorithm programming system (and presumably future systems for other styles of competitions) should have a feature for creating customizable contests for multiple competitors and for training exercises. For multiple contestants, a custom event might focus on an intraschool competition, dual meet (e.g., two or three schools compete against other either onsite or in a distributed manner – and in lockstep time – 8http://www.csunplugged.com 6 Kolstad or not), a regional competition (e.g., Cleveland County Regional Competition), or something even bigger. For non-team events, USACO should consider implementing one-on-one head-to-head ‘‘challenges’’ or ‘‘mini-contests’’ (probably not on-site and either in lockstep or close to it). These could easily lead to a challenge ladder as in tennis and other sports. USACO should also implement customizable single-person practice contests with tasks chosen from an array of yet-unseen tasks from chosen categories (perhaps with difficulties and/or ‘par’ times). These contests offer the flavor of competition (most notably time limits and interactive paradigms) without the performance pressure of competing against (and potentially losing to) other real humans. Proposal: Increased Team Competitions Perhaps the single most-requested feature for USACO contests was the addition of teams (an option which was implemented ca. 2008). When queried, students cited several reasons they like team contests: • Collaboration (camaraderie) • Ability to blend into a team (i.e., not stick out with individual results) • Reduction in the impact of one person having a ‘bad day’ • Socialization, school spirit • Greater participation • Ability to bring less-experienced students into serious competitions Thus, it’s easy to assert: successful fun contests need to support both individual and team competitors. Team competitions vary in their levels of collaboration. Sometimes, a team is simply the sum of a group of individual scores (perhaps the top four, perhaps a designated team, etc.). Other times, a team is a group actively collaborating on solving problems (and allied programming issues). USACO should pursue both of these as appropriate. Programming Bee This new style of online or on-site competition format includes a set of contestants on the internet and a clever server. The contest proceeds lockstep through a series of ‘questions’ and ‘tasks’ announced in synchrony from a high-speed, well-connected site. Tasks (e.g., what is the value of 2100? Given this set of song times, what’s the most we can fit on a 66:00 minute CD?) might have a time limit (perhaps two minutes for 2100) or might have an advancement limit ‘‘the first 100 solvers move to next round.’’ Problems progress in difficulty and end up leaving a single champion, the last person standing. This competition has the advantages of • Novelty – it feels like a spelling bee and can provide great entertainment for observers. • Fairness – everyone has to solve every problem (unlike a spelling bee where students each spell a different word) Version 0.9 Preprint; Limited Distribution Kolstad • Excitement – shorter time limits and display of those progressing make this a really high-pressure competition if one wishes, especially with teams (particularly if three team members share a single keyboard/screen) Programming Bowl This is, as it sounds, a College bowl/Science bowl style contest for programming, implemented for teams or individuals. Conducted on-site, it includes verbal questions (‘‘What symbols are the block delimiters in the C programming language’’) and programming or computer/net usage questions that might require a computer. Unlike most of the other competition styles, this one doesn’t scale past a dozen or so participants. It has the advantage, though, of being particularly adaptable to a stage setting with a large audience. Monthly Projects Jacob Steinhardt proposes another interesting idea for focused students. The organizers present or reference a paper or set of papers (e.g., ‘‘Current Directions in Machine Vision’’) and posit a project or challenge that (teams of) students are to attack. After some appropriate interval (probably a month or two), students submit results (e.g., programs, presentations, or papers) of their work for evaluation and potentially awarding of prizes. This sort of idea also works well in the context of conferences for pre-college students. AI Games In AI game competitions, teams of 1-10 players write cooperative (e.g., MIT’s sockey9) or competitive (e.g., Tron light-cycles10) programs that play with or against each other in some virtual arena, usually one that is presentable as a nice real-time graphical display. AI game competitions can be utilized both shorter (2-3 hours-to-build) and more intense (3-20 not necessarily contiguous hours) formats. USACO should foster or collaborate with competitions like Kim Schrijvers’ CodeCup (perhaps during the December holidays). For on-site games, both IBM’s Tim deBoer and I have frameworks for building new games. Students generally enjoy these sorts of competitions and do just fabulous work once they commit to winning a game. Robotics Robots and robot projects are extremely attractive to students. Some believe robotics (as implemented by battlebots and subsequently by Dean Kamen’s FIRST organization) is driving the incredible surge of students in the mechanical engineering sector. While the 9http://www.ai.mit.edu/lab/olympics/99/events/sockey/docs/ how-to.html 10In addition to the USACO implementation, U. Waterloo is hosting a similar competition in early 2010 (http://csclub.uwaterloo.ca/contest/). Version 0.9 Preprint; Limited Distribution USACO: Directions For The Next Decade population of CS students is just starting to increase again after the incredible decline following the dot com bust,11 mechanical engineering schools are full. I interviewed talented high school academic Jacob Hurwitz (Intel Talent Search, programming contest, Science Fair, and USACO winner) about his participation in the FIRST program. Among the distinguishing characteristics that made robots fun, he noted: • Robot contests create a tangible product that you can see and touch; robots do things • Robot contests enable contestants to make cool results without years of training • Robot contests feature a project that can be finished in, often, six weeks • Robot contests almost universally feature a team orientation with relatively large teams • Robot contests are often mentored by skilled engineers who bring new ideas and viewpoints to the traditionally more staid academic setting • Robot competitions can be made to be extremely exiting (including real-time feedback, lots of action, and interaction among dozens of human competitors) • Robot competitions are extremely well-funded with travel (a typical single high school FIRST team will spend $50,000 on 20 students; affluent teams spend three times that much) • Robot competitions promote the idea that it is easy to grow skill • Robot construction uses modular hardware (and software) that requires problem-solving at very different level from algorithmics • Robot competitions often offer excellent prizes/ rewards (e.g., big scholarships) It’s easy to see that robot competitions address many of the shortcomings of traditional USACO contests. Robot competitions include not only FIRST but also the Oklahoma-based Botball. I met with Botball founder board member David Miller12 in late December, 2009 to see if USACO’s and Botball’s interests coincided. Not surprisingly, software is the generic weak point of almost all robot competitions. Despite an absolutely gorgeous embedded system box, the Botball folks suffer some of the same challenges as USACO. We have agreed to talk in the future to find areas where we can cooperate. Note that virtual robots can provide a lot of the fun (without tangible mechanical pieces) as they simulate or model manipulations in a virtual world. The Netherlands’ Kim Schrijvers knows of virtual competitions where winners’ programs are then run on the real versions of very sophisticated robots that control exotic devices. 11http://www.cra.org/govaffairs/blog/2009/03/computerscience-majors-increase-at-most-significant-rate-since-dotcom-boom/ 12http://faculty-staff.ou.edu/M/David.P.Miller-1/ 7 USACO: Directions For The Next Decade ‘‘Computer Clubs’’ Much like the Mu Alpha Theta folks provide a national-level umbrella organization for pre-college math clubs, USACO (or an allied organization) should perform the same purpose for a kind of computer club, information technology club, or similar association. I propose a model that exploits the availability of computers, data projectors, high speed bandwidth, and preciious technology students that most high schools possess while acknowledging that teachers often have neither the available time or advanced knowledge to create and present material applicable to an interested group of technology enthusiasts. I envision a club that meets at least every other week (and perhaps weekly). One set of meetings (perhaps every other one) typically runs like this: • Opening statements along with scheduling reminders (e.g., for contests, trips, etc.) • A 5-10 minute supplied video presentation from academia or industry. This presentation might show how Seagate manufactures multiterabyte disks that are never touched by human hands from the inception of the manufacturing process until the disk is installed in a computer system. Perhaps the video highlights MIT’s new research in digital mapping technologies or CalTech’s latest results in the exploration of using animal neurons to create better artificial intelligence. This part of the presentation has two purposes: Show that the world of computer technology is broad, deep, and utterly fascinating. Pique students’ interests in a wide spectrum of different sorts of computer- or engineering-oriented careers. The beautiful side-effect is the promotion of the companies and academic institutions that provide the videos. They can penetrate to precisely the demographic of potential employees/customers they need over the next few years. • After the short technical news, an informative, interesting ‘‘Powerpoint Presentation’’ is given by an interested teacher, mentor, or student. The presentation might cover introductions to databases, MIT’s Scratch language, system administration, a programming language (like LISP, which would be unusual for the high school set), computer graphics, artificial intelligence, networking, compilers, modern commercial computer game creation, embedded systems, scripting languages, etc. The presentation is always followed by a hands-on experience to emphasize the concepts presented. Clubs always need a year-end goal, so members of this club would attend a conference (in either western, central, or eastern USA). The conference would include inspirational speakers, technical speakers, fun competitions, and camaraderie. 8 Kolstad On alternate weeks, club members use online tutorials to learn programming languages, new technology paradigms, or to construct software/hardware projects. Contest Task Paradigms The more popular contests these days offer either algorithmic programming competitions or project competitions. We need a host of new styles/topics for programming competitions. A year-long casual survey of progressional programmers reveals that a typical professional programmer will, over the course of an entire year, implement no more than a single instance of ‘‘algorithmic’’ code similar to the sort that is the subject of algorithmic programming competitions. I assert that we can find interesting competitions and inspirational contests by examining other areas of professional programming. Changing the layout and/or style of a competition can yield a new contest with a different feel, even if most elements are similar to the current algorithmic competition model (i.e., IOI). Consider: • Function-only submissions perhaps not too different from Topcoder. By submitting a solution for only the heart of of the task, both the programming and the timing for pesky things like I/O are removed. This can enable extremely accurate timing, huge numbers of test iterations, and a slightly different feel for the contestants. Of course, this idea requires a framework for each different supported language. • Contests with many more than three tasks. More like ACM contests but perhaps with a set of tasks growing incrementally in difficulty. This might be most appropriate at lower levels of competition. • ‘‘No Limits’’ tasks. These problems have storage allocation specifications but no guarantees about the maximum size of ‘N’ as far as the algorithm goes. An O(N4) task might limit N to 4,000,000, even though no dataset that big is ever solvable. This challenges students to figure out algorithms from task statements rather than from the specified limits. • Real-time scoreboard when appropriate. Just as ACM contests show real-time ongoing scores, our contests should do this too when contestants are competing simultaneously. (This functionality is in place for USACO-conducted ACM competitions.) • Virtual scoreboard (including contests used as training exercises by individuals). When contestants do not compete cotemporaneously (even when they are participating in a years-old contest), show a virtual scoreboard whose contents are revealed in virtual lockstep with the contestants’ clocks. (This functionality is in place for USACO-conducted ACM competitions; watching folks compete against talented Version 0.9 Preprint; Limited Distribution Kolstad USACO: Directions For The Next Decade Russians in a contest from 2007 is quite amusing.) • We must increase the prizes and incentives offered to contest winners, especially when a competition extends, e.g., throughout a school year. • USACO should support personal ‘‘results’’ pages that provide scores and results for a student, enable the student to showcase some of their own work (via biographies, pictures, and the like), and generically provide a bit of social networking capabilities. • USACO should create a standard recommendation program for colleges and universities so that outstanding competitors can receive some sort of uniform recommendation based on their performance in elite USACO competitions. I do not propose that USACO set up for ‘project competitions,’ which are well done by many other organizations. New Task Topics The refined and matured legacy of ACM contests from the days of keypunches and line printers has mushroomed into a large number of algorithmic-style contests that are, in my opinion, utterly inappropriate for, e.g., most computing professionals. We should explore a large set of task topics – not all in the vein of algorithmics – in order to broaden our offerings and demonstrate a wider spectrum of interesting programming and computer-oriented challenges. Here’s a list of all sorts of task types: • The original: algorithms. The most popular contest-style for almost all 1-5 hour programming contests. This includes contests that really are about introductory ad hoc tasks. • Simulations & modeling. The math folks (personified by MAA director Steve Dunbar of University of Nebraska-Lincoln) are pursuing this notion. Their prototype task: ‘‘Here’s a model of a house; install N fire alarms in it so that you maximize the likelihood a fire is detected.’’ One can easily imagine modeling contests for parking lots, baseball field mowing, embroidery layout patterns, forest maintenance, and a huge number of other real-world systems. These sorts of tasks have a relatively different flavor and would probably attract a new set of aficionados. • System programming, text, and file manipulations. Our algorithmic competitors almost uniformly have no knowledge of efficiency and effectiveness of the algorithms, techniques, and heuristics that buttress their user-level programs. A contest for efficient implementations of a ‘‘word count’’ program, a ‘‘print a file backwards program,’’ file manipulation tasks, and these sorts of things would bring a completely Version 0.9 Preprint; Limited Distribution • • • • • • new flavor to our competitions. Likewise, the idea of writing parsers, lexers, and compilers falls into this category. Databases/Statistics/data mining. The storage, retrieval, manipulation, and analysis of data is a goldmine for tasks that probably last a few hours and are scored subjectively. Consider: Find the region where expanded advertising will have its greatest impact in the next fiscal year. Find the telephone traffic pattern that is most likely to yield intelligence about terrorist attacks. Supercomputing. Parallelism in all its forms is a hot topic in computer science. The supercomputer conferences are beginning to experiment with contests for using large supercomputers to solve applicable tasks. Supercomputers have a special allure – just the promise of access could attract new talent. Imagine: ‘‘Please create a video of these two galaxies colliding.’’ Scripting (including Python, PHP [mostly for the web], Perl, and various shell scripting languages). Potentially in conjunction with other areas, this area is very rich in application; I personally program 80-90% of my applications in Perl instead of C/C++/Java. Example: ‘‘Files 1-N contain entrants in a science fair, teacher information, school information, judge information, and project scores. Determine the teachers with the best performance and report the judges whose scores most nearly matched final results. You have 45 minutes.’’ Artificial intelligence. AI contests tend to be most attractive when designing collaborative/cooperative/competitive AI agents for (virtual) games. The previous discussion mentioned some games already used and referred to Kim Schrijvers’ CodeCup competition. Speculative: Tasks in a special programming language. While this seemed a poor idea in the context of high speed algorithmic tasks, it seems a great idea in the context of interpreted statements for a special purpose task or genre. MIT’s Scratch is one such language – it’s programmed graphically with drag-and-drop. One of the fun parts here is that the language need not be precisely procedural; it might be LISPlike or perhaps presented simply as object code (to be created or interpreted), or might utilize some unusual or unorthodox representation or programming technique (think Snobol). Embedded applications and languages. Robots (see below) provide one of the most popular embedded applications, but almost any unique peripheral can afford some exciting programming (perhaps in assembly language, C, or a BASIC version). Plenty of robot contests exist; 9 USACO: Directions For The Next Decade see below for comments on cooperating with the good folks at Botball.13 Conclusion USACO must expand its offerings if it wishes to achieve its goals of promotion of computing careers in the pre-college world. Until someone offers the sorts of expanded topics listed above, students will have no idea of the breadth of careers available in the computer technology arena (and thus will be diverted to other popular academic majors). The sorts of competitions discussed in this paper can be built into various contest-administration systems and, at the end of a season, provide a truly meaningful competition (perhaps the ‘‘Programming Pentathlon’’) where teams (individuals, too?) compete in many areas to become real programming champions across a variety of subjects, not just in the narrow and increasingly deep world of algorithmics. USACO must seek funding and contributors to bring these plans to fruition. 13http://www.botball.org 10 Kolstad Appendix A: Overview of Some Current Computer-Oriented Contests USACO is not the only organization promoting computer competitions. The number (if not the styles) of contests continues to grow as online graders (and, more rarely, training sites) proliferate owing to spreading skills, maturing tools, and availability of technology for system protective ‘jails’ that keep submitted code from harming a host grading server (these jails are now available on Linux and even, apparently, Windows). The most popular contest sites include: • USACO – intermediate through advanced training and tasks • Topcoder – lots of forums, divisions, and cash prizes • Google Code Jam – cash prizes • Codechef – India, cash prizes • COCI – Croatia • ACSL – Less advanced training (includes lectures for teacher assistance) A list of popular training sites is presented later. These are complemented by some slightly smaller competitions: • Regional contests (OI’s in Central Europe, Balkan area, Baltic area, Pacific) • National contests in almost every nation participating in the IOI • The IOI itself • Smaller regional contests like the Berkeley contest, HP sponsored contests in Texas, UMd contest, and dozens more As further evidence of contest proliferation, 2008-2009 USACO champion and IOI gold medalist Neal Wu finds enough online opportunities that he competes in 50-60 contests annually, generally devoting one to three hours for almost every competition (just a few are longer). The combination of the higher number and increased profile of these contests (some with cash prizes), the widespread availability of training, and the ongoing penetration of ever-lower cost computing facilities has enabled a small number of programming prodigies to increase their skills to unprecedented levels. Additionally, some geographical/political regions are said to be investing heavily in academic competitions, even to the extent of hiring full-time coaches for high school competitions. The University of Central Florida has instituted a ‘fellowship’ program for its undergraduates who wish to excel in the ACM ICPC college contests. Such a program is indistinguishable from paying students to train for competitions. CMU offers a ‘contest programming course.’14 The concomitant blossoming of programming proficiency has motivated elite competitions like the IOI to increase the overall difficulty of its six primary 14http://www.andrew.cmu.edu/course/15-295/ Version 0.9 Preprint; Limited Distribution Kolstad USACO: Directions For The Next Decade tasks significantly in order to differentiate among the top competitors. The difficulty has increased enough that easier, lower-level tasks have been added to the competition in order to avoid the growing number of student achieving a score of 0. While acknowledging that correlation is not causation, USACO conducted a statistical analysis that compared the number of training problems solved by USAICO attendees with overall scores on USAICO tasks. With a single outlying datapoint, the result was that the overall performance was almost perfectly correlated with the number of training tasks solved. While this would seem to make algorithmic programming competitions appear to be attaining a level of strict meritocracy (which is often regarded as a positive attribute), the resulting almost insurmountable challenge is that becoming a high-level competitor at the high school level now requires somewhere in the range of 1,000 to 1,500 hours of practice. While this time commitment is similar to that of elite athletes like swimmers and gymnasts, it is a tremendous burden to place on students who are almost uniformly interested in allied fields like mathematics and physics which also require similar time commitments. I have personal experience with teachers who have advised their students against participating in USACO because the time requirement is simply too high. The world of algorithmic programming competitions evolves slowly from the viewpoint of competitors: programming language C++ was added many years ago; Java is now also used in some competitions. The administration and development systems (used behind the scenes) are maturing more quickly, but neither uniformly nor in public. Some formalization of these elite contests has emerged, as well: The IOI publishes an annual journal of refereed papers on aspects of pre-college competition. New Contest Styles As the technology grows and evolves, enthusiasts have created a host of new sorts of competitions in a variety of allied fields. X Prizes These are serious high-powered, amazingly wellfunded competitions. From the website:15 An X PRIZE is a $10 million+ award given to the first team to achieve a specific goal, set by the X PRIZE Foundation, which has the potential to benefit humanity. Rather than awarding money to honor past achievements or directly funding research, an X PRIZE incites innovation by tapping into our competitive and entrepreneurial spirits. The Ansari X prize was won by Virgin Galactic who won the contest for a non-government created 15http://www.xprize.org Version 0.9 Preprint; Limited Distribution spaceship. Google has upped the ante, also from the website: The Google Lunar X PRIZE is a $30 million competition for the first privately funded team to send a robot to the moon, travel 500 meters and transmit video, images and data back to the Earth. The Progressive Automotive X prize offers $10 million to the team that makes a reasonable 100 MPG vehicle. The Archon X Prize offers $7-10 million to the team that can build a device to sequence 100 human genomes in 10 days at a cost of less than $10K per genome. Other prizes are in development. The Energy & Environment Prize Suite is to have a combined prize value of as much as $100 million. DARPA Grand Challenge Recent editions of the DARPA Grand Challenge16 have encouraged college-level and professional competitors to create autonomous cars that can negotiate urban driving courses at reasonable speeds without accidents. First prize: $2,000,000. Second prize: $1,000,000; third prize: $500,000. Robot Competitions Robot competitions are, these days, immensely popular – and well they should be. Flash, tech, great rewards, and just the right amount of hand-holding combine to make an unbeatable contest combination. The robots.net17 site lists 119 robot competitions; it’s no wonder university mechanical engineering schools are bursting at the seams. Mr. Wikipedia knows a large set of competitions as well.18 Three popular competitions include: • FIRST19 – an extensive competition where teams of high school students construct, with a mentor ’s guidance, a robot that will (usually) collaborate with another robot to compete in an arena against two other robots to see which team can complete a task like moving beach balls around. FIRST has a short autonomous section of their competition, but is mostly for remote-controlled robots. Extremely well-funded (a team of 15-20 might well spend $50,000 annually), the competitions are also lavishly produced (as is the website), complete with cheerleaders. USACO competitor Jacob Hurwitz says, ‘‘I idolize (competition founder) Dean Kamen the way other guys idolize sports figures.’’ FIRST says they have $11,000,000 in scholarships this year. They have super participation with programs for students from elementary through high school: The total FIRST Community – with over 196,000 students, 86,000 volunteers, and 16http://www.darpa.mil/grandchallenge/ 17http://robots.net/rcfaq.html 18http://en.wikipedia.org/wiki/Robot_competition 19http://www.usfirst.org 11 USACO: Directions For The Next Decade 3,500 sponsors this year alone – is estimated at one million strong and growing. • Botball20 – Botball has similar goals to FIRST but is much smaller and hosts contests with autonomous robots (much more technology) and much lower budgets. • Robocup21 – Robocup focuses mostly on the university set (though they have other contests for other age groups) for their theme which is soccer-playing robots. They have used modified Aibo robot dogs as their players, TV cameras, and lots of software to play their robot games. They are also fostering some other scenarios like building-rescue for robots. AI Game-Playing Contests Some competitions ask students to write one or more programs that will play in a collaborative or competitive setting. Few of these programs require players to collaborate with strangers, generally nonteammates compete. Probably the best-known AI game is computer chess.22 These days, programming competitive computer chess programs is mostly beyond scope of amateurs. Kim Schrijvers and a Dutch team run the Codecup competition each year. The Codecup developers present a new game each season; developers create programs that play in an arena and periodically in tournaments to determine the best program. IBM’s Tim DeBoer’s CodeRuler, CodeRally, CodeInvaders were developed for the ACM ICPC competition. A number of competitors (e.g., four in Coderuler) vie to capture territory, win a race, or accrue points in colorful arenas projected on large screens for the enjoyment of the tournament entrants. Perhaps one of the most interesting examples is MIT’s sockey23 (combination of soccer and hockey) game, where each of two competitors writes six collaborating processes to control six players on the sockey field. Games are displayed graphically, with the players moving all over the field, ‘kicking’ the ball in an effort to make a goal. Configurable game boards (e.g., faster or slower grass, different field dimensions) along with the requirement for intra-team cooperation (since many configurations do not have the ability to ‘kick’ the ball all the way from one end of the field to the other) make for fascinating game play. Project Competitions Some competitions focus on entrants’ creations (usually constructed over weeks or months, but occasionally in some limited time period like a weekend) of a product or system. 20http://www.botball.org 21http://www.robocup.org/ 22http://en.wikipedia.org/wiki/Computer_chess 22http://www.ibm.com/developerworks/java/newto/ 23http://www.ai.mit.edu/lab/olympics/99/events/sockey/docs/ how-to.html 12 Kolstad For high school students, the Intel International Science and Engineering Fair is one of the most famous and lucrative such competitions, though by no means does it focus on computing. Huge prizes and trips motivate competitors in a truly international environment. Large corporations like Microsoft,24 Google, and Topcoder run project competitions for a variety of reasons. ACM’s special interest group SIGMOD conducts an annual design competition, for 2010 they are requesting a design25 for a distributed database query engine Design competitions are very common and sponsored for a variety of reasons, including product promotion. Programming Contests The last decade has seen an explosion of the number of programming competitions and record growth in established competitions at the high school, university, and professional level. • The IOI sees 300+ participants from 75 countries. Almost all those countries have feeder contests to determine who represents the country at the IOI. • The university-level ACM ICPC garners thousands of participants from around the world in local and regional contests leading up to a world championships. • The good folks at dmoz.org26 keep track of many dozens of programming competitions. It is unknown why USACO does not appear on this list. • The American Computer Science League27 is a long-running program that features teacher preparatory materials and (relative to most) less-challenging team-oriented competition. Contests with both written answers and programming, multiple divisions, a registration fee, and an annual on-site All Star Competition are ACSL’s hallmarks. • The ICFP functional programming contest28 focuses, of course, on functional programming. In 2009, this involved calculating orbits and tasks that determined how to intercept a satellite. • The Matlab programming language puzzle solving contest29 for 2009 involved implementing the solution to a puzzle a bit related to drawing bit related to drawing maps. • The IEEE extreme contest for university students30 is a 24 hour marathon with a 25 page 24http://visualbasic.about.com/b/2009/07/15/new-microsoft -programming-contest.htm, 25http://db.csail.mit.edu/sigmod10contest/ 26http://www.dmoz.org/Computers/Programming/Contests 27http://www.acsl.org 28http://icfpcontest.org/ 29http://www.mathworks.com/contest/flooding/home. html 30http://www.ieee.org/web/membership/students/xtreme/ index.html Version 0.9 Preprint; Limited Distribution Kolstad instruction booklet containing ten problems, including both algorithmic tasks and more pragmatic tasks like a language interpreter. • The Java 4K Programming Contest31 asks contestants to write a game whose object code is no longer than 4,096 bytes. • The Mario AI competition32 asks contestants to write an AI agent to play a Mario consolebased game with up to 24 steering updates per simulated second. • The UMD high school competition33 is a longrunning algorithmic programming contest that invites teams from the Washington, DC metropolitan area to compete. • The TeraGrid supercomputer student programming contest34 (mostly for university students) asks teams of five students to ‘‘tackle science and parallel computation problems.’’ • The New Jersey Institute of Technology holds an annual regional contest for high school students.35 Teams with three members; $50 registration fee; puzzle (e.g., Sudoku), simulation, and pragmatic tasks. • The University of Alabama/Birmingham is another example of a regional high school competition.36 Prizes include a Dell Laptop. The contest features pragmatic and numerical tasks. • The Dyalog company promotes its products with a programming competition37 that appears to use APL. • The MIT Battlecode AI tournament38 features a sophisticated real-time strategy game where software robots collaborate to take over territory. This year offers $40,000 in prizes to students from perhaps 100 different universities. • The University of Illinois at Urbana Champaign has conducted a long-running ‘‘strategy game39 of war and money’’ to accompany their annual student computing conference. • Florida International University conducts an annual high school ICPC-like team competition40 with two divisions, 25 teams, and a $25 registration fee. Tasks are relatively simple and occasionally touch on algorithmics. Wikipedia41 lists a host of sites that offer online training and contest judges: 31http://javaunlimited.net/contests/java4k.php; http://www.java4k.com/index.php?action=home 32http://julian.togelius.com/mariocompetition2009/ 33http://www.cs.umd.edu/Outreach/hsContest.shtml 34http://www.teragrid.org/tg09/index.php?option=com_ content&task=view&id=80 35http://cs.njit.edu/news/programmingcontest/ 36http://www.cis.uab.edu/programs/hspc/ 37http://www.dyalog.com/contest_2010/index.html 38http://battlecode.mit.edu/2010/ 39http://www.acm.uiuc.edu/conference/2009/mechmania. html 40http://users.cis.fiu.edu/˜acm/HScomp2009/index.php 41http://en.wikipedia.org/wiki/Online_judge Version 0.9 Preprint; Limited Distribution USACO: Directions For The Next Decade • ACSL • COCI • Codechef – India, cash prizes • Fuzhou University Online Judge, over 800 problems. Popular among the Chinese. http://acm.fzu.edu.cn/ • Google code jam, cash prizes • Harbin Institute of Technology Online Judge, over 1800 problems. Popular among Chinese people. http://acm.hit.edu.cn/ • Lviv National University Online Judge, over 100 hard ACM-type problems. Only Ukrainian language. http://acm.lviv.ua/ • Moscow Problem Archive with Online Judge, supports C, C++, Java, Free Pascal, Perl, Python, Haskell, Kylix, Lua, OCaml, Ruby, and Scheme. http://acm.mipt.ru/judge/login.pl?lang=en • Peking University Online Judge, over 2800 problems including more than 200 original problems, supports C/C++/Pascal/Java/Fortran. http://acm.pku.edu.cn/JudgeOnline/ • Saratov State University Problem Archive with Online Judge, over 300 problems http://acm. sgu.ru/ • Sphere Online Judge, over 5000 problems formulated in English, Polish, Vietnamese, Portuguese; supports 39 different programming languages, hosting own contests supported. http://www.spoj.pl/ • Tianjin University Online Judge, over 2000 problems, supports C/C++/Pascal/Java, virtual contests supported. http://acm.tju.edu.cn/ • Timus Online Judge, The Timus Online Judge is the largest Russian archive of problems from different programming contests.Accepts solutions in C/C++, Java, Pascal and C#. http:// acm.timus.ru/ • Topcoder, cash prizes • USACO|USA Computing Olympiad Training Site, hundreds of problems with complementary tutorials for incrementally expanding competitive programming skills; supports C, C++, Pascal and Java programming languages; targeted to pre-college students. Full ACM contest support, as well. http://train.usaco.org • Valladolid Problem Archive with Online Judge, about 2500 problems, supports C, C++, Pascal and Java programming languages http://uva. onlinejudge.org • z-trening contests & training, >500 tasks at end of 2009 • Zhejiang University Online Judge, over 2000 problems, supports C, C++, Pascal and Java. http://acm.zju.edu.cn/ See the Wikipedia entry42 for other comments. 42http://en.wikipedia.org/wiki/Online_judge 13