Near the end of my first quarter at UCSD, I began seeing posts on Facebook which
advertised a “Beginner’s Programming Competition”. Students who have not yet
taken any upper-division Computer Science courses could solve small programming
questions. Whoever completed the most in the shortest time would be given a
prize. I’d been programming long before college, so of course I’d sign up.
I arrived and was given a dedicated workstation and a packet of questions. We
had three hours to solve as many problems as we could using Java. All
submissions were to be sent through PC2 and three winners would be announced at the end.
I learned three things that day:
- A competition environment makes programming very stressful and much more
- I was not the only one who had been programming “long-before college”
- I was hooked.
I did not win. Heck, I didn’t even place in the top 10. But I had a blast.
Next quarter, I teamed up with a long-time friend and we ended up placing in
the top 5. I was satisfied and immediately signed up to join the committee. I
would spend my entire college career working to improve the competition.
What Was So Great?
Obviously, I had a good enough time while competing to justify joining the
committee. Indeed, the competition did a lot of things right.
- The beginners-only spirit of the competition made it easily accessible for
me. It also thoroughly proved the joys of programming without intimidating
me into my own self-loathing.
- All of the questions had cute backstories and the competition had an
overarching theme. For my second competition, all questions followed an
unnamed chef as he encountered difficult problems in the kitchen. This
really helped lighten the mood and made it enjoyable.
- Balloons. There were people whose sole job was to deliver balloons to
contestants every time they solved 2 problems. Not only was this a morale
booster while struggling, but it was also fun. Some even had little faces
drawn on them.
- The competition was run by students, for students. Something about
partaking in a competition designed by my fellow students made the problems
seem even more solvable. (If my TA wrote the question, there must be an
easy solution!) Further, the competition was not too corporate. Sure, there
was a small corporate sponsor, but they only provided some prizes to the
winners. Definitely nothing too in-your-face.
What Could Be Changed
When I first joined the committee, I didn’t think much about improving the
competition. I simply wanted to help build it. Of course, I spent a lot of
time building tools to help create the competition, but it wasn’t until later
that I realized there was still work to be done. Most of this work was realized
because of post-competition-feedback we got from our contestants.
The biggest complaint was that contestants could only program in Java. Intro
computer science classes taught in Java, but many contestants were coming in
with pre-existing knowledge of Python and C++.
Some other contestants complained that prizes were lame. It was true. It cost
money to run the competition, so we asked programming-related companies to
provide us with funds and in return they could provide their latest tech
(read: advertisements) as prizes to the winners. Unfortunately, this meant that
companies often sent branded glasses, t-shirts, and stickers. No one felt good
about taking first place in a 3 hour competition only to receive a sticker.
Finally, the logistics of running the competition were a mess. Sure, we had
PC2 to help facilitate checking correctness, but volunteers were running around
like crazy delivering balloons, answering contestant questions, and ensuring
that no one was cheating. This meant that volunteers ran to the “control room”
to get a balloon, looked at a whiteboard to see who needed a balloon (the
whiteboard was managed by someone repeatedly refreshing the scoreboard), and
ran the balloon to the contestant. Over and over again.
I absolutely loved the competition and loved being on its committee even more.
In the next posts, I’ll detail how we decided to manage the logistics of
creating and running each competition. Hopefully they are useful to some other