Laying it out by the numbers doesn't explain it well.
You arrive around 9:40 wondering what you're in for. Even more, wondering why you got up on such an early hour on a Saturday -- are you nuts? But you're here and you make sure your computer is all set up and talk with the other students -- all of you waiting to find out what the challenge is. And chowing down on soda pop and donuts (the breakfast of champions).
It's very different having no idea what the problem will be. In your classes, your projects, your presentations you have plenty of time to prepare and you know exactly what you're getting in to. If you've participated in other competitions you know beforehand what you're going to be doing. Oftentimes you've even been able to prep for it. But here you are with no idea of what you'll face except that you will need to write an A.I.
The presentation begins, first music to wake you up. Then the problem is presented by video and you receive the code via email. And your first reaction is "this is easy, I can write an A.I. to do this." But then you look around the room and realize every other team is thinking the same thing -- and your A.I. has to be better than all of theirs. And better than all of the A.I.s being developed at other schools across the world.
And you then realize this is going to take everything you've got. You and your teammates need to design and write the best code of your life. Game on!
You first make sure you can run the game with the sample A.I. Piece of cake. So you now dive in to designing your A.I. and this is hard. You talk through different approaches. Many are discarded as sub-optimal. Others because they would take days or weeks to implement. Others because the processing time is killer. But out of all that effort you do find a couple of ideas that you think are promising.
And as you take a breath and prepare to start coding you realize that it's been an hour. How could it be an hour, it only felt like five minutes. Is there something wrong with the space-time continuum? Aaah, OK get coding.
You code, run, test against the sample A.I. (which isn't very smart, it's the Jessica Simpson of A.I.'s). Ow, it beat you. This is awful. Wait, looking at the logs your code is not doing what it should. Track back in, there it is, wait that's wrong in the code, OK fix it, run again. Ok now you're beating the sample A.I. Now we're cooking.
It's now noon and it's time for the first test run. Now you go up against the others that also have their first pass complete. You did ok, but so did a couple of the other teams. You dive into the logs of what you're A.I. did, and why. In some of the cases you see what you can do to improve. But for others the opposing A.I. is moving in ways you didn't expect. You need to figure out how to address that -- something you hadn't even thought of before.
Quick, gulp down some pizza -- who knew you could inhale lunch in under 30 seconds. But there isn't time for anything other than coding. You now find yourself in the zone -- your mind is one with the program. You and your teammates run a test, look at the results, and from that you can feel what you need to change. Code up the changes, rinse and repeat. You are creating code better and faster than you ever have before.
Another test run against the others. OK, you're leading the pack now. Not by a lot but you won. That's good. Dive into the logs and -- what is that other A.I. doing? OK, that's new and you need to address that. And why did your A.I. make that one decision -- that was dumb. Dive back in. OK, you can do this. You're flying now -- the design changes, the code to implement it, it's going directly from your brain to the computer with your fingers on the keyboard effortless implementing the new changes.
There's half an hour left. What? Wait lunch was just 15 minutes ago! You would sell your soul for another two hours -- no questions asked. You focus on just testing the existing code to make sure it won't blow up. Get it checked in. OK, good to go. This is it and oh my God you're so nervous...
You watch the game run on the monitor. When you're A.I. is ahead you're cheering, screaming, jumping up and down. When another pulls ahead you're in anguish. And then you're A.I. makes a spectacular move, so good the other's clap for you and you're on top of the world. The championship is decided by the total score of 10 runs of the game. You're up, then down, then up again. You've never been so on edge in your life.
You're ahead at the start of the tenth run and you keep your lead throughout the last run. You've won. You f#@king won it!!!! You just wrote the most amazing code of your life.
Not everyone wins. But the experience remains the same for all (except the last five minutes). You've spent eight hours in the most intense competition of your life. You became one with your program and hit a level of design and coding you never before achieved. It's a tremendous high that comes from competing at that level. It's why you became a programmer.
You wish it could have gone on longer. But the limits are part of what make it so intense. Part of why we limit it to eight hours with no advance information is to limit the time commitment. But part of it is that the limits make it an incredible experience. The eight-hour limit is what forces you into the intense zone.
If you were one of the top two finishers, then you get until 8:00 p.m. to check your code in for the final. Step one is to ask the teams that designed the A.I.s that you thought had innovative moves what they did. If you like their ideas, you borrow their code and incorporate it. At this point all the teams from your school are helping you win the final. You get their code incorporated and upload it to the Windward server.
And then Sunday, at 12:00 noon Colorado time, you hook in to watch the final run. The winning school gets this totally sweet trophy. The same anguish, cheering, screaming, crying as you see your A.I. play against the others. It bounces back and forth between you and a couple of the others. You think you're going to have a heart attack it's so intense.
And the winner is... Well you need to sign up and compete to find out.
Follow David Thielen on Twitter: www.twitter.com/DavidAtWindward