Comment Build Your Own (Virtual) Computer (Score 1) 126
In some of the Deitel books (e.g., C++ Learn To Program, Java Learn To Program, etc.) they have a really helpful problem: implement your own Virtual machine using a predefined machine language. You can monitor the register states and see what happens after each command. If having them write the machine code themselves is too complicated, at least having such a simulation to play with, giving them an intuition for how a computer "really" works, could be very useful.
Of course, some people won't be that interested, but it's the kind of program that makes certain kinds of people fall in love with programming.