Пару лет назад, когда я только учился программировать, я наткнулся на старую книжку с задачами по программированию. Там были очень подробно разобраны задачи, некоторые возможные особенности в реализации (без конкретной привязке к языку програмирования), помню только что одной из первых задач была реализация аналога игры Жизнь