Есть хороший задачник по программированию А. Шеня. Сейчас он, кстати, переиздан. У меня есть старое издание в компьютерном варианте. Очень хорошая вещь, рассматриваются на примерах как начальные, так и серьезные алгоритмы (и синтаксичекий разбор, и комбинаторные задачи, и много чего еще).

А при обучении школьников еще очень полезно регулярно показывать "вживую", как пишутся программы. Не рассказывать о решении, а специально брать задачу, которую еще не решал, включать проектор (если он, конечно, есть), и на глазах у них составлять. Размышляя вслух, исправляя, комментируя. Главное, чтобы у преподавателя был хороший отточенный стиль, большой опыт программирования, и каждый свой шаг он подробно объяснял - почему сделал так, а не иначе.