Спортивное программирование для школьников: 10 практических вопросов преподавателю

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

<i>Никита Анчутин</i>
Никита Анчутин

Мы задали 10 вопросов Никите Анчутину, который сам еще в школе занимался спортивным программированием, а сейчас преподает в «Золотом сечении» и «Буравчике», работает DevOps-инженером и руководителем образовательных программ в IT-компании Doubletapp. Никита даст советы и поможет разобраться в теме.

Что такое олимпиадное программирование?

Олимпиадное, или спортивное, программирование — решение задач по информатике в формате контестов. Контест — соревнование, где дают 5–6 задач, которые нужно решить в среднем за 3–4 часа. В условии описано, что нужно сделать, и обозначены ограничения по используемой памяти и времени работы программы.

Спортивное программирование для школьников: 10 практических вопросов преподавателю

Не путайте киберспорт и спортивное программирование, это разные вещи. Киберспорт — соревнования по компьютерным играм, олимпиадное программирование — по решению задач на время. Единственное, что объединяет эти виды спорта — компьютер, за которым нужно сидеть и что-то делать.

Что дает спортивное программирование?

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

Олимпиадное программирование повышает шансы попасть в желаемый университет. В России есть два способа поступить в вуз на бюджет — либо хорошо сдать экзамены, либо стать призером олимпиад. Я сам в школе почти никак не готовился к ЕГЭ по информатике, но в итоге получил 100 баллов, потому что активно решал олимпиадные задачи по программированию последние полтора года обучения. Более того, можно поступить в университет и без экзаменов, если стать призером или победителем олимпиады перечня РСОШ (Российский совет олимпиад школьников).

Это не вредно? Получается, что спортивное программирование формирует навык быстрого решения задач. Станет ли труднее решать задачи, требующие системного подхода?

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

Какое будущее после школы?

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

«Куда стоит поступать, если я выиграл олимпиаду по информатике?» — спросите вы. Большинство олимпиадников выбирают для учебы программистские направления в ФКН ВШЭ, ФИВТ МФТИ, КТ ИТМО, ВМК МГУ, СПбГУ. За пределами Москвы и Санкт-Петербурга — ФИИТ УрФУ и айтишные специальности в НГУ.

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

О том, какие перспективы открываются перед школьником с олимпиадным бэкграундом, подробно рассказал CEO Doubletapp Сергей Анчутин на лекции в курганской летней математический школе.

Не поздно ли начинать в одиннадцатом классе?

Никогда не поздно! Но советую начинать как можно раньше, потому что отборочные этапы олимпиад стартуют осенью, в начале учебного года. Я считаю, что обучение программированию стоит начинать с 5-го класса, в 11–12 лет. В этом возрасте уже есть базовые знания по математике, которые необходимы для старта.

Какие предметы нужно изучить, чтобы продвинуться в программировании?

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

Можно ли добиться успеха в программировании без сильной математической подготовки?

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

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

Как подготовиться к олимпиаде, какие есть лайфхаки, типичные ошибки и способы их избежать?

Решение задач — основной метод подготовки к олимпиаде. Советую каждый день решать задачи. Иногда смотреть теорию, когда не получается. Если готовитесь к конкретной олимпиаде — решайте типовые задачи прошлых лет, часто они размещаются на сайте организатора. Например, на сайте «Открытой олимпиады по программированию» есть история задач за последние 15 лет. Тренируйтесь на похожих заданиях, тогда увеличится шанс занять призовое место.

Внимательно читайте условия задач и обучайтесь этому скиллу. Если будете сразу видеть все нюансы в заданиях, сэкономите весомое количество времени на олимпиаде. Для этого введите себе правило — уделять больше времени на чтение и обдумывание условия и не спешить. Лучше выделить на 5–10% больше времени на каждую задачу, чем запрограммировать решение, определить, что поняли ее неправильно, и потратить еще столько же времени на переписывание кода целиком.

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

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

В сообществе можно найти единомышленников, друзей, с которыми будет интересно проводить время, не только обсуждая задачи и решая контесты, но и заниматься любимым хобби: например, играть в футбол, в «Что? Где? Когда?» и лежать в джакузи.

Александр Ложкин, Никита Анчутин, Артемий Рогов — преподаватели и друзья в «Золотом сечении», 2020 год
Александр Ложкин, Никита Анчутин, Артемий Рогов — преподаватели и друзья в «Золотом сечении», 2020 год

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

Какое программное обеспечение нужно установить для занятий и какие языки программирования учить?

На первых порах программное обеспечение подойдет любое, ноутбук — тоже. Можно писать в онлайн IDE, например replit.com. На занятиях в школе олимпиадного программирования учат пользоваться и устанавливать необходимое ПО. Если пишете на Python, то лучшим решением на длинной дистанции будет Pycharm — бесплатное IDE компании JetBrains. Многие профессиональные программисты пишут код здесь, поэтому опыт использования пригодится в будущем.

Что касается языка программирования — кто не умеет программировать, обычно начинает учиться на Python. Кто уже с навыками, тот выбирает язык, с которым удобно работать. Но есть некоторые ограничения. Например, если хотите добиться высоких результатов на всероссийской олимпиаде, то выбирайте C++. Чтобы стать призером или победителем перечневых олимпиад и поступить в вуз — достаточно Python.

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

Спортивное программирование для школьников: 10 практических вопросов преподавателю

Что можно посмотреть, почитать и изучить, чтобы прокачаться самостоятельно?

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

Теорию советую смотреть на YouTube. Кроме того, в Сети множество сайтов:

Для практики подойдут Codeforces, Timus Online Judge — здесь лежат тысячи задач и архив по различным темам. Также используйте сайт recommender.codedrills.io, который анализирует ваши посылки на codeforces и предлагает тренировки на конкретные темы с задачами.

Если решите все задания на платформах, то станете чемпионом!

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

Если вас заинтересовала тема олимпиадного программирования, то приходите 30 января в 17:00 мск на специальный прямой эфир на YouTube-канале Doubletapp. Никита Анчутин подробно расскажет об олимпиадах по информатике, работе в IT и школе олимпиадного программирования «Буравчик», где стартовал набор на весенний семестр. Задать вопрос можно в телеграм-канале, оставить заявку — на сайте.

2020
Начать дискуссию