Competitive/Collaborative Programming Class

ICPC Computer Programming Contest Prep

Problem Solving in Computer Science

Fall 2012 -- CSC 2700 Section 02

[Isaac's Home Page ]  [Mailing List ]  [Class Page ]  [Printable ]  
   Archive Mirror
   NA Qualifier
   CSC 2700 Section 02
   Tureaud Hall 101
   6:30 PM - 8:20 PM
   2012 Spring
   2011 Fall

What attributes does a good problem set have?

If you are evaluating the problem set after its use, you should see the following qualities:

  • All problems should be solved by at least 1 team
  • No team should solve all problems
  • No corrections were necessary to the problem set/example data
  • No corrections were necessary to judge data
  • All teams solve at least 1 problem

What other attiributes could there be?

  • Each problem should be focussed on one thing (solving a particular algorithm or puzlle, testing input parsing, testing output tricks, validating data, ...)
  • Most problems are basically math oriented or string processing oriented. A good problem set will be balanced (about 50% each).
  • Since degree of difficulty can vary across a problem set, the problem set should be designed so that the problems are tiered (a pair of problems - one math, one string at each difficulty level)
  • Input/output should be simple (unless the focus of the problem is complicated I/O)
  • I/O should not impact runtime (make I/O simple enough that an undetectable amount of clock time is consumed by I/O)
  • I/O should not favor one supported language over another
  • Problem set should include at least one geometric problem
  • Problem set should include at least one classic algorithm problem (a problem that essentially tests if the team can cade the algorithm -- such as Floyd-Warshall, Dijkstra, ...)
  • Solving one problem should not make another one easier. Otherwise, not being able to do one problem eliminates another problem from the field.
  • No problem should need more than 20-25% of the time to solve and code.

Additional attributes of a problem set that I prefer:

  • If a problem could have multiple answers, change what you want. Instead of asking for the answer, ask for how many steps in the answer. In other words, if a problem is to travesre from A to B and multiple valid paths exist, rather than printing any one of them, make the answer be how many unique paths exist
  • Go for concise output, concise input is bonus
  • Consistency across problems is highly desirable (similar format of problem statement, similar I/O design when appropriate)
  • Blank lines should not be meaningful in input (imapcts ease of I/O across languages)
  • Use white space of any kind as a delimiter, but not multiple kinds as different delimiters
  • All data should use a trailer card or a counted input mechanism (avoid end-of file testing)
  • Problems should be 1 to 2 pages long. Longer than 2 pages usually means that the problem is not being expressed clearly or that the problem has too many addons.
  • Problems should be perfectably understandale without pictures/drawings/charts/tables/... Printing of problems is not always perfect for these. Aproblem that requires them to be understood can easily be harder for some (becuase of prnting issues)
  • Color can be helpful but should not be required for the problem to be understood (one again -- printing issues)

Odd things that might matter

  • As for diagrams and color, we once had a blind particpant and provided that competitor a braille copy of the problem set. Think of the impact of color and/or diagrams on visually challenged competitors.
  • I suggest double sided printing. It does make the team flip back and forth some. It also is more environmentally friendly. More importantly, it shortens the perceived size of the problem set.

[ Powered by Red Hat Linux ] [ Powered by Apache ] [ Powered by PHP ]

The statements and opinions included in these pages are those of only. Any statements and opinions included in these pages are not those of Louisiana State University or the LSU Board of Supervisors.
© 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Isaac Traxler