This is slightly OT.
I am involved with a programming competition for students (up to 14 yo). One idea for the competition was to have the students compete to crack a cipher of some description.
The problem needs to be difficult enough to challenge a reasonably able programmer of that sort of age. A simple substitution cipher would be enough. It also has to be easy enough that they can actually achieve it!
Finally it needs to be a problem which requires, or strongly encourages, the competitors to write code to solve it.