Что нужно знать на олимпиаде по информатике

Что нужно знать на олимпиаде по информатике

Довольно интересный вопрос — почему на олимпиадах по информатике традиционно дают задачи только на программирование (написание программ), при том, что в стандартной школьной программе программирование занимает лишь малую часть времени, и есть много других тем? Я попробую как-то ответить на этот вопрос. Все, что я излагаю ниже (да и выше тоже), конечно, является только моим личным мнением.

Для начала, формальный ответ. Если говорить конкретно о Всероссийской олимпиаде школьников, то есть основной документ, регламентирующий ее проведение — это Порядок проведения Всероссийской олимпиады школьников. Он устанавливает (п. 35 и аналогичные), что олимпиада (начиная со школьного этапа!) проводится по заданиям, основанным на содержании образовательных программ углубленного уровня. Я не школьный учитель, и потому не могу уверенно рассуждать на тему того, что входит в такие программы, и в каком классе появляется первое программирование, но я нагуглил какие-то программы для 7-8 классов, и там программирование на паскале вполне есть. Поэтому формально то, что в олимпиадах за 8 и старше классы есть программирование, кажется, ничему не противоречит. Если в какой-то школе программирования в 8 классе не проходят, значит, у них какая-то не та программа, возможно, не углубленного уровня. (Более того, в контексте серьезного участия во ВсОШ имеет смысл обсуждать только 9 и старше классы, потому что по 8 и младше классам нет ни регионального этапа, ни Всероссийского, и потому вообще олимпиады ВсОШ младше 9 класса — это несерьезные олимпиады, их зачастую составляет неизвестно кто, и вот там-то бывает что программирования и нет.)

Но это формальный ответ, а по сути?

Ну, в-нулевых, да, название «Олимпиада по информатике» вносит определенную путаницу. Возможно, было бы правильнее называть такие олимпиады «олимпиадами по программированию», чтобы никаких вопросов не было. (Ну и что, что такого предмета нет — предмета «математика» в старших классах тоже нет, а олимпиада есть, или примерно то же самое с астрономией.) Но сейчас уже широко устоялось название именно «по информатике» (хотя название «по программированию» тоже нередко используется, например, в командных олимпиадах), поэтому можно было бы отговориться фразой «так исторически сложилось, а сейчас просто считайте, что слово “информатика” в контексте олимпиад обозначает “программирование”». Ну просто как такой термин вот с таким конкретным значением.

Но на самом деле есть и более глубокие причины. Они довольно неформальны и потому, конечно, с ними можно спорить. Но тем не менее, думаю, они объясняют, почему олимпиады по информатике, требующие чего-то помимо программирования, особого распространения не получили.

Во-первых, и, пожалуй, самое главное. Олимпиада — это не контрольная, это не ЕГЭ. Олимпиадные задачи должны не просто проверять школьные знания, и даже не проверять знания, более широкие, чем школьная программа. Олимпиадные задачи должны проверять, как участник думает, умеет ли он рассуждать, что-то придумывать, делать какие-то выводы. Олимпиадные задачи должны быть интересными; школьник, решивший олимпиадную задачу, должен в идеале узнать что-то новое, совершить мини-открытие, как бы избито эта фраза не звучала.

Поэтому в хороших олимпиадах по математике, даже в младших классах, никогда не будут давать задачу вида «вычислите значение выражения», если оно вычисляется довольно стандартными школьными методами. Там будут задачи на базовую логику, на умение рассуждать. В адекватной олимпиаде по русскому языку, на мой взгляд, не место заданиями «вставьте пропущенную букву» а-ля ЕГЭ. В адекватной олимпиаде по английскому языку не должно быть заданий в стиле TOEFL. В адекватной олимпиаде по праву не должно быть заданий, требующих просто вспомнить и напрямую применить ту или иную норму закона.

(На самом деле, я не имею особого опыта участия в олимпиадах что по русскому языку, что по английскому или по праву, поэтому, возможно, там задания такого вида встречаются. Более того, когда я учился в лицее 40, на «олимпиадах» по английскому языку задания были как раз взяты из тестов типа TOEFL. Но понятно, лицей 40 — не языковая гимназия, задачи олимпиад по английскому языку в лицее 40 не могут считаться образцом, и я надеюсь, что на серьезных олимпиадах по английскому дают более интересные задания. Ну или, возможно, это не так — тогда это обозначает, что мое видение олимпиад сильно отличается от того, как видят олимпиады составители заданий по английскому языку.)

Читайте также:  Как узнать пароль от своего wifi byfly

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

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

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

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

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

Еще одна причина, которую стоит упомянуть, состоит в том, что — опять-таки, в отличие от многих других предметов — в программировании существует огромное количество серьезных соревнований, не являющихся школьными олимпиадами, но тем не менее очень близких к ним по формату. Это многочисленные соревнования, проводимые крупными компаниями (Google Code Jam, Яндекс.Алгоритм, VK Cup и т.д.), а также ACM ICPC и т.д. Естественно, что школьные олимпиады чувствуют на себе влияние этих соревнований. Более того, наличие таких соревнований позволяет утверждать, что именно такой формат соревнований несет в себе определенную «практическую ценность» — что это не просто досужее развлечение группы ботаников, а действительно нужно много кому, иначе крупные компании не поддерживали бы олимпиадное движение так активно. Такая «практическая ценность» — очень и очень редкое явление в школьном образовании вообще, поэтому неудивительно, что ее надо учитывать.

Читайте также:  Установка kali linux на планшет

Тем не менее, все, что написано выше — это, конечно, неформальные и нестрогие причины, не являющиеся абсолютной истиной. Более того, лично я считаю, что олимпиады по информатике, как отдельная от олимпиад по программированию сущность, вполне имеют право на существование, если найдутся люди, готовые их адекватно и объективно организовывать. Другое дело, что, например, мне лично будет не очень интересно проводить такие олимпиады.

В частности, поскольку я все-таки председатель жюри Нижегородской городской олимпиады школьников по информатике им. В. Д. Лелюха, понятно, что вопрос отсутствия на нашей олимпиаде каких-либо задач, кроме задач по программированию, можно воспринимать и как претензию ко мне лично. Но на самом деле мой ответ на такого типа претензию будет очень простой: мы проводим такую олимпиаду, какую считаем нужной и какую умеем проводить. Тот факт, что она называется «городской олимпиадой по информатике» — это, на самом деле, фактически является решением городского департамента образования. Если, например, департамент решит, что им нужна отдельная олимпиада именно по информатике, то мы просто переименуем нашу олимпиаду во что-нибудь типа «Нижегородская олимпиада по программированию им. В. Д. Лелюха», и будем проводить ее как проводили.

    Ответы экспертов , 7 мая 2015 в 0:19

Скоро стартует вторая олимпиада Типичного программиста, и мы решили спросить у экспертов, как можно успешно к подготовится к подобным соревнованиям.

Михаил Рубинчик , менеджер Образовательные программы СКБ Контур, тренер команд УрФУ по спортивному программированию

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

Мы будем говорить про ACM ICPC, т.к. для таких олимпиад есть множество готовых рецептов. Прежде всего, нужно научиться решать задачи. Как ни странно, чтобы научиться решать задачи, нужно решать задачи 🙂 Поэтому самый верный путь для новичка такой: открываешь любой архив задач и решаешь по возрастанию сложности. Если вдруг какая-то задача уж очень долго не поддаётся, пропускаешь её и решаешь следующую. Если слишком много задач пропущены, то стоит посоветоваться с более опытным олимпиадником, нет ли там какого-то сакрального знания. Прорешивание архива задач – это самый важный на старте процесс. Например, можно использовать acm.timus.ru. А далее постепенно добавлять другие элементы: чтение книг и сайтов по алгоритмам (например, e-maxx.ru), участие в онлайн соревнованиях (codeforces.ru, opencup.ru).

Артём Зюрюкин , генеральный директор Zartis Russia

Можно поучаствовать в семинарах при университете, проводящем олимпиаду, а также найти тех, кто уже участвовал. Если вы планируете принять участие в международной олимпиаде (например, крупнейшей в мире ACM/ICPC), то найти тестовые задания и материалы для подготовки можно и на сайте самой олимпиады. Кроме того, полезным будет обсудить сложности с участниками сообществ выбранных олимпиад в социальных сетях.

Андрей Зырянов , руководитель научно-исследовательской лаборатории Parallels Lab в МФТИ

Олимпиады бывают разные. Отсюда и требования разные. Если “классические”, как ACM ICPC, то вам нужно начать решать задачи на acm.mipt.ru и judge.mipt.ru. Если по информационной безопасности (Capture The Flag) – изучать архитектуру ЭВМ, криптографию и сетевые протоколы. По разработке ПО (DevCup, ImagineCup, «Старт в науку») – изучать ООП и работать в команде над небольшими проектами. Залог эффективности – трудолюбие. Этим нужно заниматься, причем постоянно. Если нет прогресса в самостоятельном изучении, потребуется помощь преподавателей.

Роман Юферев , руководитель направления ИТ-менеджмента и мониторинга в компании VIAcode

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

Сергей Масягин , проректор по работе со студентами и абитуриентами Университета Иннополис

Для ответа на этот вопрос мы опросили чемпионов мира по программированию Николая Калинина, Геннадия Короткевича, Нияза Нигматуллина, Андрея Станкевича и Павла Маврина, которые сейчас тренируют новое поколение. Все они сходятся во мнении, что главное в этом вопросе – много практики. Обратите внимание на codeforces.ru, topcoder.com – периодически там бывают контесты, после которых на сайтах появляются разборы к ним. Также рекомендую к прочтению Programming Challenges, Miguel Skiena. Есть множество ресурсов, где можно найти теорию, таких как e-maxx.ru, habrahabr.ru.

Читайте также:  Drakensang online код ошибки 35

Антон Пискунов , основатель и генеральный директор BeastGaming

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

Сергей Зефиров , программист с широким опытом работы, энтузиаст и евангелист языка Haskell

Не готовиться к олимпиадам по программированию. Совсем.

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

Готовясь к олимпиадам, вы наработаете себе стиль и подход к программированию, который придётся довольно долго исправлять.

Всеволод Шмыров , разработчик в команде API Яндекс.Карт

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

Олег Горшков , руководитель отдела системной интеграции ecommerce-студии Simtech Development

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

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

1. Первое, что надо понять на олимпиадах по программированию, что перед вами задачи. А от вас хотят алгоритм решения этих задач. Притом вам на откуп дано около двадцати разных языков программирования, на каком писать – решать вам.

Состязание для школьников 5-11 классов. Победители и призеры финала получают льготы при поступлении в вузы —>

3. Всегда смотрите в регламенте олимпиады, что с собой можно принести на соревнование. Например, справочники по языку быстро помогут найти забытый синтаксис. Если вы пишете на C++, научитесь пользоваться сайтом en.cppreference.com/w. Если вы пишете на Python, научитесь пользоваться встроенной функцией help().

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

5. Олимпиада по информатике выгодно отличается от других. Одним из критериев является наличие тестирующей системы. Это очень хорошая штука, позволяющая избежать ошибок компиляции, но «ddos’ить» ее не стоит. Если тестирующая система полетит во время тура, скорее всего, компенсировать это время вам никто не будет.

6. Задачи зачастую подобраны так, чтобы по ним можно было получить частичный балл. Я знаю призеров всероса, которые не решили полностью ни одной задачи.

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

8. Если вы получаете WA на тесте из условия – это повод задуматься, что что-то вы делаете не так. Обязательно разбирайте лапками тесты из условия и тестируйте на них свои программы.

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

Редакция сайта 24 ноября 2017
Ссылка на основную публикацию
Что дает geforce experience
The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator...
Форге оф импаерс великие строения
Другое название: Кузница Империй Ниже мы приводим подробный гайд по игре Forge of Empires с советами как вам быстрее отстроить...
Форза хорайзен 3 список машин
Серия игр Forza всегда поражала количеством доступных автомобилей. На момент выхода игры доступно уже более 150 автомобилей, а разработчики обещают...
Что дает перепрошивка смартфона
К моему большому сожалению, такой огромный пласт гик-культуры, как прошивка смартфонов, очень мало обозревается на IT-сайтах. Но бьюсь об заклад,...
Adblock detector