Личный кабинет

Олимпиады по информатике: методика подготовки

Технология использования опыта


План, порядок изучаемых тем, который поможет научиться решать олимпиадные задачи или найти пробелы в своих знаниях.

МУНИЦИПАЛЬНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ – МУЖЕВСКАЯ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНА ШКОЛА ИМ.Н.В.АРХАНГЕЛЬСКОГО

 

Доклад

 «Олимпиады по информатике: методика подготовки»

 

Материал подготовил:

Учитель информатики

Галицкая Ирина Викторовна

 

 

В связи с актуализацией и активизацией олимпиадного движения все острее встает проблема подготовки учащихся к участию в олимпиадах. Подготовка «ученика-олимпиадника» начинается с подготовки учителя.

Проблемы, встающие перед учителем:

·         Изучение новых форм проведения олимпиад.

·         Знание алгоритмов решения олимпиадных задач.

·         Наличие самих задач.

·         Знание языков программирования.

·         Время на изучение, отладку и проверку задач.

·         Обучение учащихся правильной организации деятельности на олимпиаде.

Несмотря на то, что круг задач рассматриваемых на олимпиаде по программированию ограничен, решение задачи может быть сложным не только для ученика, но и для учителя, так как некоторые задачи требуют знания высшей математики. Проверка решений и подготовка тестов обычно занимает много времени.

Большинству учителей это не по силам. Наиболее правильный выход в этой ситуации - повышение связей между школой и ВУЗом.

Вот некоторые особенности подготовки школьников к олимпиадному программированию:

1.      В школьной программе нет такого предмета «программирование». Т.е. обучаемый должен иметь собственную, довольно сильную мотивацию.

2.      Действует ограничение, что при решении задач желательно использовать только один из языков программирования (СИ или ПАСКАЛЬ).

3.      Постоянные тренировки идут почти на спортивном уровне.

4.      Большие затраты времени, длительность олимпиады с разбором часто превышает 6 часов.

5.      Алгоритмы и формулы, применяемые при решении большинства задач, изучаются только в ВУЗах.

Разумеется, подготовка более высокого уровня необходима и учителям для работы с одаренными учащимися, участвующими в олимпиадах по программированию:

·         Возможно второе образование, профильный ВУЗ по программированию.

·         Курсы по изучению языков программирования, по олимпиадному программированию.

·         Самостоятельная подготовка с использованием материалов из дополнительных источников.

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

 

 

 

Педагогическая идея опыта

Основным стимулом к участию в олимпиадах для школьника является мотивация. Возможность показать знания и эрудицию по решаемой проблеме.

Стремление школьника к лидерству, демонстрации собственных достижений является одним из основополагающих условий для участия в олимпиадном движении. Разумеется, при такой мотивации желающих работать достаточно, но в ходе работы происходит частичная ротация и это неизбежно при современной загруженности школьников. В основном остаются трудолюбивые дети, те учащиеся, которые не боятся поражений и ставят перед собой конкретные цели.

Одними из основных направляющих сил участия учащегося в олимпиадах по программированию являются желание и заинтересованность учителя, а также помощь, терпение и доверие родителей.

В 1964 г. В. Врум предложил «теорию ожиданий». Он считал, что стимул к эффективному и качественному труду зависит от сочетания трех факторов - ожиданий человека:

1.      Ожидание того, что усилия приведут к желаемому результату.

2.      Ожидание того, что результаты повлекут за собой вознаграждение.

3.      Ожидание того, что вознаграждение будет иметь достаточную ценность.

Чем больше вера человека, что все эти ожидания оправдаются, тем более сильным будет стимул к деятельности. Я немного изменила формулировки В. Врума в образовательном контексте, и вот что получилось.

Теория ожидания указывает на то, что должны делать учителя, чтобы стимулы к учебе у учеников были сильными:

·         Учить учеников получать требуемые результаты и создавать для этого все необходимые условия.

·         Устанавливать непосредственную связь между результатами труда и оценкой учеников.

·         Изучать потребности учеников, чтобы знать, какие вознаграждения имеют для них ценности.

Исходя из этого, механизмы мотивации и основные факторы эффективности стимулирования можно выразить как:

1.      Знание учителями потребностей, интересов, нужд учеников.

2.      Установление справедливой непосредственной связи между результатами и вознаграждением.

3.      Безотлагательность вознаграждения.

4.      Степень удовлетворения ожиданий.

 

 

 

 

 

Технология использования опыта

Конечно, подготовка к олимпиадам - это длительный и трудоемкий процесс.

Использование принципа «Что заработал, то и получил» позволяет создавать потребность в повышении познавательной активности учащихся, их самовыражении и заинтересованности в продуктивной учебной деятельности, стремлении к демонстрации собственных достижений.

Внедрение опыта

Интерес к «олимпиадному программированию» можно пробуждать разными способами. Самый лучший способ - это расширение знаний о компьютере, компьютерных вычислениях, введение алгоритмических конструкций на занятиях информатики и последующая интеграция с более узким решением задач на конкретном языке программирования.

Первый шаг. Подготовительный. Занятия проводятся в игровой форме. Постепенно вводится набор команд, позволяющий привлекать к решению задач вычислительные средства. При этом достаточно описания алгоритма на любом языке программирования.

Второй шаг. Начало программирования и в ходе проведения следующих занятий, вводятся различные приемы решения задач с использованием стандартных алгоритмов реализованных на языке программирования. Вводится понятие «отладка программы». Желательно рассмотреть несколько путей решения, чтобы в итоге научить учащихся элементам оптимального поиска.

Третий шаг. «Обучающая рефлексия». Учащийся обучает решению задач других. Обычно это происходит при разборе задач. Это помогает учащемуся определить признаки оптимальности (краткость, понятность), научиться четко прослеживать и объяснять работу программы.

Четвертый шаг. Вытекает из второго и третьего с последующим усложнением задач и инструментов их решения. На этом этапе особенно важно подключить преподавателей ВУЗа или самим искать более сложные задания, которые способствуют развитию логического, образного мышления, развивают комбинаторные способности.

Пятый шаг. «Созидательная рефлексия». Составление учеником задач с авторским решением, с тестами, входными и выходными требованиями.

Высшее достижение мастерства: создание и применение обучающих технологий, придуманных самими обучаемыми для обучения других.

Результативность

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

В Интернете имеется много программ и тестов, выполняющих функции дистанционного обучения и учителя используют их для подготовки учащихся к олимпиадам. Но! Иногда из-за скорости, качества связи невозможно участвовать в online-олимпиадах по программированию. Часто учащийся не знает стандарта интерфейса отсылки заданий, а для отладки задачи и получения результата требуется повторный вход на сайт проведения олимпиады. Проверка и подробный анализ результатов требует дополнительного времени. Установка подобной серверной системы в классе довольно трудоемка. А на домашнем компьютере ученика на данный момент практически невозможна. Не все учителя информатики знают правила ввода и вывода данных через текстовый файл при отсылке и приеме решений через Интернет.

В настоящее время разработано множество методик преподавания информатики. Но, несмотря на то, что программирование и алгоритмизацию можно совмещать при изучении информатики, решение олимпиадных задач по программированию требует совершенно иного подхода.

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

На следующих этапах работы идет усложнение заданий.

Проблема психологической и физической перегрузки

Ученики, которые участвуют в олимпиадах, отличаются большой работоспособностью, и порой учителя, видя это, начинают понемногу повышать планку требований и оценок. А ведь при подготовке к олимпиадам любого уровня, не только по программированию, учащемуся приходится много и упорно работать дополнительно дома, на уроках и факультативных занятиях, даже на начальных этапах. Многие темы учебных предметов учащийся изучает на базовом уровне ускоренно только благодаря старанию, большой работоспособности, при помощи учителей и родителей. Задача учителей и администрации - не превышать планку по другим предметам на период подготовки. Поэтому требуется контроль и поддержка не только со стороны родителей, но и учителя, а иногда помощь, и понимание администрации.

План, порядок изучаемых тем, который поможет  научиться решать олимпиадные задачи или найти пробелы в своих знаниях.

Раздел 1. Математические основы программирования

Раздел 2. Техника программирования

1.      Основы языка программирования (Паскаль, Си) Переменные и простейшие типы данных, размеры типов. Линейные программы. Условные операторы. Циклы. Процедуры и функции. Сложные типы данных (массивы, строки, записи, указатели, файлы).

2.      Массивы Одномерные массивы. Двумерные массивы (матрицы). Многомерные массивы.

3.      Строки. Элементы лексического и синтаксического разбора Операции над строками. Лексемы, подсчет лексем различных типов. Выделение чисел из строки.

4.      Работа с файлами Чтение и запись в текстовый файл. Преобразование полученных из файла данных в удобную структуру. Работа с типизированными файлами. Нетипизированные файлы. Буферизация ввода.

5.      Рекурсия Математические функции, задаваемые рекурсивно. Примеры рекурсивных подпрограмм. Проблема остановки рекурсии. Замена рекурсии итерацией.

6.      "Длинная" арифметика Хранения в программе чисел, которые не вмещаются в стандартные типы. Арифметические операции над "длинными" числами. "Длинные" числа с десятичной частью. Извлечение корня с заданной точностью.

7.      Хранение информации в динамической памяти. Хранение набора данных в линейных списках. Вставка в список, удаление из списка, поиск элемента в списке. Двусвязные списки. Понятия структур данных стека, кольца, очереди, дека; реализация их с помощью динамической памяти. Двоичные деревья. Деревья с неопределенным числом потомков. Хранение больших массивов.

Раздел 3. Алгоритмы, методы и принципы решения задач.

1.      Понятие сложности алгоритма. Определение сложности.

2.      Алгоритмы поиска и сортировки Поиск элемента в неупорядоченном массиве. Двоичный поиск по ключу в упорядоченном массиве (дихотомия). Поиск методом Фибоначчи. Поиск в упорядоченном n-мерном массиве. Поиск k-го по величине элемента массива. Простые методы сортировки ("пузырек", "выборка", "вставка", "подсчет"). Быстрые методы ("быстрая", "слиянием", "пирамидальная"), балансировка двоичных деревьев. Сортировка методом черпака.

3.      Решение задач методом перебора вариантов Применение рекурсии для перебора. Генерация сочетаний, размещений, перестановок и булеана множества. Полный перебор. Отсечение вариантов (эвристики). Метод ветвей и границ.

4.      Вычислительная геометрия и численные методы Длина отрезка. Уравнение прямой. Скалярное и векторное произведение. Точка пересечения отрезков. Принадлежность точки фигуре на плоскости (например: треугольнику). Площадь выпуклого многоугольника. Выпуклая оболочка множества точек: алгоритмы Грэхема, Джарвиса, "разделяй и властвуй". Ближайшая пара точек. Метод Гаусса для решения системы линейных уравнений. Нахождение решения уравнения.

5.      Принцип динамического программирования Понятие, применимость. Сравнение с перебором.

6.      Жадные алгоритмы Понятие, применимость. Сравнение с перебором и динамическим программированием.

7.      Теория графов. Алгоритмы на графах Понятие графа. Определения теории графов. Структуры данных для представления графа в программе. Алгоритмы обхода графа (поиски в ширину и глубину). Лабиринт (метод волны). Эйлеров цикл. Кратчайший путь во взвешенном графе (алгоритмы Дейкстры и Минти). Транзитивное замыкание графа (алгоритм Флойда-Уоршилла). Минимальное остовное дерево (алгоритмы Прима и Краскала). Топологическая сортировка графа. Потоки в сетях (алгоритм Форда-Фалкерсона). Паросочетания в двудольном графе (метод удлиняющей цепочки, потоковое решение). Задача о назначениях, назначения на узкое место (венгерский алгоритм). Игры на графах. Раскраска графа. Уложение графа на плоскости. Сильная связность и двусвязность графа. Изоморфизм графов. K-клика. Гамильтонов цикл.

8.      Лексический и синтаксический анализ Задача "Калькулятор". Синтаксические диаграммы. Формы Бэкуса-Наура. Стековая и рекурсивная модель синтаксического разбора. Конечные автоматы. Грамматики.

9.      Задачи с "изюминками"

Раздел 4. Олимпиады по информатике

1.      Правила проведения олимпиад по программированию

2.      Типичные ошибки и отладка программ

3.      Приемы олимпиадника

По-моему, наибольшую ценность представляют разделы 2 и 3. Если с изучением языка программирования у вас не должно возникнуть сложностей (огромное количество книг по этой теме), то вот с алгоритмами придется посложнее. Книг по этой теме тоже немало, но они, чаще всего, слишком перегружены теорией, а на олимпиадах нужна только практика. Из электронных источников по алгоритмам могу посоветовать книгу С.М.Окулова и сайт algolist.manual.ru, который менее нацелен на изучение "олимпиадной информатики", чем книга Окулова, но содержит большое количество алгоритмов, которых нет в книги, но которые неплохо было бы знать. Привыкайте работать в режиме: написание + отладка на Borland Pascal/Borland C++, а компиляция (с предварительным изменением констант) на Free Pascal/GNU C. Новые 32-битные компиляторы не имеют жесткого ограничения в памяти и работают существенно быстрее (особенно заметна разница в скорости выполнения 16 и 32-битных программ на P4). Такая хитрая тактика объясняется отсутствием приличного отладчика в новых платформах и их практически полной совместимостью с компиляторами фирмы Borland (в FP не забывайте делать close для выходного файла).

    31.12.2016 | 12:19
    Виктор Рябцовский Пользователь

    Пора переходить к изучению JAVA и C#. Паскаль утратил свою актуальность очень давно, а с++ значительно уступает по возможностям с#, поверьте мне очень нравился с++ и я имея все сертификаты по данному языку фирмы Микрософт, признаю более актуальным именно С#. На нем проще многие вещи особенно для начинающих разработчиков. Школа в силу непонятных причин продолжает делать ставку на мертвый Паскаль и сдавший свои позиции с++. Кроме того считаю, что ставка только на олимпиады неправильна, так как значительно большую ценность представляют проекты по различным направлениям и предметам. Сегодня опыт работы на проекте или исследовании намного продуктивнее подготовки к олимпиадам. Олимпиаду можно сравнить с праздничным салютом, а проектную работу можно вести на продолжении ряда лет и по значимости для практики олимпиады уступают проектам. Тогда почему школа упорно продолжает делать ставку только на олимпиады?

    По java в 1С есть курс подготовки по олимпиадному программированию. Но значительно интереснее посмотреть на курс 1C по Java. Мой сын в прошлом году прошел первый модуль по java(полный курс 4 модуля). В этом году он(8 класс) написал интерактивною открытку поздравление с Новым годом, где участники движутся и звучит музыка и речь, конечно за счет выполнения движения и исполнения MP3 в разных потоках, этот материал пришлось разбирать отдельно. На java и с# можно писать программы для мобильных приложений. Могу понять изучение с++, но в чем ценность изучения языка Паскаль? Сегодня происходят быстрые изменения, я не вижу Паскаль в робототехнике и в управлении различными объектами, включая современные станки и любое оборудования, включая бытовые приборы. Школа крайне медленно реагирует на изменения в трендах развития техники. Инертность приводит к нерациональному использованию ресурсов, а время - важнейший ресурс в жизни человека.


     
      avatar 04.02.2017 | 23:03
      Андрей Урусов Пользователь

      Виктор Рябцовский,

      Пора переходить к изучению JAVA и C#. Паскаль утратил свою актуальность очень давно, а с++ значительно уступает по возможностям с#, поверьте мне очень нравился с++ и я имея все сертификаты по данному языку фирмы Микрософт, признаю более актуальным именно С#. На нем проще многие вещи особенно для начинающих разработчиков. Школа в силу непонятных причин продолжает делать ставку на мертвый Паскаль и сдавший свои позиции с++. Кроме того считаю, что ставка только на олимпиады неправильна, так как значительно большую ценность представляют проекты по различным направлениям и предметам. Сегодня опыт работы на проекте или исследовании намного продуктивнее подготовки к олимпиадам. Олимпиаду можно сравнить с праздничным салютом, а проектную работу можно вести на продолжении ряда лет и по значимости для практики олимпиады уступают проектам. Тогда почему школа упорно продолжает делать ставку только на олимпиады?

      По java в 1С есть курс подготовки по олимпиадному программированию. Но значительно интереснее посмотреть на курс 1C по Java. Мой сын в прошлом году прошел первый модуль по java(полный курс 4 модуля). В этом году он(8 класс) написал интерактивною открытку поздравление с Новым годом, где участники движутся и звучит музыка и речь, конечно за счет выполнения движения и исполнения MP3 в разных потоках, этот материал пришлось разбирать отдельно. На java и с# можно писать программы для мобильных приложений. Могу понять изучение с++, но в чем ценность изучения языка Паскаль? Сегодня происходят быстрые изменения, я не вижу Паскаль в робототехнике и в управлении различными объектами, включая современные станки и любое оборудования, включая бытовые приборы. Школа крайне медленно реагирует на изменения в трендах развития техники. Инертность приводит к нерациональному использованию ресурсов, а время - важнейший ресурс в жизни человека.

      ПОДДЕРЖУ!
      Уже есть много современных языков, дающих детям представление о будущей профессии с использованием школьных знаний.
      Но проблема в том, что заставить учителя изучить не мертвый паскаль, а относительно современный руби или питон, может только сам учитель. Что уж говорить о навыках администрирования веб-сервера или сервера БД, или просто владении практикой администрирования доменной сети в школе. Это под силу только человеку с опытом, знающего куда рыть :)


       


Добавлено: 26.12.2016
Рейтинг: 8.29375
Комментарии:
2
footer logo © Образ–Центр, 2020. 12+