I wish I could ++ this a few times.
The computer science club at my college used to (perhaps still does) host a programming contest for high school students. While the participants were under a more compressed time frame, the assumption that we made for the easiest program was if/then/else and a loop construct of some sort. More advanced problems included nested control structures, switch statements, text processing (think split and join), and other problems that are easily programmed multiple times a day by anyone who does a modest amount of programming.
Remember that this should stretch the capabilities of the student, not stress them to the point of breaking :)