I have this set of mixed feelings about student programming contests. On one level they just feel very artificial and inauthentic. You have a tight time schedule, some problems that are as much about the algorithm and they are programming and its all a narrow view of computer science. But lately I have been thinking beyond the façade in a way.
I took a group of students to a competition hosted by the Internet company Dyn the other day. The day started with tours of their offices. Like most Internet companies these days the offices at Dyn are cool. They are in a renovated mill building so the modern interior and the old exterior and “bones” of the building make for an interesting contrast. The tour impressed the students. (and me as well.) So that was a start. Then there were some brief (they must understand HS student attention spans) talks about Internet topics. Dyn was recently in the news for a Distributed Denial of Service attack so hearing from people involved about that was pretty impressive. The “please study CS so you can come to work for us later” that students heard from professionals was huge as well. Having that experience is probably worth the trip by itself. It helps to see where they could be one day.
I’ve been to a lot of high school programming competitions in the past. Usually I spent my time there with faculty. I did some of that at this one as well. There is a lot of value in getting a bunch of CS teachers together to share ideas and experiences. While that is not a goal of these events (always) it is a valuable side benefit.
Being at an event with students was pretty new for me though. It changes how you look at things. I watched the students (MY students) work. I could not help them of course nor could I really listen in on their process. I could observe it. What I saw was unmistakable teamwork. The process was dynamic. It was not always the same student at the keyboard (teams were only allowed one computer) for example. All three students were involved no matter who was at the keyboard. Developing that teamwork is a critical “soft” skill that seems to be reinforced by an event like this.
After the competition the students talked a little about how things went. Clearly there was give and take, strategy, and planning during the competition. Having that time crunch seems to force some organization on students. Sure we have deadlines in the classroom but they are not as close or as tight as in a programming competition. This is probably a good thing.
tl;dr I’m thinking that taking students to more programming competitions may be a good ide. And not just so they can win prizes.