tony arkles blog

In undergrad, I participated in the ACM Programming Contest every year. Without knowing my rationale, I always thought it was good for me (and would really try to get other people to come out).

This morning I realized why: it’s good practice! Often, people would point out how contrived the problems were, or how graph theory wasn’t particularly relevant to the kinds of things they wanted to work on when they were done school. The fact is, the more you work on the really hard problems, the easier the easy problems get.

[I want to talk more about this, but I'm in a testing cycle. This is part teaser, part reminder that I need to elaborate on this subject]

I just saw your post and I could not resist to write a comment
Another thing about algorithmical programming contests is that after a certain period of time you learn to recognize solvable problems in real world. And as a result you become able to produce really elegant solutions which have nice performance.

The format is also quite close to what students can expect when they get out into the work force. Here you are with a couple other guys in the office and you have a project that’s due yesterday. There’s no time to learn new languages, study documentation, or otherwise plan for this — you’re going to have to make a plan and execute it on the run.

Having been in ICPC myself, the problems certainly did seem contrived at the time, but later on you realize that almost any specific problem can be abstracted into one of those general problems. Eventually it becomes a game of pattern recognition and learning how to take those patterns and apply them to your current situation.

In the end, however, you realize that 90% of your time isn’t spent solving the problem, but getting the damn thing to compile.