200 likes | 293 Vues
Learn how to organize and host a student programming contest, with insights on problem sets, languages, judging, feedback, hardware, software, regulations, and infrastructure. Ideal for educators and competition moderators.
E N D
Organizing & Hosting a Student Programming Contest Brian Hare, UMKC, Moderator James Cain, Southwest Baptist University John Cigas, Park University
Annual Contests • ACM • CCSC • IEEEXtreme • Many others, often sponsored by professional society or user groups • Also various online programming challenges; some time-limited, some ongoing 2011 CCSC:CP Panel - April 8 2011
Main Features • Team programming • Typically 3 contestants per team • 1 workstation per team • Several problems of varying difficulty • Scoring based on number of problems solved • Ties broken based on time to complete • Identifying problems that can be solved quickly is part of the challenge! 2011 CCSC:CP Panel - April 8 2011
Problem set • For each problem: • Description, sample input/output • For judges: Solution, Input file, Output file • Program can run w/o intervention (data entry, etc) • Usually console (text mode) based. • Input usually via file in default directory, output to standard output. • Correct answer must be unambiguous & format specified • Description may include how to break ties • Usually machine graded via file comparison of output • Variety of problem types • Graph, numeric, text-processing, geometric, optimization, etc • Each problem has 1 main feature • Parsing complicated input, producing complicated output, implementing complicated algorithm, etc. 2011 CCSC:CP Panel - April 8 2011
Problem set • Boundary conditions specified for all problems • Judging input usually has at least 1 case that tests each boundary condition • Warn students if the obvious algorithm won’t work (usually because of time limit) • No obligation to give them a hint about a better algorithm. • Range of difficulty • Goal is for all teams to be able to solve at least 1 problem, but no team solves all problems 2011 CCSC:CP Panel - April 8 2011
Languages • Most contests restricted to C, C++, Java • Difficulty should be roughly the same in each language • Some problems are fairly involved in C++ but there’s a Java class that makes problem trivial • Occasionally something in C++ STL causing same problem in other direction • Some problems that are fairly hard in system-level languages (C, C++, Java) are 5-liners in dynamic languages such as Python • So, hold Python contest separately from Java contest 2011 CCSC:CP Panel - April 8 2011
Judging • ACM judging utility • Program Contest Control (PC^2) program • Manually • Copy source code to clean directory • Build/Compile • Copy input file to directory, run program • Compare program output with judges output 2011 CCSC:CP Panel - April 8 2011
Judging Feedback • For ACM, one of: • Submission error • Run-time Error • Time Limit Exceeded • Wrong answer • Presentation (format) error • Success • Each incorrect submission (anything other than ‘Success’) adds 20-minute time penalty to score • Others vary—Alabama State High School contest feedback includes the input case that caused the program to fail. 2011 CCSC:CP Panel - April 8 2011
Other judging feedback • Clarification of problem • Only if: • Problem is ambiguous or incomplete, • Sample input/output is incorrect or misleading, or • Contestant’s question cannot be answered by closely reading the problem • Most common feedback is: “Read the problem carefully.” • Hardware/software troubleshooting • Every site director’s nightmare. • “What do you mean, the debugger’s ‘not there’?” • If students are just unfamiliar with this IDE, that’s their issue. 2011 CCSC:CP Panel - April 8 2011
Hardware • Don’t need screaming new hardware • BUT all teams should be on substantially equal footing • 5 year old commodity workstations are fine, provided that everyone’s on similar 5 year old commodity workstations, so no one has any particular advantage 2011 CCSC:CP Panel - April 8 2011
Software • ACM requires MinGW port of gcc for C and C++ • ACM coordinating multiple sites worldwide; strictly local contests may have different needs. • Usual practice is to use freely available compilers/IDEs • Gcc (MinGW, Cygwin), etc. • Eclipse, NetBeans, DevC • Some IDEs such as Eclipse support multiple languages, so only 1 IDE is needed • Other compilers/languages should NOT be present on contest workstations 2011 CCSC:CP Panel - April 8 2011
What’s allowed • Usually provide Java class documentation, C++ STL documentation from SGI • Allowed to bring printouts, hardcopies, textbooks, etc at regional contests • World Finals limit hardcopies to 25 pages 2011 CCSC:CP Panel - April 8 2011
What’s not allowed • Internet access usually blocked • Not allowed electronic media • CDs/DVDs • Thumb drives • Cell phones/smartphones • Cameras • Anything machine-readable • Calculators also prohibited 2011 CCSC:CP Panel - April 8 2011
Infrastructure • Workstations for teams • Spread out enough so teams can talk quietly w/o being overheard • Ideally, each team in a separate room with whiteboard • Ideal is seldom available in practice • Separate area for judges • Storage of student phones etc. • Workstation (or 2, or 3) for judging • Privacy to discuss problems or gray areas • Periods of boredom, then very busy 2011 CCSC:CP Panel - April 8 2011
Infrastructure • Network connection if electronically submitting programs • Otherwise, 2 flash drives per team & several runners to carry drives to/from judging area • Mark flash drives w/ team number (or use numbered envelope for courier) so no one gets handed someone else’s code • Printer for contestants (source code) • Printer for judges (results, rankings) • Optional: • Separate area for team to confer, maybe w/ whiteboard • Soda, bottled water, snacks, etc 2011 CCSC:CP Panel - April 8 2011
Budgeting • Software cost usually minimal • Depending on distance traveled & schedule: • Meal before (box lunch, sandwiches, etc) • Snacks during • Pizza after • Copies • Judging forms/log sheets • 3 copies problem set per team • Feedback forms, notes to teams, etc (3 copies/team) • Envelopes, signage, etc. • Prizes • Certificates • Trophies • Geek toys / swag • Don’t forget something for support & judging staff! 2011 CCSC:CP Panel - April 8 2011
Time demands • Writing/testing problems • Original problems vs published problems • Setting up workstations • Configuring software & testing configuration • Setting up & testing judging software, PC^2 • Preparing signage, running copies, ordering box lunches, etc • Training/coordinating student volunteers • Corresponding w/ other schools, contestants • Cleanup • Reconfiguring/reimaging workstations 2011 CCSC:CP Panel - April 8 2011
High School v. Collegiate Contests • Time limits usually shorter • 2 – 3 hours typical, seldom more than 4 • Problem difficulty lower • Intermediate problem for collegiate contest would be hard problem for high school • Fewer problems requiring advanced math or algorithmic sophistication/depth • Problem descriptions more straightforward 2011 CCSC:CP Panel - April 8 2011
Resources • ACM Mid-Central Programming Contest: www.mcpc.cigas.net • IBM Programming Contest Central (aimed at HS contests) • https://www-927.ibm.com/ibm/cas/ hspc/Welcome/index.shtml • ACM Live Archive: http://acmicpc-live-archive.uva.es/nuevoportal/ • Google “programming contest” or “programming challenge” for many, many more, in many languages, at many levels. 2011 CCSC:CP Panel - April 8 2011
Further Resources • Brian Hare • hareb@umkc.edu • John Cigas • john.cigas@park.edu • James Cain • jcain@sbuniv.edu • These slides available at: http://h.web.umkc.edu/hareb/ 2011 CCSC:CP Panel - April 8 2011