"Quality First" Programming Contest


An alternative programming contest where quality matters more than speed.

Sat Feb 5, 2011
9:00am - 6:00pm
Rm 14-301

Strategy/Practice Session
Wed Feb 2, 2011
6:30 - 7:30pm

Pizza for everyone and Prizes for 1st, 2nd, & 3rd place finishers.


Contestants are given a programming problem specification with a difficulty equivalent to a CSC 103 assignment.  One reference book is allowed. Contestants enter their solution into a text editor and the judges compile and execute it.  The winner is the person who creates a correct solution in the fewest number of compiles/executions.


Goal

The goal of this contest is to have a fun event where students engage in friendly competition to demonstrate their skills at writing correct programs.  The no-time-pressure framework is unusual and challenging in such a way that even if you don't win you'll learn something that will help you become a better programmer.

Overview

This contest differs from traditional programming contests in four main ways:
  1. The problem to be solved is much easier.  In a traditional contest the problems are quite challenging, often requiring advanced algorithms.  In this contest the problem is equivalent to a CSC 103 assignment.
  2. The emphasis is on correctness not speed.  You can take as much time as you need (within the contest framework).  The winner is the person who creates a correct solution in the fewest number of compiles/executions.  (More below).
  3. Execution time doesn't matter.  In many programming contests, a solution must complete in a few cpu seconds to force you to write high performance code.  In the alternative contest there isn't any such constraint.
  4. Better feedback. In a traditional programming contest you receive very little feedback about your submissions; simply pass or fail.  In the alternative contest, you get the compile error messages and the output from the test runs.

Rules

Any currently enrolled Cal Poly student may participate.  You must be physically present (no remote participation).
You must bring an empty USB Flash Drive for submitting your source code file.
You are permitted to bring one reference book of your choice. 
Contestants may not use the internet or wireless devices of any sort.  Music players are not allowed.
Programming language - we plan to support C, C++, and Java.  Other languages available on the CSL workstations might be considered if arrangements are made in advance.

Problem

The contest problem will be taken from concepts and techniques taught in the data structures and algorithms course, CSC 103. The problem will ask for results printed to standard console output, not graphics. A very rough estimate is that the solution will require 3 or more hours of effort. Individuals vary greatly in their productivity.  Some might finish in a couple of hours, others might take six or more. Total time solving the problem is not that important.  Correctness is what matters most; getting a solution to pass the tests with the fewest number of submissions.

Lab Environment

Hardware is a CSL workstation (planned: 14-301)
Operating System will be a customized version of Ubuntu Linux that has no compilers and no internet access.
The OS provides the following text editors:  gedit, vim, gvim, and nano. 

Procedure

Contestants will sign in upon arrival and have their USB Flash Drive cleared and tagged.  Contestants will wear a name badge corresponding to the tag number.
Contestants will be given printed directions and the contest problem specification.
Contestants begin when an official announces permission to commence.
Contestants work individually on a CSL workstation (not personal laptops).
Contestants who desire a rest break must checkout with the judges who will supervise only one contestant leaves the room at a time.
Contestants design and implement a solution and type the source code using an editor.

Submitting a Solution

Contestant transfers source code file to a blank, tagged, USB Flash Drive.
Contestant places Flash Drive in queue at judges desk. 
Judges keep track of number of submissions.
Judges compile source code. If there are errors generated, contestant receives a copy on their flash drive.
If no compile errors occur, the judge executes the program with official test cases.
Output from the program will be compared to the official answers using 'diff' or other automated comparison.
If the output is incorrect, contestant receives a copy of output produced by their program.  Contestants aren't allowed to see the test input or the official answers.
If the judges are not busy with other tasks, they can create printouts of source code so contestants can review their work on paper.  (There will be a separate queue for flash drives that just want printing).
Once a submission is judged correct the contestant may leave. It is not necessary to be present for the entire duration of the event.

Determining the Winner

The person whose solution passes the judges' tests in the fewest number of submissions is the winner.  For example, if Bill has two submissions with compile errors, three submissions with no compile errors but incorrect results, and one correct submission, the total is six submissions.

In the unlikely event of a tie, winners will be ranked by fastest solving time.

Prizes

Prizes will be awarded to 1st, 2nd, and 3rd place finishers. 
1st place - $50 gift certificate and winner certificate
2nd place - $25 gift certificate and winner certificate
3rd place - $15 gift certificate and winner certificate
Winners must consent to a photograph to receive their award.

View the winners of previous contests.

Pizza

Pizza will be provided to all contestants around lunch time.  There will be not be an official break and the contest clock will remain running.

Practice Session

During the practice session there will be a review of the procedures and strategy tips for succeeding with this unique contest format. There will be a simulated contest to familiarize people with the environment and procedures.  People are encouraged to attend the practice session so they can perform efficiently during the actual contest.  

CSC 409 Personal Software Processes

A special topics course is being offered spring quarter where students will learn how to develop a defined and measurable personal process for developing software.  There will be 8 or 10 small programming assignments (at CSC 103 level or easier).  Students will gather objective measures of their performance and use this data to improve their process.  Previous participants in this course were very enthusiastic about it, saying it was "very worthwhile" and "should be required for every CSc major."  By using a "quality first" approach, students learn to make dramatic reductions in the number of defects they produce with no loss of productivity.  Course prerequisite is CSC 103. Read the 409 course overview.

Contact

For more information, email: john's email address