"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:
- 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.
- 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).
- 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.
- 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: