© Зенович А.В., 2013
УДК 374.1 ББК 74.4
ПРОГРАММИРОВАНИЕ И МАТЕМАТИКА. ИСПОЛЬЗОВАНИЕ ПРОГРАММИРОВАНИЯ В КАЧЕСТВЕ СТИМУЛА ДЛЯ ИЗУЧЕНИЯ МАТЕМАТИКИ НА МАЛОМ МАТФАКЕ ВолГУ
Старший преподаватель кафедры фундаментальной информатики и оптимального управления Волгоградского государственного университета [email protected], [email protected]
Проспект Университетский, 100, 400062 г. Волгоград, Российская Федерация
Аннотация. Рассмотрена методика обучения школьников программированию на занятиях малого матфака. Малый матфак - это сеть бесплатных кружков для школьников по математике и информатике. Показано, как использовать интерес школьников к программированию в качестве стимула для изучения математики. В качестве примера разобрана методика проведения занятия по популярной теме «Фракталы».
Ключевые слова: информационные технологии в образовании, информатика и ИКТ, кружковая работа, алгоритмы, фракталы.
Зенович Андрей Васильевич
В последние годы у большинства школьников и студентов наблюдается значительное снижение интереса к математике и математическим дисциплинам. Падает конкурс на специальностях, связанных с математикой. Выбирая будущую профессию, люди все чаще хотят быть юристами и экономистами, а не математиками. Введение ЕГЭ и особенно оценивание и материальное поощрение школьных учителей по результатам ЕГЭ привело к снижению общего уровня преподавания математики в школе, особенно в одиннадцатом классе. До принятия системы ЕГЭ хороший выпускник с математическими способностями в 11 классе изучал математику на уроках в школе, параллельно сам или с репетитором повторяя школьный курс. По окончании школы почти полтора месяца (июнь - середина июля) школьник интенсивно готовился к вступительным экзаменам, в ре-
Введение
зультате чего в вуз приходил сильный абитуриент. Сейчас в 11 классе школьник вместо изучения математики учится решать задачи ЕГЭ. При этом для школьного учителя главный показатель успешной сдачи ЕГЭ - отсутствие двоек. Поэтому в подавляющем большинстве школ подготовка к ЕГЭ - это решение в огромном количестве простых задач части В. В этих условиях страдают именно сильные школьники. Кто-то по этому поводу остроумно заметил, что невозможно натренировать штангиста, заставляя его тысячи раз поднимать спичечный коробок. Тем не менее сейчас происходит именно это. С ЕГЭ по информатике и физике все обстоит еще хуже. Во многих школах учителя из-за боязни плохих оценок активно отговаривают школьников от сдачи данных экзаменов. В результате в Волгоградской области в этом году количество школьников, сдающих ЕГЭ по информатике и физике, уменьшилось более чем на 20 %. В этих условиях в вуз на ма-
тематические специальности приходят слабо подготовленные абитуриенты, испытывающие проблемы со сложением дробей, вычислением процентов и т. п.
Как известно, спасение утопающих -дело рук самих утопающих. В институте математики и информационных технологий ВолГУ три года назад был создан малый матфак ВолГУ, главная задача которого -подготовка абитуриентов для обучения на математических специальностях ВолГУ. Малый матфак - это сеть бесплатных кружков для школьников по математике и информатике. Количество и тематика кружков каждый год варьируется в зависимости от возможностей преподавателей ВолГУ и спроса со стороны школьников. В 2012/13 учебном году действовали 3 кружка, готовящие к ЕГЭ по математике, кружки «Олимпиадная математика. 46 класс», «Олимпиадная математика. 79 класс», «Олимпиадная математика. 1011 класс», «Программирование для начинающих», «Программирование для продолжающих» и «Программирование роботов». Занятия в этих кружках ведут преподаватели ВолГУ и лучшие учителя математики школ г. Волгограда. У каждого преподавателя есть ассистенты из числа студентов, что позволяет комбинировать лекции и практические занятия почти в индивидуальном режиме. Помимо решения основной задачи малый матфак является полигоном для педагогических экспериментов. Каждый преподаватель ВолГУ может прочесть свой математический или околоматемати-ческий курс для школьников при условии, что наберет достаточное количество желающих.
Следует заметить, что кружки по программированию пользуются у школьников намного большей популярностью, чем по математике (если этот кружок не готовит к ЕГЭ). Количество желающих научиться программированию в разы больше, чем количество любителей решать задачи математических олимпиад. В этих условиях занятия по программированию можно и нужно использо-
вать в качестве стимула для изучения математики в целом или отдельных ее разделов.
1. Первый год.
С чего начинать обучение программированию?
Школьник, пришедший на малый мат-фак в кружок «Программирование для начинающих», обычно имеет небольшой опыт написания программ из 5-20 строк на Бейсике или Паскале и умеет решать некоторые простейшие задачи по программированию. Примерно год обучения уходит на то, чтобы привить навыки процедурного программирования и научить технике кодирования известных алгоритмов. В качестве базового языка обучения выбран язык программирования С по нескольким причинам. Во-первых, хотелось бы, чтобы на начальном этапе обучения все школьники были в примерно равных условиях. Язык С не изучается в школах г. Волгограда, поэтому всем обучающимся приходится начинать его с нуля. Как известно, учить с нуля проще, чем переучивать. При этом знание основ Паскаля или Бейсика помогает школьнику изучить язык С, но не является обязательным. Во-вторых, изучение нового языка - мощный стимул для обучения программированию. В третьих, язык С и его производные С++ и С# являются основными языками программирования, которые будут изучать и использовать студенты всех математических специальностей ВолГУ. Еще одна причина - многие школьники параллельно посещают кружок «Программирование роботов», где для программирования микроконтроллеров используются С-подоб-ные языки.
Курс обучения азам языка С является стандартным и не содержит каких-либо особенностей. Математика здесь используется элементарная и по минимуму. Основная задача первого года обучения - привить навыки процедурного программирования. В таблице 1 приведены темы занятий первого года обучения.
Таблица 1
План занятий первого года обучения
Тема Количество часов
1. Обшдя структура С-программы. Понятие функции, понятие операторного блока. Компиляция программы. Директивы препроцессора 4
2. Переменная. Имя, тип, значение и адрес переменной. Организация ввода - вывода Примеры 4
3. Типы данных. Арифметические выражения. Оператор присваивания. Арифметические и логические операции. Приоритет операций. Примеры 2
4. Операторы языка С. Составной, пустой и условный операторы. Оператор безусловного перехода, метки 4
5. Циклы в языке С. Виды циклов и их взаимозаменяемость. Примеры 10
6. Оператор switch. Примеры использования 2
7. Одномерные массивы. Некоторые алгоритмы поиска и сортировки одномерного массива 8
8. Графика в языке С 8
9. Функции, их назначение. Формальные и фактические параметры. Передача параметров по значению и по ссылке. Побочные эффекты функций 8
10. Парадигма структурного программирования. Использование функций для программирования сверху вниз. Примеры 2
11. Указатели. Арифметика указателей. Массивы и указатели. Динамическое выделение памяти Примеры 2
12. Многомерные массивы. Динамическое выделение памяти. Примеры 2
13. Работа со строками в языке С 4
14. Рекурсивные функции и процедуры. Рекурсивные сортировки одномерного массива 8
15. Структуры и объединения 2
16. Работа с файлами в языке С 2
Каждое занятие начинается с короткой (25-30 минут) лекции, за которой следует полуторачасовая практика. Задачи для практических занятий подбираются индивидуально с учетом силы школьника и имеют занимательный характер (см. табл. 2). Продвинутым школьникам даются достаточно сложные олимпиадные задачи. На практических занятиях важную роль играют ассистенты, обычно из числа студен-тов-первокурсников, посещавших малый матфак
в предыдущем году. Как правило, студенты-кружковцы, поступившие в ВолГУ, продолжают посещать малый матфак уже в качестве помощников преподавателя, что позволяет работать в малых группах (3-4 школьника на одного ассистента). Перед началом работы школьникам выдается банк задач на весь год обучения, что позволяет совершенствовать свои навыки программиста дома, консультируясь с преподавателем по Интернету.
Таблица 2
Две задачи по теме «Циклы в языке С» для продвинутых школьников
31. Посадил колхоз репку. Тянуть ее позвали бригаду из деда, бабки, внучки, Жучки, кошки и мышки. Дед поставил следующие условия оплаты: 100 рублей за каждое «тянем-потянем» каждому участнику процесса + 200 % премии. Далее все было как в сказке: сначала дед сказал «тянем-потянем», потом дед с бабкой сказали «тянем-потянем» и т. д. Напечатать платежную ведомость для данной бригады
32. Доказать, что 13-е число чаще бывает в пятницу, чем в любой другой день недели
рование - это не только кодирование. Для успешного выступления на олимпиадах необходимо на серьезном уровне освоить алгоритмы. Поэтому основная часть второго года обучения - это изучение алгоритмов, требующее от ученика весьма нетривиальных математических навыков. Сильные школьники ко второму году понимают необходимость улучшить свою математическую подготовку и почти все начинают посещать кружок олимпиадной математики. Параллельно изучаются новые возможности программирования (концепция объектно-ориентированного программирования на примере языка С++, библиотека STL и т. п.).
Ко второму году частично меняется и форма проведения занятий. Лекции становятся длиннее и сложнее, практические задания - объемнее, больше половины задач школьники доделывают дома. Иногда успешно решенная задача становится основой научной работы школьника, с которой он выступает либо на областной школьной научной конференции, либо на школьной секции научной конференции, проводимой в апреле в ВолГУ в рамках Недели науки.
Таблица 3
План занятий второго-третьего года обучения. Алгоритмы
Тема Количество часов
1. Алгоритмы сортировки. Сортировка методом пузырька, вставки, выбора 2
2. Быстрая сортировка. Пирамидальная сортировка. Сортировка слиянием 4
3. Карманная и поразрядная сортировка. Понятие об эффективности сортировок 2
4. Алгоритмы поиска. Последовательный, бинарный и интерполяционный поиск 4
5. Алгоритмы генерации различных объектов б
6. Динамические структуры данных. Стеки, деки, очереди. Примеры использования в олимпиадных задачах 4
7. Динамические структуры данных. Списки. Реализация двунаправленного списка 4
8. Бинарные деревья поиска и их реализация 4
9. Алгоритмы работы с матрицами. Умножение матриц. Обратные матрицы. Алгоритм Гаусса решения линейных систем 8
10. Программа построения графика произвольной непрерывной функции 4
11. Функции, заданные параметрически. Построение графика 2
12. Полярная система координат. Графики в полярной системе 2
13. Решение нелинейных уравнений. Методы деления отрезка пополам, Ньютона, секущих. Г рафическая иллюстрация методов 4
14. Приближенное вычисление интегралов. Методы прямоугольников, трапеций, Симпсона. Графическая иллюстрация 2
15. Моделирование движущихся объектов. Задача о движении колобка по графику произвольной функции б
2. Второй и третий год обучения.
Алгоритмы
К концу первого года обучения школьник освоил навыки кодирования и без труда пишет программы на языке С по готовым алгоритмам, а также в состоянии придумывать алгоритмы решения простых задач. Как правило, такие ученики начинают активно участвовать и побеждать в олимпиадах школьного и районного уровня. Команды школьников пробуют свои силы в Открытом кубке ВолГУ по спортивному программированию. Это многоэтапное (5 туров) командное соревнование проводится по правилам международной организации Association for Computing Machinery (ACM). Открытый кубок привлекает лучших студентов и школьников Волгограда и области. Между турами силами продвинутых студентов (как правило, это участники чемпионата мира среди студенческих команд по версии ACM) проводится разбор задач кубка.
Попробовав свои силы в соревнованиях, школьник начинает понимать, что программи-
Окончание таблицы 3
Тема Количество часов
16. Способы рисования трехмерных поверхностей 6
17. Фракталы 2
18. Рисование фракталов с помощью L-систем 2
19. Понятие о фрактальном архивировании 2
20. Г рафы. Способы задания графов. Поиск в глубину и в ширину 2
21. Алгоритмы поиска кратчайшего пути в графе 2
22. Каркасы графа. Алгоритмы построения минимального каркаса 2
23. Задача о потоке в сети. Алгоритм Форда - Фалкерсона 4
24. Решение олимпиадных задач методом динамического программирования 6
25. Алгоритмы вычислительной геометрии 6
Из анализа таблицы 3 видно, что в алгоритмической части курса математики (причем вузовской) гораздо больше, чем собственно программирования. Вузовская математика излагается в облегченном ознакомительном режиме, при этом в подавляющем большинстве тем школьники пишут программы, позволяющие проиллюстрировать и лучше освоить содержание нетривиальных математических понятий. Когда такие абитуриенты поступят в вуз (хочется надеяться, что в ВолГУ), им будет намного проще учиться, чем обычным школьникам, так как со многими математическими понятиями они уже частично знакомы. В качестве примера синтеза математики и информационных технологий подробно разберем структуру и методику проведения занятий по теме «Фракталы» (занятия 17-19 из табл. 3).
3. Фракталы. Пример синтеза математики и информатики
По фрактальной геометрии проводится 3 занятия. Первое занятие - ознакомительное. Начинаем с будоражащего воображение факта - граница Норвегии имеет бесконечную длину (сообщено автору его научным руководителем М.А. Шубиным). Автор не уверен, что этот факт на 100 % справедлив, но основания к этому имеются. Дело в том, что границы Норвегии очень извилисты. В результате при увеличении точности измерений в разы увеличивается длина. Допустим, мы измерили границу с точностью до 1 км, получили длину L. Будем измерять с точностью до 10 м. Тогда отрезок длиной 1 км в силу извилистости превратится в
весьма длинную ломаную, что во много раз увеличит длину. При измерении с большей точностью каждое звено этой ломаной опять из отрезка превратится в намного более длинную ломаную и т. д. В результате при стремлении точности измерений к нулю длина границы будет стремиться к бесконечности. Данную ситуацию легко смоделировать с помощью кривой Коха, где факт стремления длины кривой к бесконечности нетрудно доказать (попутно школьники вспомнят геометрическую прогрессию). На снежинке Коха легко продемонстрировать идею самоподобия, потом можно привести примеры аналогичных самоподобных фигур (ковер Серпинского и т. п.), чуть-чуть повторить рекурсивные функции, после чего можно отправлять школьников на практическое занятие. Как правило, к концу первого занятия большинство кружовцев запрограммируют рисование одной из фрактальных кривых.
Второе занятие посвящено изучению одного из способов рисования любого фрактала. Излагаются основы Тертл-графики, а также теория L-систем [1; 2]. Можно написать на псевдокоде алгоритм порождения очередной итерации L-системы, а также кратко рассказать о реализации команд Тертл-графи-ки (попутно вспомнив школьную тригонометрию). После такого введения школьники разбиваются на пары. Один из них (более сильный программист) реализует алгоритм построения очередной итерации L-системы, а другой, имея на входе строку с данной итерацией, реализует алгоритм рисования фрактальной кривой. В результате к концу второго занятия каждая пара школьников имеет программу, рисующую любой фрактал.
Третье занятие посвящено фрактальному архивированию. Излагается принцип фрактального архивирования, демонстрируется работа фрактального архиватора. Факт получения сохраненной картинки из любого начального изображения неизменно вызывает восхищение и желание самостоятельно написать такую программу. Двум-трем самым продвинутым ученикам это удается сделать, остальные ограничиваются изучением чужого кода. В конце занятия формулируется задание для самостоятельной работы. Один из вариантов - вспомнить задачу о движении колобка по графику произвольной функции (тема 15) и предложить смоделировать движение колобка по снежинке Коха.
Заключение
В условиях, когда математика перестает пользоваться популярностью у школьников, если мы хотим сохранить нормальное математическое образование, необходимо исполь-
зовать все стимулы для того, чтобы заинтересовать школьника математикой. Обучение программированию предоставляет такую возможность, что показала практика проведения занятий на малом матфаке ВолГУ. В 2012 году проходной балл [3] на направление подготовки бакалавров «Прикладная математика и информатика» в ВолГУ совершил качественный скачок с позорных 114 до вполне приемлемых 193. Одним из важных факторов этого скачка явилась работа малого матфака ВолГУ.
СПИСОК ЛИТЕРАТУРЫ
1. Кроновер, Р. М. Фракталы и хаос в динамических системах. Основы теории / Р. М. Кроновер. -М. : Постмаркет, 2000. - 352 с.
2. Мандельброт, Б. Фрактальная геометрия природы / Б. Мандельброт. - М. : ИКИ, 2002. - 656 с.
3. Сведения о конкурсе и проходных баллах за 2008-2012 год // Сайт ВолГУ - Электрон. текстовые дан. - Режим доступа: http://new.volsu.ru/ АЬіїшУРгіетКот/. - Загл. с экрана.
PROGRAMMING AND MATHEMATICS. USING THE SOFTWARE AS A STIMUL US FOR THE STUDY OF MATHEMATICS FOR “SMALL MATFAK” VOLSU Zenovich Andrey Vasilyevich
Senior Lecturer,
Department of Fundamental Computer Science and the Optimal Control,
Volgograd State University [email protected], [email protected]
Prospect Universitetsky, 100, 400062 Volgograd, Russian Federation
Abstract. The method of teaching students in the classroom programming small matfaka. Small matfak - is a network of free clubs for students in mathematics and computer science. It is shown how to use the interest of the pupils to programming as an incentive for the study of mathematics. As an example, dismantled methods of teaching based on the popular theme of " Fractals”.
Key words: information technology in education, computer science, group work, algorithms, fractals.