Я решил организовать в лицее, в котором преподаю, небольшой кружок по программированию. В первую очередь я планировал готовить команды к участию в соревнованиях по спортивному программированию (ACM), соответственно и программу составил подходящую для этого — основы программирования, структуры данных и алгоритмы от простых к сложному и прочие тонкости спортивного программирования. Но так вышло, что большинство из тех, кто посещает занятия, не особо интересуются именно спортивным программированием, они хотят писать какие-нибудь прикладные программы, некоторые особенно жаждут, когда же начнется визуальное программирование (пока что ограничиваемся консольными программами, так как даже С/С++ не разобрали до приемлемого уровня).
В связи с этим и вопрос. Что можете посоветовать в качестве прикладных задач для начинающих программистов без специального образования?
Мы работаем на языке С (чуть позже хочу перейти к С++, но не хочется им раньше времени голову забивать объектной парадигмой, им бы императивное программирование осилить для начала), в среде Visual Studio. При необходимости можно установить, например, среду Qt или виртуальные машины с Linux. Какие-то базовые знания из Computer Science при необходимости я могу дать, но их объем ограничен знаниями учащихся из математики, т.е. разрабатывать экспертные системы вряд ли получится.
Пусть игрушки программируют. Притом все разные. Это повышает вероятность того, что у них не пропадет интерес к программированию. К тому-же и математику подтянут, когда захотят что-то поинтересней сделать.
Если свербит прикладное изучать, то лучше бы, на мой взгляд, перейти сразу к Java или C#.
2D-игры наверняка воспримут с энтузиазмом, особенно после консоли — попробуйте коллективно писать несложную 2D игру типа каких-нибудь танков или двумерных стрелялок. Позволит отработать очень многие аспекты, включая и командную разработку.
Было в мыслях перейти впоследствии к C#, но хотел сначала с С/С++ разобраться на достаточном уровне. И чтобы до перехода к окошкам они понимали, что полезные программы — это не всегда окна, но и консольные приложения тоже (или даже вообще без интерфейса, может демон какой-нибудь или утилитка).
А может быть имеет смысл провести опрос среди предполагаемых участников кружка? Что то вроде- какую программу вы хотели бы написать и привести список или категорий (игры, системные, бизнес) или что нить более конкретное (to-do list, календарь, танчики и т.д.). И конечно оставить поле «что то другое». Возможно у кого-то уже давно лелеется мечта о программе…
Была мысль. Но сами понимаете, у них пока мало представлений о трудозатратности и выполнимости, больше чем уверен, что большинство пожеланий будет нереально выполнить на их нынешнем этапе обучения. Одна из мыслей, к примеру, была — сделать архиватор на кодах Хаффмана — и наглядно и нет необходимости делать оконный интерфейс.