It's 10:00 am on the first Saturday of school at C.U. (University of Colorado). No projects have been assigned yet. No significant homework. So why do we have 24 C.S. students in the Computer Science Engineering Lab? They're about to compete in the first annual C.U. Code War. Participating doesn't count toward a grade. It fulfills no school requirements. It doesn't pay. So why are they here?
For the same reason some people will spend an entire day playing basketball in a tournament. The pure joy of competing at something you love. These 24 students woke up early and spent their Saturday designing and writing code. Did they enjoy it? Every single one said they want to do it again next year. Why? Because a lot of us programmers love what we do. Yes we get paid well for it, but it's not the pay, it's that we love the work.
Events like this add significantly to the College experience. First off it helps reinforce a joy in learning purely for the sake of increased knowledge. That is one of the fundamental tenets of learning.
Second, it provides a more diverse learning experience. A code war is different from an assigned project. With an assigned project everyone can get an A and the criteria to do so are very clear. In a code war there is only 1 winner and so you have to strive to write better code than the others, without knowing what the other teams are creating.
Third, I think back to what one mom said when we were complaining about driving our daughter's soccer team all over the state for games – that it's cheaper than drug rehab. Providing compelling events for students that keep them busy helps reduce the time they're learning the hard way that dumb behavior has consequences.
A code war is a contest where each team is given an identical programming problem. Each team then writes a solution to the problem in the allowed time and the solutions are run against each other. For the Windward Code Wars I create problems where each team writes an A.I. (Artificial Intelligence) for a game. I do think an A.I. is fun because instead of the result being a score for each team with the high score winning, you watch robots move on the board and shoot each other as you are following your robot cheering for it when it makes a good move. The play-off is a lot more interesting.
The teams get the problem and then all go to different classrooms. And they then quickly go into what most people know is the way to be as productive and innovative as possible. First they turn off all communication – cell phones off, Facebook closed, etc. They then talk through the problem discussing approaches to the problem. And then it's an iterative of implementing an approach, trying it, discussing the result.
The team that won ended up implementing and discarding two approaches before finally settling on the third approach that was successful. One approach worked well but took too long to calculate a move (the game only allowed 1 second). The second approach made bad moves. The final approach was a pretty simple one (they didn't have much time left) but it showed that oftentimes simple does a better job.
The final play-off was as exciting as a basketball game tied in the final minutes. The team members were watching their robot on the screen as the robots all moved, fired, took flags, etc. But from the cheering (on good moves) and cries of anguish (on bad ones) they were there on the screen in their robot. And they watched their 8 hours of effort as their robot moved in relation to the others.
If you are hiring programmers for a start-up, these are the students you want to interview. A love of creating good code means this is someone who will put everything they have into creating a successful company. Yes you need to interview on other criteria but on this one very important criteria, these students are clearly what you want.
I hope C.U. (and other schools) can come up with events like this for other majors. It would be a great way to start the school year off on a positive note.
And if your school would like to participate next year, please contact us at Windward Code War.