У меня есть сомнения в том что студенты что то в этом понимают, все таки эта часть программирования требует намного больше опыта, которого у них нет.
И вообще желание копипастнуть не всегда есть зло. Есть куча моментов когда в начале все похоже и решается копипастом а потом допиливается и просто удобнее с чего то написать.
Зло копипасты максимум в генерации ошибок, не преувеличивайте.
Самый просто пример: когда вы начинаете реализовывать большой интерфейс(а у вас есть уже 100500 его реализаций для парсинга файлов например) хотите вы этого или нет то часто работа начинается с копипасты а потом переименовыванием и переделкой некоторых вещей. И вынос этого дохлого небольшого куска с виду общего кода в промежуточный класс приведет только к большим неудобствам.