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