?

Log in

No account? Create an account

Previous Entry Share Next Entry
Про алгоритмы, выученные наизусть
btromanova
Так уж вышло, что я в этом году веду лекции по дискретному анализу в МАИ. Предмет на самом деле должен бы называться "Алгоритмы-2" (после алгоритмов-1, которые ведутся на первом курсе, но называются каждый год по-разному). Кому интересно, программу можно посмотреть тут: http://k806.ru/daexam1. Курс, на мой взгляд, по содержанию очень хороший и полезный (автор не я, так что имею право хвалить). По форме --- не знаю. Судя по тем ответам, которые я слышу на экзамене, у меня не очень получается его вести.

Поясню последнюю мысль. Сегодня была первая из двух возможных пересдач. Вопрос, который "завалил" большинство отвечавших (с горем пополам сдали трое из двенадцати) --- алгоритм Кнута-Морриса-Пратта или же любой другой алгоритм быстрого поиска подстроки в тексте с линейной оценкой времени препроцессинга образца. В свое оправдание могу сказать, что я не придиралась к псевдокоду или конкретным деталям реализации, я просто просила объяснить хотя бы один из вариантов, как оно может работать.

КМП --- это не самый простой алгоритм, и меня бы не пугало, что человек, в первый раз его прочитавший, не может сразу сообразить, что к чему. Пугает меня другое --- то что люди отчаянно пытаются его мне рассказать, не понимая смысла. Некоторые заучивают наизусть определения или псевдокод, что довольно сложно, т. к. рифмы там нет, а восстановить по памяти несвязанную последовательность перестановок букв и индексов реально тяжело. Я, кстати, пробовала. Первый семестр матана я сдавала примерно так. Надо сказать, что наш дискретный анализ отличается от математического простотой конструкций и наглядностью. Тут практически не нужно абстрактное мышление, нет бесконечно малых окрестностей, несчетных множеств, многомерных пространств и т. п., зато много разных деталей, без понимания которых картинка не складывается. Соответственно, способ "сейчас запомню, потом пойму" тут работает крайне плохо.

Заучивание приводит к довольно смешным (или ужасно грустным, как вам ближе) случаям. Сегодня мне несколько раз сказали что-то вроде "ну, там была формула, но я ее не помню". Речь шла по сути о нахождении координаты точки после параллельного переноса с позиции i влево на L позиций, то есть, забытой "формулой" является i - L. Еще один пример --- вспоминание формулы для суммы арифметической прогрессии с шагом 1 (1 + 2 + 3 + .. + n = n*(n + 1)/2). Эту задачку часто дают на школьных олимпиадах по математике классе в третьем. Некоторые третьеклассники догадываются до решения, второкурсники же вспоминают формулу.

Есть еще один любимый студентами прием: "давайте я вам покажу на примере". На примерах, товарищи, ничего не видно. На примерах очень легко не заметить общего случая, рассматривая частные. На примерах очевидны многие теоремы и гипотезы, на доказательство которых потрачены (или все еще тратятся) десятки лет.

В общем, мне бы хотелось, чтобы после курса у студентов появилась привычка думать, читая алгоритмы в книжках или википедии. А еще, чтобы они научились говорить спрашивающему "я не знаю" ("... потому что вообще не читал ничего об этом, пойду почитаю, в следующий раз расскажу") или "я не понял" ("... и у меня есть конкретный вопрос, почему в этом месте написано А, а не Б"), а не бессмысленный набор заученных предложений с завершающим "а дальше я забыл". Пока все плохо, впереди второй семестр.


  • 1
Так в этом и есть искусство преподавания. Сначала нужно студента учить тому, чтобы он хоть что-то понимал из предмета, а потом стал говорить, что ему не понятно и задавать вопросы. Второе, как показывает практика, значительно сложнее, чем первое. Абсолютно всех научить нельзя, но многих можно. ;)

Тань, ты препод ;)

(Anonymous)
Во всех смыслах этого слова ;)

  • 1