200 likes | 286 Views
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
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