Here are some of the things that I have done so far.
1. Write an editor based for card-image files in XPL (for the Sigma 5 RBM system) 2. Write a document processor along the lines of nroff for fixed-width character printers (think Courier). There were at least two of these I believe 3. Write a simulator to estimate the probability of a busy signal for a given call volume and a given number of phone lines. Oddly, when we later compared these results to similar simulations provided by the phone company, the phone company's numbers showed we needed more lines. 4. Write a code generator for an industrial compiler. 5. Write the (rough) equivalent of an IRC channel for AX-25 packet radio DX-spotting network. 6. Write the software necessary for the first real-time QSO-logging system used in a DXpedition. (Used in the YJ8V/YJ8PD trip.) 7. Contribute a very tiny piece of software that is part of a control-system analysis program used to decide where to locate Argonne National Labs. (And I mean really tiny.) First program I wrote for pay.
These are just a few of the more fun ones.
However, there is one challenge that has captured my imagination over the years. Imagine a final exam of programming skill that has the student in an electronically-locked room with a computer that controls the lock. There are but a few necessities in the room, no internet. The student needs to write a program that will unlock the door.
I haven't done this last one exactly, but sometimes it seems like a metaphor for some near-deathmarch projects I have gotten myself into.
Current homework includes writing an intercepting proxy in a handful of languages.