Печать

Введение в олимпиадное программирование

( Введение в олимпиадное программирование )

Продолжительность обучения: 21 ак.ч. лекции очно + 27 ак.ч. практики очно + 24 ак.ч. самостоятельно
График обучения: 72 академических часа

Расписание

Курс пока не поставлен в расписание. Оставить заявку на курс

Стоимость

Дата Физ. лица, руб. Юр. лица, руб. Дистанционно
Без скидки Cкидка 10%* Cкидка 15%** Без скидки Cкидка 10% Cкидка 15%
Цена c 25.01.2016 15000 15000

*Скидка 10% для ранее обучавшихся, при одновременной оплате 2х курсов, а также по акциям.
**Скидка 15% при одновременной оплате 3х и более курсов.
Примечание. Студентам ВУЗов Санкт-Петербурга очной формы обучения скидка до 25%.
Скидка не предоставляется на дистанционную форму обучения.

Преподаватели

Аннотация

Спортивное программирование – особый вид деятельности, увлекательный и азартный. Олимпиады по программированию бывают индивидуальными и командными, бывают официальными, дающими льготы при поступлении в ВУЗ, и совсем «домашними».

Главное отличие олимпиадного программирования от обычного – необходимость быстро анализировать многословные условия задач, выбирать из обширного набора решаемые, добиваться верного результата любыми средствами.

Что нужно для успеха? Прежде всего, умение читать задачу, увидеть в её описании путь к решению. Затем – опыт программирования, уверенное владение синтаксисом языка и инструментами отладки. Далее – знание стандартных приёмов решения задач, классических алгоритмов. И наконец, воля, внимание, стрессоустойчивость, умение работать и в команде, и самостоятельно.

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

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

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

Стилистика курса – креативность, соревновательность, сотрудничество.

Знания и умения, полученные в результате обучения

В результате обучения учащиеся получат следующие знания, умения и навыки.

  • Навыки работы с системами автопроверки, применяемыми на олимпиадах по программированию.
  • Навыки анализа объёмных постановок задач, примерной оценки сложности решения.
  • Умение использовать в программировании математические знания, анализировать свойства чисел.
  • Умение организовывать структурированные данные, размер которых определяется в ходе работы программы.
  • Навыки оценки вычислительной сложности алгоритма, объёма используемой при его реализации памяти.
  • Знания некоторых стандартных алгоритмов, часто применяемых в спортивном программировании.
  • Навыки организации командной работы на олимпиаде.
  • Оперативная информация о доступных олимпиадах по спортивному программированию, их особенностям и правилам.

Требования к начальному уровню знаний

Курс адресован школьникам 9-10 классов, уже владеющих навыками структурного и процедурного программирования.

Требования к начальному уровню знаний

Возрастное ограничение: с 9 класса школы.

Вступительный тест №ВПТ-538:

  1. Базовые математические знания, основы математической культуры.
  2. Опыт процедурного  программирования на языке С++ или Pascal:
    • Типы данных, их объявление.
    • Операторы консольного ввода и вывода, присваивания.
    • Операторы для организации циклов и ветвлений.
    • Массивы и стандартные алгоритмы работы с ними (поиск, нахождение максимума, сортировка, сдвиг и т.п.).
    • Создание процедур и функций, способы передачи данных между подпрограммами.
    • Владение приёмами работы со строками (выделение и поиск подстроки)
    • Знание классических численных алгоритмов (НОД, выделение цифр числа).

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

Учащиеся АИШ, успешно закончившие семестр «Процедурное программирование на С++» зачисляются без вступительного тестирования.

Программа курса

Занятие 1

Введение

  • Особенности спортивного программирования.
  • Олимпиады по программированию: виды, правила, способы оценки ответов.
  • Примеры задач.
  • Способы организации ввода и вывода, применяемые на олимпиадах.
  • Оценка начального уровня учащихся – индивидуальная мини-олимпиада.

Занятие 2

Искусство выбора решаемой задачи

  • Примеры олимпиадных пакетов задач.
  • Техника работы с условием задачи.
  • Тренинги (индивидуальные и командный) по оценке сложности задач.

Занятие 3

Математика в программировании

  • Примеры задач, где решение находится математически проще, чем программно.
  •  Краткая сводка полезных программисту сведений из математики.
  • Решение задач.
  • Командный тренинг.

Занятие 4

Основные типы данных

  • Числовые типы данных, их возможности и особенности.
  • Символы и строки.
  • Работа со «слишком большими числами».
  • Стандартные действия по анализу свойств чисел.
  • Командный тренинг – решение задач на технику работы с числами.

Занятие 5

Использование больших объёмов данных

  • Массивы. Организация динамических массивов.
  • Полезные алгоритмы, связанные с массивами.
  • Проблема ограничений по памяти при олимпиадном программировании.
  • Обзор специализированных типов данных (стеки, списки) и инструментов для их реализации.
  • Индивидуальный тренинг – технически сложные задачи.

Занятие 6

Перебор вариантов как метод поиска решения

  • Способы организации перебора.
  • Простой перебор с параметром, с заданным числом параметров.
  • Индуктивный перебор: генерация варианта на основе предыдущего.
  • Индивидуальный тренинг.

Занятие 7

Перебор вариантов как метод поиска решения (продолжение)

  • Рекурсия как способ организации перебора.
  • Альтернативы рекурсии.
  • Эффективность по времени, примеры.
  • Командный тренинг с выбором задач из большого набора.

Занятие 8

Тестирование программы

  • Тестовые данные в олимпиадном программировании.
  • Самотестирование программы. Типы тестовых данных в зависимости от способа оценки результатов.

Организация работы команды

  • Варианты распределения ролей в команде.
  • Командный тренинг - тактический разбор пакета заданий реальной олимпиады.

Занятие 9

Оптимизация поиска решения

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

Занятие 10

Графы и деревья

  • Примеры задач, моделируемых посредством графов.
  • Способы представления графов в программе.
  • Обзор некоторых алгоритмов, связанных с графами.
  • Решение задач

Занятие 11

Командная олимпиада по программированию

Занятие 12

Разбор заданий командной олимпиады

Индивидуальная олимпиада по программированию – экзамен