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.
I have read some papers on coding contests for kids. They were all a bit against for the artificial aspect in the competition. Primarily the speed factor involved is so contra to what most programming courses teach, i.e. a well thought out solution is usually the best solution. On the flip side I would give a small unused body part to attend a coding competition at a company like Dyn. The social aspects for the coaches and students probably far outweighs the drawbacks of coding competition.
ReplyDeleteWe have a company in town that writes and sells a product that puts property lines on GPS maps. Their main market is hunters. Knowing who's property you are hunting on is critical to not getting in big trouble and paying big fines. I take my programming classes on a field trip to this small (20 people?) company. The kids are fascinated. Mostly by the fact how few programmers there actually are at the company. And the fact the programmers are not geeks. The real world of programming and programming companies is a big revelation.