Олимпиадное программирование итмо: Олимпиадная информатика Факультет информационных технологий и программирования – Университет ИТМО
Университет ИТМО делится опытом. Часть 2 / Блог компании Университет ИТМО / Хабр
Мы продолжаем рассказывать о курсе «How to Win Coding Competitions: Secrets of Champions», который Университет ИТМО запустил на платформе edX в этом году (первую часть материала читайте здесь).
Во второй части нашей беседы с авторами и инструкторами курса — Максимом Буздаловым и Павлом Кротковым, чемпионами ACM ICPC, и Дарьей Яковлевой, призером Google Code Jam for Women, речь пойдет о том, важен ли победителям олимпиад правильный настрой, как развить навык поиска креативных решений и кому будет полезен курс от чемпионов Университета ИТМО.
Michael Pollak / Flickr / CC
Настрой vs опыт: какую роль в победе играет психология
Максим Буздалов считает, что успех команды (или участника, если речь идет об одиночном соревновании) зависит от тренировок и слаженности работы, которые нарабатываются долгими часами практических занятий — чем больше участники тренируются, тем меньше их результат зависит от правильного настроя или его отсутствия.
Я бы не сказал, что «настрой» играет значительную роль в успехе. Чем выше уровень команды, тем выше интеллект ее участников, и тем реже работают методы самообмана, направленные на повышение уверенности в своих силах и на «поднятие духа»
— Максим Буздалов
А вот совместимость участников друг с другом, и их личные качества, по мнению Максима, играют очень большую роль. При этом некоторые из таких качеств — как положительных, так и отрицательных — могут проявиться только на финальном соревновании, от осознания ответственности: раньше команда отвечала только за себя, а в финале она представляет уже весь университет или даже страну. Пример из личного опыта Максима (чемпиона ACM ICPC 2009 года):
Разумеется, наличие встроенного в головы «боевого духа» может очень сильно помочь: так, наши соперники в 2009 году, команда университета Циньхуа, за последний час решили четыре, что ли, задачи, и вырвались на второе место, обеспечив себе золотую медаль и титул чемпиона Азии. Хороший пример…
… если бы не тот факт, что первое место заняли мы, которые, спустя несколько минут после начала последнего часа, сдали свою последнюю девятую задачу, и за оставшийся час не успели написать ничего толкового. Правда, мы, конечно же, не «опустили руки», просто ситуация сложилась таким образом, что все предыдущие четыре часа у нас были задачи в очереди на написание, а тут они внезапно кончились. Мы писали решение десятой задачи, но времени на нее нам не хватило
— Максим Буздалов
Команда Университета ИТМО-2016 на ACM ICPC: Адам Бардашевич, Антон Ковшаров, Андрей Станкевич (тренер) и Владимир Смыкалов
Павел Кротков уточняет — для команды профессионалов «заряженность на победу», возможно, и отходит на второй план, но вот начинающим участникам олимпиад без нее не обойтись:
Мой опыт говорит, что основное [для новичка] — это все-таки психология и стрессоустойчивость. Андрей Станкевич в шутку говорил, что для развития своей карьеры как тренера ему нужно получить образование психолога/психиатра
— Павел Кротков
Дарья Яковлева подчеркивает: если этап соревнования сразу не задался, у участников действительно могут «опуститься руки» — но бороться с проблемой эффективнее всего помогают дополнительные тренировки, а не какие-либо психологические приемы. Однако хорошее настроение и самочувствие перед началом соревнований отходят на второй план, если команда или кто-то из ее участников не испытывает особого интереса к процессу.
Люди, не испытывающие удовольствия от решения задач, конечно, не получат никаких призовых мест, просто не имеют шансов
— Максим Буздалов
Лайфхаки и советы
Мы предложили авторам курса «Как побеждать в соревнованиях по программированию: секреты чемпионов» поделиться советами и приемами, полезными в олимпиадном программировании — получилось несколько больших тем:
Практика
Практика, практика и ещё раз практика. Главный лайфхак — решать по одной задаче каждый день, даже в выходные, и не пропускать ни одного дня
— Дарья Яковлева
Максим Буздалов и Павел Кротков отмечают — постоянные тренировки помогают не просто добиваться успеха в решении задач, но и дают возможность предчувствовать правильный ход мысли. Однако одного онлайн-курса для развития такой способности будет явно мало (для его прохождения слушателям потребуется 4-6 часов в неделю) — придется ежедневно решать задачи (кстати, авторы курса в рамках занятий дают советы о том, как продолжать регулярные тренировки самостоятельно).
Чутье (или тонкая настройка в мозге эвристик, с помощью которых расставляются приоритеты в поиске направлений мысли) может быть развито только при решении очень большого числа задач. Нагрузка, предлагаемая курсом на эту тему — одна-три олимпиадных задачи в неделю в течение четырех недель — очевидно, недостаточна. Для развития чутья нужно длительно и регулярно решать олимпиадные задачи различной степени сложности (от субъективно легких до субъективно непосильных)
— Максим Буздалов
Когда ты видел тысячу задач на разные алгоритмы и идеи, понять, в каком направлении идти в поисках решения тысяча первой существенно проще. В этом смысле курс может заложить некую основу и показать хотя бы самые базовые темы и виды задач.
[Спортивное программирование] — это все-таки математика, и редко задачу можно решить методом, кардинально отличающимся от задуманного автором. Хотя и такое тоже бывает, и чтобы это увидеть, опять же, нужно иметь опыт решения разнообразных задач
— Павел Кротков
Парное программирование
Еще один совет от Павла — практиковаться в парном программировании. Такой подход позволяет экономить время команды и добиваться синергетического эффекта (задачу сокомандники решают уже не каждый по отдельности, а сообща):
Понятно, что в такой ситуации количество «мозгов», работающих над решением, удваивается, и решение должно появляться быстрее/более качественным
— Павел Кротков
Тактические решения во время олимпиады
Максим Буздалов дает совет, вполне применимый и для работы команды «промышленных» программистов в условиях жесткого дедлайна (например, когда нужно решить сразу несколько заранее известных, но не тривиальных задач в очень сжатые сроки):
Предположим, идет пятичасовое командное соревнование. В этом случае, все участники команды должны прочитать все нерешенные задачи к концу первого часа. Именно так. Таким образом, вы 1) найдете все простые задачи, и 2) сможете обсуждать на равных сложные задачи.
Расширением этой техники является бумажка, размеченная в виде таблички, на которой строчками выступают задачи, а столбцами — участники. В ячейках участник отмечает, что он прочитал условие задачи, а также вносит краткие комментарии (например, «задача на динамическое программирование по подмножествам»). Решенная задача вычеркивается. Таким образом, текущее состояние команды становится обозримым для самой команды
— Максим Буздалов
Изучение смежных областей
Еще один совет от Максима касается развития творческого мышления: помимо постоянной практики (которая закладывает определенные «паттерны» решения задач) иногда полезно заставлять себя думать нестандартно. Лучше всего на достижение этой цели «работает» изучение смежных дисциплин – от очевидных до сравнительно экзотических.
Есть такая «полуолимпиадная» дисциплина, называется «теория решения изобретательских задач». Я не могу сказать, что я являюсь в ней профессионалом — скорее, я работаю в этой сфере интуитивно — но в ней предлагаются некоторые высокоуровневые идеи, которые могут помочь в оптимизации и де-стандартизации процесса мышления.
Мне в свое время очень сильно помогли олимпиады по математике. В них, во-первых, большое разнообразие способов думать над задачей, а во-вторых, они приучают думать не одним способом из перечня, а, скорее, «выпуклой комбинацией» этих способов. Таким образом, каждая новая идея, придуманная или где-то увиденная, увеличивает вашу способность решать задачи не на одну идею, а на бесчисленное множество идей, появляющихся в результате гибридизации новых знаний и того, что вам уже известно.
Много читайте, причем не только в выбранной вами предметной области (предположим, computer science), но и в разных других областях (например, биология). Эти знания помогут вам находить решения задач в одних областях, пользуясь идеями и знаниями из других областей — и тем самым потрясать мир радикальными новыми взглядами
— Максим Буздалов
Robert Gourley / Flickr / CC
Как отдыхают победители олимпиад
Ежедневная практика, решение задач, изучение смежных областей знаний, учеба в вузе — кажется, что такие требования полностью исключают из жизни участников олимпиад какой-либо отдых. Максим, Павел и Дарья развеяли наши сомнения — хотя оказалось, что и во время отдыха чемпионов по программированию тянет кодить:
Если пытаться выделить что-то общее, я бы сказал, что настольные игры очень популярны. Но по большому счету каждый отдыхает по-своему
— Павел Кротков
Ребята любят играть в настольные игры, в которых нужно придумывать интересные стратегии, тактики для того, чтобы победить. Также программисты [-олимпиадники] любят активный отдых: футбол, волейбол, фрисби. Есть ребята, которые любят танцевать хастл. Участники очень разносторонние личности, и у каждого свои интересы
— Дарья Яковлева
Участники олимпиад — обычные люди, так что хобби и увлечения могут быть такими же, как и у других людей. Правда, программирование сейчас настолько большое, как область деятельности, и позволяет столько свободы, что программист может иметь в качестве хобби… программирование, просто отличающееся от того, которое является его работой.
Так, когда я участвовал в олимпиадах, из программистских хобби у меня были генетические алгоритмы (позднее выросшие в магистральное направление моей научной деятельности) и обработка звука. А «обычным» моим хобби уже больше десяти лет является игра на гитаре, сочинение музыки и свободная импровизация
— Максим Буздалов
Не только олимпиады: кому еще (кроме будущих чемпионов) полезен этот курс
Авторы курса отмечают: далеко не все из записавшихся собираются в ближайшем будущем участвовать в чемпионатах по программированию. Многие из тех, кто прошел курс, просто хотели узнать что-то новое в знакомой области или даже развить профессиональные навыки и сделать более привлекательным свое портфолио.
Да, курс полезен ИТ-специалистам. Он рассказывает о том, какие бывают соревнования по программированию, как в них участвовать, как решать олимпиадные задачи, какие методы использовать и как дальше развивать навыки решения задач. И все эти идеи можно применить и реализовать в ИТ-сфере
— Дарья Яковлева
Общение на форуме с некоторыми слушателями курса, показало, что некоторые ИТ-специалисты с помощью нашего курса вновь обрели веру в то, что программирование может быть интересным.
Как показывает опыт общения с различными программами и сайтами, многим ИТ-специалистам было бы неплохо пройти хотя бы базовый курс в области вычислительной сложности, чтобы хоть как-то понимать, на каких масштабах размеров данных их программы начнут тормозить, и что с этим делать. Этот курс (несмотря на название, разумеется) вполне может сыграть такую роль
— Максим Буздалов
Павел Кротков (который параллельно с преподаванием курса работает в Facebook) объясняет, почему ИТ-гигантам интересны программисты-олимпиадники:
С одной стороны, такие [олимпиадные] задачи, конечно, имеют мало общего с повседневной работой «промышленного» программиста. С другой, ведущие IT-компании (Google, Facebook – из мировых), Яндекс – из российских, как раз любят нанимать на работу людей с олимпиадами бекграундом. Более того, даже собеседования в эти компании имеют много общего с соревнованиями.
Я бы сказал, что прохождение такого собеседования (опыт успешного участия в соревнованиях) даёт возможность понять, что кандидат умеет «соображать» в условиях стресса и ограниченного времени.
В общем и целом, сам по себе курс скорее не поможет в повседневной работе, но может помочь начать лучше ориентироваться в области алгоритмов/математики тем, у кого в этой области есть пробелы. А само участие в соревнованиях, в целом, может помочь «не заржаветь» мозгам в случае, если работа иногда становится несколько скучной
— Павел Кротков
Добавим, что второй поток курса «Как побеждать в соревнованиях по программированию: секреты чемпионов» стартует 6 марта 2017 года, но записаться на него можно уже сейчас. Занятия продлятся 5 недель: для обучения понадобится знание английского и одного из популярных языков программирования (C++, Java или Python). Пройти обучение можно бесплатно (сертификат о прохождении обучения — если он вам понадобится — обойдется в $49). Ждем вас в числе слушателей курса и будущих победителей олимпиад!
Запущен онлайн-курс по программированию от университета ИТМО — шестикратного чемпиона ACM ICPC
Недавно Университет ИТМО запустил свой первый курс на крупнейшей в мире образовательной онлайн-платформе edX: How to Win Coding Competitions: Secrets of Champions («Как побеждать в соревнованиях по программированию: секреты чемпионов»). Курс бесплатный, на него может записаться любой желающий.
Один из его авторов, Максим Буздалов рассказывает о том, как когда-то занял последнее место в городской олимпиаде по информатике, а сейчас — чемпион крупнейшей студенческой олимпиады по программированию (ACM ICPC).
Мое последнее место в олимпиаде по информатике
Максим — доцент кафедры компьютерных технологий Университета ИТМО и чемпион ACM ICPC 2009 года. А программировать он начал давно, еще в детстве, на таком «агрегате», про который сейчас многие и не знают, а остальные уже забыли. Папа Максима собрал своему сыну компьютер-конструктор под названием «Радио 86РК» (самодельный 8-разрядный персональный компьютер, предназначенный для сборки из отдельных радиодеталей). Этот компьютер имел 16 килобайт памяти и два способа писать код — в «машинных кодах» (инструкции на уровне манипуляций с отдельными регистрами, с прописыванием вручную всех адресов переходов) и на Basic.
«Пришлось овладеть обоими способами, в указанном порядке», — говорит Максим.
Тогда же Максим начал участвовать в олимпиадах по физике и математике. Соревновательный дух прививали нынешнему чемпиону уже с третьего класса. Позже благодаря своему учителю информатики юный программист заинтересовался и олимпиадами по этому предмету, но, к сожалению, на городском уровне занял «почетное» последнее место.
«А потом пошло-поехало: диплом третьей степени на Всероссийской олимпиаде, поступление в ИТМО, ну а дальше — знаете…» — улыбается Максим Буздалов.
Не хочу работать на Google
Сегодня главная деятельность Максима в университете — это наука, а преподавание — лишь ее побочный эффект. Почему не только наука? Максим согласен с утверждением нобелевского лауреата по физике, Ричарда Фейнмана, о том, что ученому просто жизненно необходимо преподавать. Во-первых, потому что без этого можно разучиться внятно доносить свои мысли до других. Во-вторых, общение с молодежью замедляет старение. А в случае с Максимом преподавание помогает ему систематизировать и обобщать свои знания.
Несмотря на то, что чемпион уже не участвует в соревнованиях, а тренирует студентов, ему и сейчас поступает море предложений. Каждые полгода Google интересуется — не хочет ли он уже наконец-то работать у них? Только вот Максима интересует наука, он хочет ей заниматься и имеет такую возможность благодаря университету. Поэтому в корпорацию его ничем не заманишь.
Фейнмен когда-то сказал и о том, что ему нравится преуспевать в том, что у него никак не должно было получиться. Так и у Максима, который из ребенка, занявшего последнее место в школьной олимпиаде по информатике, превратился в преподавателя, ученого, в чемпиона ACM ICPC, который отказывает «гуглу» каждые полгода.
Секреты чемпионов
Когда Университету ИТМО поступило предложение от edX о запуске онлайн-курса на их платформе, тематика курса не была определена. Изначально возникла идея сделать лекции по «введению в олимпиадное программирование». Уже даже курс так назвали: «Introduction to Competitive Programming». Но затем название несколько изменилось, стало более ярким и привлекательным для слушателей, — «How to Win Coding Competitions: Secrets of Champions». Ведь гораздо интереснее узнать секреты чемпионов, чем только войти в курс дела благодаря «введению». Хотя суть осталась той же.
Несмотря на свое название этот курс больше о программировании, чем о том, как побеждать в соревнованиях. Автор курса замечает, что пока непонятно, как рассказывать в рамках онлайн-лекций о том, как именно побеждать. Ведь этому способствует еще и множество тренировок, к тому же требуется личное общение, разборы разных методов решения самых разных задач. Но ведь и не каждому быть чемпионом.
И все равно этот курс актуальный и полезный. Чемпион крупнейшей студенческой олимпиады считает, что эти соревнования стали популярными, к тому же их стало больше, но о них все равно надо рассказывать.
«Когда я был “маленьким”, было два-три таких ресурса, и, может быть, три-четыре серии регулярных соревнований — и все. Сейчас их намного больше», — считает Максим.
Университет ИТМО — не новичок в онлайн-образовании так же, как и Максим Буздалов. В этом году ИТМО запустил целых 15 курсов на Национальной платформе открытого образования, автором одного из них является Максим. Но курс на edX стал первым в своем роде — планировалось, что от курса на русском языке он будет отличаться всем.
Курс на русском языке, в котором Буздалов является одним из шести авторов, называется «Алгоритмы программирования и структуры данных». Он также о программировании. Но «Секреты чемпионов» на английском языке значительно от него отличаются. Он дает знания о том, чем являются олимпиады по программированию, какие есть ресурсы, какие бывают задачи и как их решать. И многие слушатели курса, действительно, стали изучать эти ресурсы.
«Также задачи, которые решают студенты, в основной массе взяты с реальных соревнований (правда, некоторые из этих соревнований школьные). Например, шесть из восьми задач первой недели — это задачи с первой базовой Интернет-олимпиады по информатике и программированию 2007 года (эти онлайн-олимпиады для школьников ИТМО проводит и сейчас). «Фишка» именно этого набора задач состоит в том, что «легенды» всех задач рассказывают, как эффективно вести себя на олимпиаде — например, там есть такие задачи, как «Готовьтесь к олимпиаде!», «Генерируйте тесты!», и даже «Расставьте стулья правильно!», — делится автор «Секретов чемпионов».
Да и сам экзамен, который еще предстоит сдавать слушателям по окончании курса, чтобы получить сертификат о его прохождении, будет копией соревнования по программированию. Экзамен продлится пять часов, а экзаменуемым будет дано восемь реальных олимпиадных задач.
В соавторстве с Максимом Буздаловым выступает Павел Кротков, также чемпион ACM ICPC. У обоих преподавателей накоплен опыт тренировок олимпиадных команд других университетов. На этих тренировках они часто делились разными идеями именно о том, как эффективно расходовать свое время на соревновании — особенно на командном, о том, как программировать, минимизируя число ошибок, и так далее. Авторы хотели уделить этому внимание в своем курсе, но, к сожалению, подобные идеи не ложатся в стандартный образовательный процесс, к тому же их можно отнести к«элитному контенту», который рассчитан уже на более опытных олимпиадников, а не для начинающих, кто как раз является целевой аудиторией курса.
Вообще, по словам Максима, этот курс для тех, кто уже способен писать какие-либо сложные программы на выбранном им языке программирования, но при этом еще не участвовал или имеет небогатый опыт участия в контестах по программированию и хочет прочувствовать дух этих соревнований.
Если опять вернуться к названию курса, то оно говорит о том, что в курсе пойдет речь именно о знакомстве с олимпиадами по программированию. Но, тем не менее, это название не отпугивает и новичков в этой области. А записалось таких не меньше четверти. Дело в том, что для слушателей на сайте открыт форум, где они могут писать как свое мнение о курсе, так и свои просьбы о помощи с заданиями.
Максим говорит, что первые дни после старта курса он «жил» на этом форуме. Автору поступало множество сообщений с edX, чуть ли не в сто раз больше, чем от подобного русского курса. Тогда терпеливому преподавателю приходилось много раз объяснять одно и то же.
«Приходится по много раз рассказывать, как открывать файлы и читать из них числа — даже с учетом того, что примеры на всех языках уже приведены в специальном разделе для этого. Но есть и довольно опытные участники — им содержания этого курса мало, они хотят больше разных алгоритмов для разных областей. Всем не угодить», — смеется Максим.
Вообще, перспектив после участия и победы в международной олимпиаде по программированию множество. Например, это предложения от Apple, Facebook, Google, IBM и многих других авторитетов, которые постоянно следят за подобными соревнованиями и выступающими на них программистами.
«Годами натренированное «чутье» в отношении того, что работает быстрее или точнее. Если такой человек еще и научится писать «читаемые» и поддерживаемые программы — что бывает не со всеми олимпиадниками — то как специалист он будет «рвать всех». Что и происходит, примеров много — от Романа Елизарова, сооснователя DevExperts, до команды олимпиадных программистов, составляющих интеллектуальное ядро компании MemSQL» — утверждает Максим Буздалов.
Конечно, его курс направлен на помощь начинающим программистам в подготовке к таким соревнованиям. Но сам автор советует не ограничиваться только курсом, но и тренироваться самому. Максим до своей победы в финале ACM ICPC три с половиной года в среднем решал по полторы пятичасовых тренировки в неделю. Кроме того, будущий чемпион проводил много времени, решая задачи, вне этих тренировок. Но сам он при этом заявляет, что среди участников был еще и не самым упорным!
Образование будущего
Благодаря своему опыту работы в университете и в онлайн-обучении у доцента кафедры компьютерных технологий и автора онлайн-курсов сложилось свое видение будущего сферы образования: оно будет состоять из трех уровней. Классическое образование будет самым элитным и очень дорогим. Следующий уровень — это онлайн-образование с прямым подключением к лектору и возможностью задавать вопросы. И затем уже — массовое онлайн-образование, где преподаватель сделал все возможное, чтобы 95 – 99.9% вопросов решались без его участия: самими слушателями или компьютерами. Но такую перспективу Максим видит через много-много лет, когда число людей перевалит за десяток-другой миллиардов.
А у самого Максима пока в планах улучшение и расширение существующих курсов, а также есть мысль сделать продвинутый курс по вычислительной геометрии. Но о будущем образования и дате курса Максима Буздалова по вычислительной геометрии нам остается только гадать.
Спортивное программирование — Lurkmore
НЯ! Эта статья полна любви и обожания. Возможно, стоит добавить ещё больше? |
В эту статью нужно добавить как можно больше лулзов, сфейлившихся участников, фотографий, заданий и программ-решений. Также сюда можно добавить интересные факты, картинки и прочие кошерные вещи. |
Типичный участник
Спортивное программирование (олимпиадное программирование, олимпиады по программированию, англ. competitive programming) — решение весёлых и неповторимых абстрактных задач задротами-школьниками и к ним приравненными.
В зависимости от формата и степени доставления участникам бывают:
- алгоритмические — несколько задач на контест, которые возможно решить полностью или чуть менее, чем полностью.
- оптимизационные — одна большая задача, полного решения не существует. Оценивается насколько далеко продвинулось решение участника(ов). В некоторых задачах решения участников взаимодействуют (игры).
- исследовательские — как в ICFPC, где очки могут начисляются за успешное обнаружение чего-то в объекте.
Решением обычно является программа на одном из установленных языков программирования. Она компилится на сервере, запускается в сандбоксе, читает ввод из stdin или файла и таким же образом выводит результат. Красота да и только.
По разным форматам правил проводятся региональные и мировые онсайт-соревнования, интернет-соревнования и онсайт-финалы, ну или просто соревнование проводится один раз в год.
Также существуют сайты, позволяющие задрачивать в любое время суток.
Наиболее успешны обычно те, кто начинает упарываться со школьного возраста.
Особо преуспел как в подготовке спортсменов-программистов, так и в распиаривании этой деятельности, Университет ИТМО.
В этой стране ICFPC широко популяризировался после этого поста. В 2010 году в топ 100 ICFPC русских комманд было сильно много.
[править] Форматы правил
ACM — для студентов вузов. Длительность 5 часов. Сдача решений проводится интерактивно, то есть отправленное решение сразу компилируется на сервере и сообщается результат прогона на тестах.
Участвовать в финале чемпионата мира студент может только 2 раза (в отборочных региональных — 5 раз), поэтому топовый вуз будет терять до 3 лучших участников раз в 2 года и должен готовить новое мясо.
Правила ACM являются наиболее популярными также и для разных местных, не связанных с ACM, соревнований (как личных, так и командных).
ACM плюс — то же самое, что и ACM, но за успешно задачу начисляется не одно очко, а 1 минус 0.2*количество неудачных попыток по ней, поэтому задача, сданная с 6-й попытки или после, ухудшает результат участника.
IOI — для школьников. Решений можно слать много, уже несколько лет можно узнать результаты проверки прямо на контесте и в случае фейла засабмитить с еще одним костылём. К сожалению, чтобы не превращать в ACM, были придуманы токены — две шняги с регеном в полчаса, которые сообщают полные резы (без них доступно только на части тестов). Количество баллов за задачу зависит от количества пройденных тестов (максимальное = 100, иногда дотягивают до 110).
Topcoder algorithm — для всех желающих. Уникально тем, что вполне полноценно можно играть в одном java-клиенте и не имея у себя никаких компиляторов. Проверка же решений неинтерактивная, то есть о фейле можно узнать в самом конце. Есть веселая возможность попытаться сфейлить решение другого участника, скормив ему неудобоваримые входные данные (но соответствующие условию задачи). Алсо, самый благоприятный для читеров формат.
Google Code Jam — участники получают на каждую попытку рандомно сгенерированный тест и прогоняют его у себя. Поэтому можно использовать почти любой язык.
ICFPC — оптимизационная или исследовательская задача. На трое суток командой. Поэтому оно больше похоже на настоящее программирование, и не нацелено на школоту.
Кто соснул? — тоже командная игра, но уже нацеленная на школоту. На любимом языке программирования решается некая задача и сравнивается с решениями на ЯП оппонентов. Результат сравнения трактуется в свою пользу. В ход идут подручные предметы. Популярно в /pr/ при подготовке к олимпиадам и просто так.
Поддерживает работу тестирующей системы, зоопарка компиляторов, пишет задачи, тесты и эталонные решения к задачам, а также отвечает на вопросы участников трёхзначной булевой логикой: YES, NO, NO COMMENT (самый частый ответ). Иногда жюри фейлит и вставляет в набор тесты, не соответствующие условию, и обнаружив это, делает повторное тестирование на исправленном наборе тестов — реджадж. Или не делает.
Короткевич (справа) второй раз выигрывает ICPC
- Билл Пучер (Паучер) — бессменный директор ACM ICPC, большой любитель классической музыки.
- Андрей Станкевич — вице-директор Северо-Западного полуфинала АСМ (Россия и СНГ), призёр финалов ICPC 2000 и 2001 года, и вообще тот, на ком сейчас держится вся подготовка команд ИТМО.
- Геннадий Короткевич aka tourist — студент ИТМО из Бульбостана, выступающий за Россию. Обычно считается самым сильным олимпиадником, что подтверждают запредельный рейтинг на этих ваших Codeforces и первые места на IOI, ICPC, Google Code Jam, VK Cup, Topcoder Open, Яндекс. Алгоритм и т. д. и т. п. А чем можешь похвастаться ты, юный падаван?
- Пётр Митричев aka Petr — до прихода Гены был однозначно лучшим (40+ фактов о Пете Митричеве), но вопрос о том, кто сильнейший, ещё открыт. Обе попытки в финалах ACM ICPC частично зафейлил: команда МГУ занимала 2-е места.
- Снарк — имеет бороду, ведёт открытый кубок (OpenCup), являющийся зеркалом разноместных онсайт-контестов по правилам ACM, также любитель придумывать новые правила для своих собственных контестов.
- Владислав Исенбаев aka Winger — студент ИТМО, победивший в финале ACM 2009 года и зафейливший две последующие попытки попасть в финал, проиграв другой команде собственного университета.
- Степан Гатилов — студент НГУ, получивший у Медведева отмазку за пропуски инъяза
- Томек Чайка — пшек. Выигрывал как Topcoder Open, так и ACM ICPC. Один из участников знаменитой сумасшедшей IT вечеринки (фотография сделана в 1997 году в польском математическом лагере, собравшем победителей региональных математических олимпиад для подготовки к международным олимпиадам).
- Ferlon — яркий пример фимоза на почве задротства.
- могут ли олимпиадники заниматься настоящим программированием?
- нужна ли популяризация олимпиадного программирования?
- нужно ли использовать макросы?
- Аргументы за
- Алгоритмы нужны для разработки чего-то большого и нового. Такую систему, как поиск гугла, невозможно спроектировать с помощью обычных приёмов декомпозиции и паттернов программирования.
- Не удивительно потому, так как крупные корпорации уделяют особое внимание этим соревнованиям и самим олимпиадникам. Победители мировых олимпиад 2000 и 2001 годов Андрей Лопатин и Николай Дуров работали на благо этого вашего Вконтактика.
- Алгоритмы это наше всё!!!!1111расрас
- Против
- Олимпиадные задачи могут вообще не иметь никакого отношения к практическому программированию. Например, решение может сводиться к вычислению аналитического выражения или выводу на печать константы (да-да, и такое бывает), то есть к области чистой математики. Как правило код, написанный олимпиадниками никто, включая самого автора, потом не поймёт. В серьёзном промышленном программировании, понятный и сопровождаемый код с чёткой архитектурой ценится несравненно выше чем замысловатый и в разы более быстрый, так как зачастую стоимость вычислительных ресурсов ничтожна по сравнению со стоимостью разработки и поддержки. Кроме того оптимизировать, например писать ассемблерные вставки или использовать нетривиальные алгоритмы, имеет смысл только отлаженный код и только в узких местах.
- Задачи, имеющие отношение к компьютерной тематике (например формат PCX или скан-коды клавиатуры) часто содержат ошибки, что как бы намекает на плохие познания авторов в компьютерах.
- Ряд задач сводится к тому, чтобы закодить алгоритм, который есть в учебнике, но которого нет в стандартной библиотеке (типа максимального паросочетания или минимального разреза).
- Решения олимпиадных задач очень короткие (обычно менее 200 строк), которые можно отладить с помощью грубой силы, напильника и кувалды.
- Для решения используются самые базовые средства, чтобы сделать соревнования доступными для как можно большего числа участников. Поэтому можно даже не знать язык, на котором пишешь.
- Заюзать какую-нибудь стороннюю библиотеку хер получится. Алсо, с этим связан фап на java BigInteger, пусть и неудобный, но доступный из коробки (в связи с этим авторы изобретают особо хитрожопые задачи, где длинная арифметика есть, а этот класс бесполезен; давать задачи, где очевидно применение BigInteger считается моветоном).
- О звёздах прошлого обычно ничего примечательного неизвестно, разве только они переходят из участников в жюри. Вероятнее всего, у этого есть свои причины. Так Николай Дуров (брат того самого) сам убрал себя из списка создателей Контакта (возможно, опасаясь славы и троллей).
[править] Фабулы условий задач
К каждой задаче обычно придумывают сюжет. Иногда сюжет для уже готовых задач ВНЕЗАПНО меняют перед самым контестом, доставляя немало сюрпризов читающему её. Сюжет как правило не имеет с содержанием ничего общего, а также вводит в заблуждение Медведева.
- Примеры
Штирлиц и Мюллер играют в занятную игру, стреляя по очереди. После каждого выстрела кто-нибудь в очереди умирает. Если у еврея не осталось соседей, он в ужасе сам накладывает на себя руки. Пусть в очереди изначально было N человек и Штирлиц хочет убить последнего. Сможет ли он это сделать, если оба игрока будут действовать наилучшим образом? |
Организация «Кот в танке» хочет захватить мир. Но у них возникла проблема… |
Внимательный читатель может заметить, что (спойлер: «Кот в танке» — анаграмма одного хорошо известного в этой стране сайта (спойлер: ВКонтакте))
Вам дано дерево, сплошь усеянное бобрами. … «Боброжуй-0xFF» работает по следующему принципу: находясь в некоторой вершине u, он может перейти к вершине v, если они соединены ребром, и съесть ровно одного бобра из тех, что находятся в вершине v. |
В Банановой республике очень много холмов, соединенных мостами. На химическом заводе произошла авария, в результате чего испарилось экспериментальное удобрение «зован». На следующий день выпал цветной дождь, причем он прошел только над холмами, в некоторых местах падали красные капли, в некоторых — синие, а в остальных — зеленые, в результате чего холмы стали соответствующего цвета. Президенту Банановой республики это понравилось, но ему захотелось покрасить мосты между вершинами холмов так, чтобы мосты были покрашены в цвет холмов, которые они соединяют. |
Была на одном соревновании задача, в которой авторы сумели особенно отличиться: «В этой задаче нет лихо закрученной формулировки, за уши притянутой к деятельности фирмы СКБ Контур. Более того, в этой задаче вообще нет формулировки».
Ну и клюква иногда тоже встречается, куда ж без неё.
Спортивное программирование — это не баг, это фича! | |
---|---|
О спорт, ты — мир! | |
---|---|
Олимпиады университет итмо.
Запущен онлайн-курс по программированию от университета итмо — шестикратного чемпиона acm icpc Итмо олимпиада по информатике задания прошлых лет
Недавно Университет ИТМО запустил свой первый курс на крупнейшей в мире образовательной онлайн-платформе edX: How to Win Coding Competitions: Secrets of Champions («Как побеждать в соревнованиях по программированию: секреты чемпионов»).
Курс бесплатный, на него может записаться любой желающий.
Мое последнее место в олимпиаде по информатике
Максим — доцент кафедры компьютерных технологий Университета ИТМО и чемпион ACM ICPC 2009 года. А программировать он начал давно, еще в детстве, на таком «агрегате», про который сейчас многие и не знают, а остальные уже забыли. Папа Максима собрал своему сыну компьютер-конструктор под названием «Радио 86РК» (самодельный 8-разрядный персональный компьютер, предназначенный для сборки из отдельных радиодеталей). Этот компьютер имел 16 килобайт памяти и два способа писать код — в «машинных кодах» (инструкции на уровне манипуляций с отдельными регистрами, с прописыванием вручную всех адресов переходов) и на Basic.
«Пришлось овладеть обоими способами, в указанном порядке», — говорит Максим.
Тогда же Максим начал участвовать в олимпиадах по физике и математике. Соревновательный дух прививали нынешнему чемпиону уже с третьего класса. Позже благодаря своему учителю информатики юный программист заинтересовался и олимпиадами по этому предмету, но, к сожалению, на городском уровне занял «почетное» последнее место.
«А потом пошло-поехало: диплом третьей степени на Всероссийской олимпиаде, поступление в ИТМО, ну а дальше — знаете…» — улыбается Максим Буздалов.
Не хочу работать на Google
Сегодня главная деятельность Максима в университете — это наука, а преподавание — лишь ее побочный эффект. Почему не только наука? Максим согласен с утверждением нобелевского лауреата по физике, Ричарда Фейнмана, о том, что ученому просто жизненно необходимо преподавать. Во-первых, потому что без этого можно разучиться внятно доносить свои мысли до других. Во-вторых, общение с молодежью замедляет старение. А в случае с Максимом преподавание помогает ему систематизировать и обобщать свои знания.
Несмотря на то, что чемпион уже не участвует в соревнованиях, а тренирует студентов, ему и сейчас поступает море предложений. Каждые полгода Google интересуется — не хочет ли он уже наконец-то работать у них? Только вот Максима интересует наука, он хочет ей заниматься и имеет такую возможность благодаря университету. Поэтому в корпорацию его ничем не заманишь.
Фейнмен когда-то сказал и о том, что ему нравится преуспевать в том, что у него никак не должно было получиться. Так и у Максима, который из ребенка, занявшего последнее место в школьной олимпиаде по информатике, превратился в преподавателя, ученого, в чемпиона ACM ICPC, который отказывает «гуглу» каждые полгода.
Секреты чемпионов
Когда Университету ИТМО поступило предложение от edX о запуске онлайн-курса на их платформе, тематика курса не была определена. Изначально возникла идея сделать лекции по «введению в олимпиадное программирование». Уже даже курс так назвали: «Introduction to Competitive Programming». Но затем название несколько изменилось, стало более ярким и привлекательным для слушателей, — «How to Win Coding Competitions: Secrets of Champions». Ведь гораздо интереснее узнать секреты чемпионов, чем только войти в курс дела благодаря «введению». Хотя суть осталась той же.
Несмотря на свое название этот курс больше о программировании, чем о том, как побеждать в соревнованиях. Автор курса замечает, что пока непонятно, как рассказывать в рамках онлайн-лекций о том, как именно побеждать. Ведь этому способствует еще и множество тренировок, к тому же требуется личное общение, разборы разных методов решения самых разных задач. Но ведь и не каждому быть чемпионом.
И все равно этот курс актуальный и полезный. Чемпион крупнейшей студенческой олимпиады считает, что эти соревнования стали популярными, к тому же их стало больше, но о них все равно надо рассказывать.
«Когда я был “маленьким”, было два-три таких ресурса, и, может быть, три-четыре серии регулярных соревнований — и все. Сейчас их намного больше», — считает Максим.
Университет ИТМО — не новичок в онлайн-образовании так же, как и Максим Буздалов. В этом году ИТМО запустил целых 15 курсов на Национальной платформе открытого образования, автором одного из них является Максим. Но курс на edX стал первым в своем роде — планировалось, что от курса на русском языке он будет отличаться всем
.
Курс на русском языке, в котором Буздалов является одним из шести авторов, называется «Алгоритмы программирования и структуры данных». Он также о программировании. Но «Секреты чемпионов» на английском языке значительно от него отличаются. Он дает знания о том, чем являются олимпиады по программированию, какие есть ресурсы, какие бывают задачи и как их решать. И многие слушатели курса, действительно, стали изучать эти ресурсы.
«Также задачи, которые решают студенты, в основной массе взяты с реальных соревнований (правда, некоторые из этих соревнований школьные). Например, шесть из восьми задач первой недели — это задачи с первой базовой Интернет-олимпиады по информатике и программированию 2007 года (эти онлайн-олимпиады для школьников ИТМО проводит и сейчас). «Фишка» именно этого набора задач состоит в том, что «легенды» всех задач рассказывают, как эффективно вести себя на олимпиаде — например, там есть такие задачи, как «Готовьтесь к олимпиаде!», «Генерируйте тесты!», и даже «Расставьте стулья правильно!», – делится автор «Секретов чемпионов».
Да и сам экзамен, который еще предстоит сдавать слушателям по окончании курса, чтобы получить сертификат о его прохождении, будет копией соревнования по программированию. Экзамен продлится пять часов, а экзаменуемым будет дано восемь реальных олимпиадных задач.
В соавторстве с Максимом Буздаловым выступает Павел Кротков
, также чемпион ACM ICPC. У обоих преподавателей накоплен опыт тренировок олимпиадных команд других университетов. На этих тренировках они часто делились разными идеями именно о том, как эффективно расходовать свое время на соревновании — особенно на командном, о том, как программировать, минимизируя число ошибок, и так далее. Авторы хотели уделить этому внимание в своем курсе, но, к сожалению, подобные идеи не ложатся в стандартный образовательный процесс, к тому же их можно отнести к«элитному контенту», который рассчитан уже на более опытных олимпиадников, а не для начинающих, кто как раз является целевой аудиторией курса.
Вообще, по словам Максима, этот курс для тех, кто уже способен писать какие-либо сложные программы на выбранном им языке программирования, но при этом еще не участвовал или имеет небогатый опыт участия в контестах по программированию и хочет прочувствовать дух этих соревнований.
Если опять вернуться к названию курса, то оно говорит о том, что в курсе пойдет речь именно о знакомстве с олимпиадами по программированию. Но, тем не менее, это название не отпугивает и новичков в этой области. А записалось таких не меньше четверти. Дело в том, что для слушателей на сайте открыт форум, где они могут писать как свое мнение о курсе, так и свои просьбы о помощи с заданиями.
Максим говорит, что первые дни после старта курса он «жил» на этом форуме. Автору поступало множество сообщений с edX, чуть ли не в сто раз больше, чем от подобного русского курса. Тогда терпеливому преподавателю приходилось много раз объяснять одно и то же.
«Приходится по много раз рассказывать, как открывать файлы и читать из них числа — даже с учетом того, что примеры на всех языках уже приведены в специальном разделе для этого. Но есть и довольно опытные участники — им содержания этого курса мало, они хотят больше разных алгоритмов для разных областей. Всем не угодить», – смеется Максим.
Вообще, перспектив после участия и победы в международной олимпиаде по программированию множество. Например, это предложения от Apple, Facebook, Google, IBM и многих других авторитетов, которые постоянно следят за подобными соревнованиями и выступающими на них программистами.
«Годами натренированное «чутье» в отношении того, что работает быстрее или точнее. Если такой человек еще и научится писать «читаемые» и поддерживаемые программы — что бывает не со всеми олимпиадниками — то как специалист он будет «рвать всех». Что и происходит, примеров много — от Романа Елизарова, сооснователя DevExperts, до команды олимпиадных программистов, составляющих интеллектуальное ядро компании MemSQL» – утверждает Максим Буздалов.
Конечно, его курс направлен на помощь начинающим программистам в подготовке к таким соревнованиям. Но сам автор советует не ограничиваться только курсом, но и тренироваться самому. Максим до своей победы в финале ACM ICPC три с половиной года в среднем решал по полторы пятичасовых тренировки в неделю. Кроме того, будущий чемпион проводил много времени, решая задачи, вне этих тренировок. Но сам он при этом заявляет, что среди участников был еще и не самым упорным!
Образование будущего
Благодаря своему опыту работы в университете и в онлайн-обучении у доцента кафедры компьютерных технологий и автора онлайн-курсов сложилось свое видение будущего сферы образования: оно будет состоять из трех уровней. Классическое образование будет самым элитным и очень дорогим. Следующий уровень — это онлайн-образование с прямым подключением к лектору и возможностью задавать вопросы. И затем уже — массовое онлайн-образование, где преподаватель сделал все возможное, чтобы 95 – 99.9% вопросов решались без его участия: самими слушателями или компьютерами. Но такую перспективу Максим видит через много-много лет, когда число людей перевалит за десяток-другой миллиардов.
А у самого Максима пока в планах улучшение и расширение существующих курсов, а также есть мысль сделать продвинутый курс по вычислительной геометрии. Но о будущем образования и дате курса Максима Буздалова по вычислительной геометрии нам остается только гадать.
Университет ИТМО ежегодно проводит цикл интернет-олимпиад по информатике. Принять участие в них могут все желающие, вне зависимости от класса обучения. В числе организаторов — члены жюри Всероссийской командной олимпиады школьников по программированию…
Обычно первая часть учебного года отводится под командные олимпиады, а заключительная — под личные. Школьники сами выбирают в какой из двух номинаций участвовать (базовой или усложненной).
Задания каждой отдельной олимпиады не только уникальные, но и интересные, где-то даже веселые: в качестве темы чаще всего выступает какой-нибудь только что вышедший фильм или мультфильм. Некоторые соревнования проводятся по задачам самых авторитетных прошедших интеллектуальных мероприятий, таких как Всероссийская командная олимпиада школьников по программированию, Индивидуальная олимпиада по информатике и программированию и других.
Что нового
Как участвовать
- Дождитесь публикации на официальном сайте расписания интернет-олимпиад.
- Зарегистрируйте себя или свою команду из трех человек, указав номинацию (базовую или усложненную).
- Выберите олимпиаду или участвуете в каждой. Для этого в нужный день вооружитесь компьютером с выходом в интернет.
- Решайте заданий.
- Узнайте результаты, смотрите разбор задач.
- Готовьтесь к следующему соревнованию.
Что особенного
Как готовиться
Посмотрите видеолекции по подготовке к олимпиадам по информатике
Их записывают сами составители заданий, организаторы и члены жюри олимпиады.
Академия акварели и изящных искусств Сергея Андрияки
Академия федеральной службы безопасности Российской Федерации
Академия Федеральной службы охраны Российской Федерации
Алтайский государственный педагогический университет
Алтайский государственный технический университет им. И.И. Ползунова
Алтайский государственный университет
Амурский государственный университет
Амурский гуманитарно-педагогический государственный университет
Астраханский государственный архитектурно-строительный университет
Байкальский государственный университет
Башкирский государственный университет
Белгородский государственный национальный исследовательский университет
Белгородский государственный технологический университет им. В.Г. Шухова
Биологический факультет Московского государственного университета имени М.В. Ломоносова
Бурятский государственный университет
Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых
Волгоградский государственный социально-педагогический университет
Волгоградский государственный технический университет
Волгоградский государственный университет
Волжский государственный университет водного транспорта
Воронежский государственный педагогический университет
Воронежский государственный технический университет
Воронежский государственный университет
Воронежский государственный университет инженерных технологий
Глазовский государственный педагогический институт имени В.Г. Короленко
Государственный социально-гуманитарный университет
Государственный университет «Дубна»
Государственный университет морского и речного флота имени адмирала С. О. Макарова
Дальневосточный государственный университет путей сообщения
Дальневосточный федеральный университет
Донской государственный технический университет
Забайкальский государственный университет
Ивановский государственный энергетический университет имени В. И. Ленина
Ижевский государственный технический университет имени М.Т. Калашникова
Институт криптографии, связи и информатики Академии федеральной службы безопасности Российской Федерации
Иркутский государственный университет путей сообщения
Иркутский национальный исследовательский технический университет
Кабардино-Балкарский государственный университет им. Х. М. Бербекова
Казанский государственный энергетический университет
Казанский национальный исследовательский технический университет им. А.Н. Туполева — КАИ
Казанский национальный исследовательский технологический университет
Казанский (Приволжский) федеральный университет
Калужский государственный университет им. К.Э. Циолковского
Кемеровский государственный университет
Ковровская государственная технологическая академия имени В.А. Дегтярева
Красноярский государственный педагогический университет им. В.П. Астафьева
Крымский федеральный университет имени В.И. Вернадского
Кубанский государственный технологический университет
Липецкий государственный технический университет
Лицей Национального исследовательского университета «Высшая школа экономики»
МИРЭА — Российский технологический университет
Мордовский государственный педагогический институт им. М.Е. Евсевьева
Морской государственный университет имени адмирала Г.И. Невельского
Московская государственная художественно-промышленная академия им. С. Г. Строганова
Московский авиационный институт (национальный исследовательский университет) (МАИ)
Московский автомобильно-дорожный государственный технический университет
Московский городской педагогический университет
Московский государственный институт международных отношений (Университет) МИД России
Московский государственный лингвистический университет
Московский государственный психолого-педагогический университет
Московский государственный технический университет гражданской авиации
Московский государственный технический университет им. Н.Э. Баумана (национальный исследовательский университет)
Московский государственный технологический университет «СТАНКИН»
Московский государственный университет геодезии и картографии
Московский государственный университет имени М.В. Ломоносова
Московский государственный университет технологий и управления им. К.Г. Разумовского (ПКУ)
Московский государственный юридический университет имени О.Е. Кутафина
Московский кадетский корпус «Пансион воспитанниц Министерства обороны Российской Федерации»
Московский педагогический государственный университет
Московский политехнический университет
Московский технический университет связи и информатики
Московский физико-технический институт (национальный исследовательский университет)
Мурманский арктический государственный университет
Национальный институт финансовых рынков и управления
Национальный исследовательский Мордовский государственный университет им. Н.П. Огарева
Национальный исследовательский Московский государственный строительный университет
Национальный исследовательский технологический университет «МИСиС»
Национальный исследовательский Томский государственный университет
Национальный исследовательский Томский политехнический университет
Национальный исследовательский университет «Высшая школа экономики»
Национальный исследовательский университет ИТМО
Национальный исследовательский университет «МИЭТ»
Национальный исследовательский университет «МЭИ»
Национальный исследовательский ядерный университет «МИФИ»
Нижегородская государственная консерватория им. М.И. Глинки
Нижегородский государственный архитектурно-строительный университет
Нижегородский государственный лингвистический университет им. Н. А. Добролюбова
Нижегородский государственный педагогический университет имени Козьмы Минина
Нижегородский государственный технический университет им. Р.Е. Алексеева
Нижегородский государственный университет им. Н.И. Лобачевского
Нижнетагильский государственный социально-педагогический институт (филиал) Российского государственного профессионально-педагогического университета
Новгородский государственный университет имени Ярослава Мудрого
Новосибирский государственный технический университет
Новосибирский государственный университет архитектуры, дизайна и искусств
Новосибирский национальный исследовательский государственный университет
Норильский государственный индустриальный институт
Омский государственный технический университет
Омский государственный университет им. Ф.М. Достоевского
Омский государственный университет путей сообщения
Оренбургский государственный университет
Орловский государственный университет имени И. С. Тургенева
Пензенский государственный технологический университет
Пензенский государственный университет
Пензенский государственный университет архитектуры и строительства
Первый Московский государственный медицинский университет им. И.М.Сеченова
Пермский государственный национальный исследовательский университет
Петербургский государственный университет путей сообщения Императора Александра I
Петрозаводский государственный университет
Поволжский государственный университет телекоммуникаций и информатики
Православный Свято-Тихоновский гуманитарный университет
Псковский государственный университет
Пятигорский государственный университет
Российская академия живописи, ваяния и зодчества Ильи Глазунова
Российская академия народного хозяйства и государственной службы при Президенте Российской Федерации
Российская экономическая школа
Российский государственный аграрный университет — МСХА имени К.А. Тимирязева
Российский государственный гуманитарный университет
Российский государственный педагогический университет имени А. И. Герцена
Российский государственный университет нефти и газа (национальный исследовательский университет) имени И.М. Губкина
Российский государственный университет правосудия
Российский православный университет святого Иоанна Богослова
Российский университет дружбы народов
Российский университет транспорта (МИИТ)
Российский химико-технологический университет имени Д.И. Менделеева
Российский экономический университет имени Г.В. Плеханова
Ростовский государственный университет путей сообщения
Ростовский государственный экономический университет (РИНХ)
Рязанский государственный университет имени С.А. Есенина
Самарский государственный социально-педагогический университет
Самарский государственный технический университет
Самарский государственный университет путей сообщения
Самарский государственный экономический университет
Самарский национальный исследовательский университет имени академика С.П. Королева
Самарский национальный исследовательский университет имени академика С. П. Королева
Санкт-Петербургский горный университет
Санкт-Петербургский государственный лесотехнический университет имени С. М. Кирова
Санкт-Петербургский государственный морской технический университет
Санкт-Петербургский государственный университет
Санкт-Петербургский государственный университет аэрокосмического приборостроения
Санкт-Петербургский государственный университет промышленных технологий и дизайна
Санкт-Петербургский государственный университет телекоммуникаций имени профессора М. А. Бонч-Бруевича
Санкт-Петербургский государственный химико-фармацевтический университет Министерства здравоохранения Российской Федерации
Санкт-Петербургский государственный экономический университет
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» имени В. И. Ульянова (Ленина)
Санкт-Петербургский политехнический университет Петра Великого
Санкт-Петербургский университет технологий управления и экономики
Саратовский государственный технический университет им. Гагарина Ю. А.
Саратовский национальный исследовательский государственный университет имени Н.Г. Чернышевского
Севастопольский государственный университет
Северный (Арктический) федеральный университет имени М.В. Ломоносова
Северо-Восточный федеральный университет им. М.К. Аммосова
Северо-Кавказский горно-металлургический институт (государственный технологический университет)
Северо-Кавказский федеральный университет
Сибирский государственный медицинский университет
Сибирский государственный университет водного транспорта
Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнева
Сибирский университет потребительской кооперации
Сибирский федеральный университет
Сочинский государственный университет
Тамбовский государственный технический университет
Тверской государственный университет
Тихоокеанский государственный университет
Тольяттинский государственный университет
Томский государственный архитектурно-строительный университет
Томский государственный педагогический университет
Томский государственный университет систем управления и радиоэлектроники
Тульский государственный педагогический университет им. Л.Н. Толстого
Тульский государственный университет
Тюменский государственный университет
Тюменский индустриальный университет
Ульяновский государственный технический университет
Ульяновский государственный университет
Университет Иннополис
Уральский государственный педагогический университет
Уральский государственный университет путей сообщения
Уральский федеральный университет имени первого Президента России Б.Н. Ельцина
Уфимский государственный авиационный технический университет
Уфимский государственный нефтяной технический университет
Ухтинский государственный технический университет
Факультет романо-германских языков Московского государственного областного университета
Финансовый университет при Правительстве Российской Федерации
Челябинский государственный университет
Юго-Западный государственный университет
Южно-Российский государственный политехнический университет (НПИ) имени М.И. Платова
Южно-Уральский государственный аграрный университет
Южно-Уральский государственный гуманитарно-педагогический университет
Южно-Уральский государственный университет (национальный исследовательский университет)
Южный федеральный университет
Ярославский государственный медицинский университет
Ярославский государственный технический университет
Ярославский государственный университет имени П. Г. Демидова
Хотите поступить на бюджет в ИТМО
? Это более чем достойный выбор. Вы знали, например, что ИТМО – это единственный не только в нашей стране, но и во всём мире университет, который семь раз становился победителем ICPC (International Collegiate Programming Contest), чемпионата мира по программированию для студенческих команд.
ИТМО в 2019 году
стал одним из лидеров по количеству зачисленных на бюджетные места победителей и призёров льготных олимпиад. 34,4%
от общего количества поступивших (327 студента) были зачислены в ИТМО без экзаменов. Согласитесь, это внушительная цифра, поэтому призываем вас активно участвовать в предметных олимпиадах, чтобы повысить шансы поступить в ИТМО на бюджет.
ИТМО в международных рейтингах вузов
Название рейтинга | Место | |
---|---|---|
(Великобритания) | 401-500 место | |
Академический рейтинг университетов мира ARWU (Шанхайский рейтинг) | 801-900 место | |
(Великобритания)
| 436 место | |
(США)
| 752 место |
СПбНИУ ИТМО
входит в
проект «5-100»
. Это значит, что университету оказывается государственная поддержка и выделяются субсидии для повышения статуса вуза и вхождению в мировые рейтинги университетов. Всего в список
проекта «5-100»
вошёл 21 российский вуз, отбор проходил на конкурсной основе.
ИТМО в российских рейтингах вузов
Название рейтинга | Место | |
---|---|---|
14 место | ||
9-10 место | ||
29 место | ||
7 место |
А теперь всё самое необходимое о конкурсной ситуации в ИТМО в 2020 году
в одной удобной таблице
Всю актуальную статистику мы собирали исключительно на сайте ИТМО
. Значок «-» означает, что информации на официальном сайте нет. Приказ ректора СПбНИУ ИТМО о стоимости платного обучения в 2020-2021 гг. будет опубликован весной-летом.
На официальном сайте вуза есть КАЛЬКУЛЯТОР ЕГЭ
.
С порогом минимальных баллов ЕГЭ в ИТМО в 2020 году можно ознакомиться .
Направления подготовки (результаты ЕГЭ по предметам) | Количество бюджетных и платных мест в 2020 году | Средний балл в 2019 году (с баллами за ИД) | Стоимость обучения в 2019-2020 гг. |
---|---|---|---|
Факультет компьютерных технологий и управления Системы управления движением и навигация (Р+М+И) | 273 000 | ||
Информатика и вычислительная техника (Р+М+И) | 50/30 | 284 | 226 000 |
Программная инженерия (Р+М+И) | 110/155 | 289 | 226 000 |
Информационная безопасность (Р+М+И) | 75/95 | 276 | 226 000 |
Конструирование и технология электронных средств (Р+М+И) | 15/12 | 272 | 226 000 |
Приборостроение (Р+М+И) | 20/12 | 262 | 226 000 |
Электроэнергетика и электротехника (Р+М+И) | 16/10 | 257 | 273 000 |
Автоматизация технологических процессов и производств (Р+М+И) | 15/10 | 264 | 226 000 |
Мехатроника и робототехника | 270 | 226 000 | |
Управление в технических системах (Р+М+И) | 20/10 | 265 | 273 000 |
Профессиональное обучение (Компьютерная графика и дизайн) (Р+М+И) | 20/30 | 275 | 226 000 |
Факультет трансляционных информационных технологий | |||
Прикладная информатика (Р+М+И) | 25/40 | 288 | 226 000 |
Инфокоммуникационные технологии и системы связи (Р+М+И) | 70/30 | 273 | 226 000 |
Интеллектуальные системы в гуманитарной сфере (Р+М+И) | 16/35 | 277 | 200 000 |
Информационные системы и технологии (Р+М+И) | 90/150 | 303 | 226 000 |
Прикладная математика и информатика (Р+М+И) | 120/27 | 302 | 200 000 |
Факультет фотоники | |||
Фотоника и оптоинформатика (Р+М+Ф) | 42/20 | 247 | 226 000 |
Электронные и оптико-электронные приборы и системы специального назначения (специальность) (Р+М+И) | 11/10 | 259 | 226 000 |
Лазерная техника и лазерные технологии (Р+М+И) | 35/20 | 251 | 273 000 |
Техническая физика (Р+М+Ф) | 75/20 | 252 | 273 000 |
Энерго- и ресурсосберегающие процессы в химической технологии, нефтехимии и биотехнологии (Р+М+Ф) | 15/15 | 269 | 226 000 |
Биотехнические системы и технологии (Р+М+Ф) | 15/8 | — | — |
Оптотехника (Р+М+И) | 30/7 | 247 | 273 000 |
Факультет биотехнологий и низкотемпературных систем Биотехнология (Р+М+Х) | 226 000 | ||
Ядерная энергетика и теплофизика (Р+М+И) | 15/10 | 246 | 273 000 |
Холодильная, криогенная техника и системы жизнеобеспечения (Р+М+Ф) | 20/10 | 232 | 273 000 |
Эксплуатация транспортно-технологических машин и комплексов (Р+М+И) | 268 | 226 000 | |
Факультет технологического менеджмента и инноваций | |||
Инноватика (Р+М+ИН ЯЗ) | 45/25 | 259 | 226 000 |
Бизнес-информатика (Р+М+ОБЩ) | 16/40 | 264 | 200 000 |
Если материал показался интересным, подписывайтесь на обновления нашего
блога. Мы знаем о поступлении в вузы всё (и даже больше). Кнопку подписки вы найдёте прямо под постом.
Рекомендуем также
VC.RU: Что происходит на сборах перед международной студенческой олимпиадой по программированию
28 ноября 2017 года
И почему это может заинтересовать российские ИТ-компании.
С 7 по 16 ноября Центр развития ИТ-образования провел в кампусе МФТИ сборы Moscow Workshops ACM ICPC — для подготовки к международной студенческой олимпиаде по программированию ACM International Collegiate Programming Contest.
Директор Центра развития ИТ-образования и основатель проекта Moscow Workshops Алексей Малеев рассказал, как тренируются участники и какие бонусы получают партнеры воркшопов.
Как появились Moscow Workshops
Международная олимпиада по программированию проводится с конца 70-х годов, однако российские студенты из университетов ИТМО и МГУ дебютировали только в сезоне 1993-94. Первое золото на ICPC получила в 2000 году команда из СПбГУ, которая выступала под руководством тренера Натальи Вояковской.
С тех пор студенты из России выигрывали золотые медали 30 раз — больше, чем все остальные национальные команды. К примеру, студенты из Европы становились обладателями «золота» 15 раз, из Китая — 12 раз, а из США — 5 раз.
Успех российских команд связан с тренерскими традициями: финалисты прежних лет помогали готовиться «новобранцам» в своих университетах. Например, тренер команды СПбГУ Андрей Лопатин — двукратный золотой чемпион ACM-ICPC в 2000 и 2001 году.
Чтобы объединить российских участников и повысить уровень их подготовки, в 2012 году Центр развития ИТ-образования МФТИ провел первые всероссийские учебно-тренировочные сборы Moscow Workshops ACM ICPC.
Тогда участие приняли семь команд из университетов России и Белоруссии. Со временем мероприятие стало глобальным: за всю историю проведения воркшопа в МФТИ приехали команды из 145 вузов 48 стран, включая Англию, Китай и США — в том числе из Корнеллского и Пенсильванского университетов.
«Никто не мог предсказать, что студенты из Лиги Плюща поедут учиться в Подмосковье. Нам удалось привлечь участников из всех частей света, кроме Антарктиды», — рассказывает Алексей Малеев.
С 2017 года Центр проводит пять воркшопов: два раза в год участники приезжают в Москву, два раза — в барселонский университет Harbour Space и еще один — в Гродненский государственный университет. В 2018 году откроется новая площадка в индийском университете «Амрита».
Moscow Workshops ACM ICPC — единственное в мире мероприятие международного масштаба, где участникам помогают готовиться к международной олимпиаде по программированию.
Мировое ICPC-сообщество признает высокое качество программы обучения: в 2017 году из 13 команд, которые завоевали медали в финале ACM-ICPC, восемь приезжали на сборы Moscow Workshops.
Как проходят сборы
Сборы длятся девять дней. На этот срок студенты заселяются в кампус «на полный пансион» с трехразовым питанием. Сразу после завтрака начинаются тренировочные соревнования.
Их регламент и уровень задач соответствуют полуфинальным и финальным соревнованиям олимпиады. После обеда тренеры проводят «разбор полетов»: комментируют код и предлагают более удачные варианты решения задач. Вечером у участников есть возможность развлечься: заняться спортом, сходить в бассейн или поиграть в бильярд. В 2017 году компания «Яндекс» организовала вечер настольных игр.
В этом году с участниками занимались золотой и серебряный чемпион ACM-ICPC и тренер команд ИТМО Андрей Станкевич, двукратный обладатель золота ACM-ICPC Глеб Евстропов, финалист соревнований Russian Code Cup 2014-2015 и тренер команд МФТИ Михаил Тихомиров и многие другие. Также они проводят лекции: например, Станкевич рассказывал о нюансах паросочетания, а Евстропов — об оптимизации перебора.
Участие в сборах позволяет студентам совмещать учебу и путешествия, а также подружиться с единомышленниками — лучшими программистами мира.
Кроме того, одна из задач Moscow Workshops — познакомить иностранных студентов с культурой России: во время последних сборов участники посетили Московский планетарий, Кремль и другие достопримечательности столицы.
К нам приезжают сильнейшие студенты в мире — через три-пять лет они займут лидерские позиции в ИТ-компаниях. Кто-то за пять лет станет техническим директором, кто-то откроет свой стартап, и мы сможем разговаривать с ними на одном культурном языке.
Алексей Малеев,
директор Центра развития ИТ-образования МФТИ и основатель Moscow Workshops ACM ICPC
Российские «выпускники» ACM-сообщества открывают компании, которые становятся популярными на Западе. К примеру, Александр Машрабов, который основал студию разработки приложений на основе машинного обучения Machine Learning Works. В портфолио компании — сервис ScanMath, который решает математические уравнения по фотографии.
Ещё один выпускник ICPC-сообщества, Ренат Гимадеев, — глава департамента исследований в компании AIM Tech, которая разрабатывает продукты для алгоритмической торговли на рынках ценных бумаг, а также развивает сообщество программистов для улучшения алгоритмов. В свободное время Ренат тренирует ребят в ЦРИТО и готовит их к соревнованиям.
Кто поддерживает сборы
Соорганизаторы мероприятия — российские вузы: МФТИ, МГУ, ИТМО, СПбГУ, УрФУ и другие. Сборы Moscow Workshops проходят при поддержке партнеров — крупнейших российских и международных компаний: «Яндекса», Mail.Ru Group, Huawei, «НИКС», Facebook, JetBrains и других.
Представители компаний получают возможность познакомиться с талантливыми студентами со всего мира и присмотреть ценные кадры еще до того, как они выпустятся из университетов. А кроме того — вписать имя своей компании в историю международного спортивного программирования.
Источник: https://vc.ru/29722-chto-proishodit-na-sborah-pered-mezhdunarodnoy-studencheskoy-olimpiadoy-po-programmirovaniyu
Видеокурсы — Олимпиадное программирование в УлГТУ
Материал из Олимпиадное программирование в УлГТУ
Перейти к навигации
Перейти к поиску
Лекции Летней компьютерной школы
- Видеозаписи лекций ЛКШ
- ЛКШ. 2008.Подмосковье, параллель B (YouTube; О. Давыдов, Р. Сатюков; 2008)
- ЛКШ.2008.Подмосковье, параллель B’ (YouTube; С. Копелиович, О. Пестов, С. Мельников; 2008)
- ЛКШ.2008.Подмосковье, параллель C (YouTube; А. Станкевич, К. Абакумов, М. Мухачева; 2008)
- ЛКШ.2008.Подмосковье, параллель C’ (YouTube; В. Гуровиц, В. Кошелёв, П. Осипов, О. Пакуляк; 2008)
- Спецкурсы ЛКШ.2008.Подмосковье: «Введение в проективную геометрию», «Мышление, вычисления и ИИ», «Избирательные системы», «Элементы линейной алгебры», «Введение в БД»
Лекции Зимней школы
Курсы ИТМО и СПбГУ
Курсы КФУ
Курсы МФТИ
Курсы Самарского университета
Курсы УрФУ и СКБ Контур
Курсы Школы анализа данных Яндекса
Курсы Mail.Ru Group
Курсы Computer Science Center
Вебинары Ф. В. Меньшикова (разбор задач acmp.ru)
Курсы CodeChef
Курсы O’Reilly Media
Курсы университетов США
MIT:
Princeton:
Stanford:
UC San Diego:
- Algorithmic Toolbox (Coursera; D. Kane, A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
- Data Structures (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
- Algorithms on Graphs (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
- Algorithms on Strings (Coursera; A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
- Advanced Algorithms and Complexity (Coursera; D. Kane, A. Kulikov, M. Levin, N. Rhodes; 2016)
- Genome Assembly Programming Challenge (Coursera; A. Kulikov, M. Levin, P. Pevzner, N. Rhodes; 2016)
Stony Brook University:
Курсы по языкам программирования
C++:
- Основы разработки на C++: белый пояс (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017)
- Основы разработки на C++: жёлтый пояс (Coursera; Яндекс/МФТИ; И. Лежанкин, Е. Парамонов, А. Полднев, И. Шишков; 2017)
- Основы разработки на C++: красный пояс (Coursera; Яндекс/МФТИ; А. Полднев, И. Шишков; 2018)
- Основы разработки на C++: коричневый пояс (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2018)
- Основы разработки на C++: чёрный пояс (Coursera; Яндекс/МФТИ; А. Зобнин, М. Матросов, А. Полднев, Н. Субоч, И. Шишков; 2019)
Python
Программирование как разновидность спорта
При слове «программист» обычно в голове возникает образ скрюченного над клавиатурой человека, которого мало что в жизни интересует, он целыми днями пишет длинный код для сложной программы. Многие программисты действительно этим и занимаются, но при этом разносторонне развиты;)
А ещё существует «подвид» — спортивные программисты.
Основная задача программистов — писать код, поддерживать его работу и, если что-то сломается, чинить его. При этом написание и тестирование кода может длиться месяцами. А отличие спортивных программистов заключается в том, что они решают нестандартные задачи на время. Важно не просто найти самое быстрое, но и наиболее эффективное решение. Обычно спортивными программистами называют тех, кто участвует в соревнованиях. Олимпиадное программирование можно сравнить с шахматами или «Формулой-1»: в обоих случаях важны не только скорость, но и стратегия. Спортивные программисты, как правило, самые изобретательные специалисты в своей области: они быстро находят неочевидные подходы к конкретной задаче и пишут решение в виде компактного и эффективного кода. Такие специалисты востребованы везде — экономике, инженерии, машинном обучении. Талантливых программистов постоянно ищут представители ведущих мировых вузов и компаний.
Тренировки здесь также необходимы, как и в профессиональном спорте.
Олимпиадное программирование похоже на спринт: во время соревнований здесь важна взрывная сила, а чтобы выйти на короткий забег в оптимальной форме, нужно долго и последовательно тренироваться, выполняя рутинные упражнения. Программисты много тренируются в поиске и применении готовых решений и технологий, изучают разные языки. Спортивные программисты проходят большой путь проб и ошибок. Времени на соревновании очень мало. На студенческом чемпионате мира по программированию на поиск оптимального решения конкретной задачи у участника есть в среднем 25–30 минут (за 300 минут соревнований нужно решить 12 задач). Лучшим спортивным программистам удаётся решать задачи за 5-7 минут.
Один из самых известных чемпионатов — Международная студенческая олимпиада по программированию (ICPC). Впервые ее начали проводить еще в 1970-х. Сегодня в ICPC ежегодно соревнуются более 60 000 участников со всего мира. К слову, в Олимпийских играх принимает участие в четыре раза меньше человек.
Чемпионаты по спортивному программированию состоят из отборочного тура, полуфинала (региональные чемпионаты) и финала (чемпионат мира). Они бывают индивидуальными и командными и проводятся отдельно для школьников, студентов и выпускников вузов. Задача участников — решить как можно больше задач за ограниченное время.
Университет ИТМО (Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики) готовит спортивных программистов: за последние 16 лет команда ИТМО семь раз чемпионом Международной студенческой олимпиады по программированию (ICPC). Это мировой рекорд. У ближайших соперников — американского Стэнфорда и Шанхайского транспортного университета — по три победы. Возглавляет представительство ICPC в Северной Евразии выпускник ИТМО Матвей Казаков: в 1999 году он взял золотую медаль в чемпионате ACM ICPC, а также был тренером команды ИТМО, которая стала золотым медалистом в 2001 году.
Всё по-взрослому.
Как и в большом спорте, перед соревнованиями проходят сборы. В олимпиадном программировании бывают тренировочные соревнования, здесь участники решают задачи турниров прошлых лет, а также сборы команд из разных городов и стран. Обычно процесс устроен так: если школьник занимается программированием в кружке и показывает успехи, ему предлагают войти в команду и тренироваться вместе с другими перспективными спортсменами. В течение года команда решает задачи и занимается дома, а перед соревнованиями едет на сборы. Сборы необходимы, чтобы ребята сработались, сформировали сплоченную команду, привыкли к правилам соревнований и узнали сильные качества друг друга. Все это позволит им меньше нервничать во время самой олимпиады.
Чем раньше начинаешь, тем больше шансов.
В олимпиадном программировании нет возрастного ограничения: среди чемпионов есть и те, кто начал заниматься уже в сознательном возрасте. Но оттачивать навыки программирования нужно годами, поэтому большинство будущих чемпионов начинают участвовать в олимпиадах, едва окончив среднюю школу.
Успешные программисты — это звёзды.
На одного спортивного программиста, в среднем, приходится почти 70 «промышленных». На этих редких профессионалов большой спрос, и их труд очень хорошо оплачивается. После нескольких лет успешных выступлений на соревнованиях программисты становятся известными: крупные международные компании внимательно следят за результатами международных турниров и конкурируют за возможность пригласить самых перспективных участников на работу. А компании вроде Facebook, Google, «Яндекс» и Mail.ru проводят собственные соревнования по спортивному программированию — с той же целью.
Наиболее востребованы спортивные программисты там, где нужно непрерывное и быстрое усовершенствование алгоритмов: биржевая торговля, сфера языковых технологий, ИИ, машинное обучение, big data.
Среди спортивных программистов есть свои герои. Главные технические разработчики «ВКонтакте» и Telegram — Николай Дуров и Андрей Лопатин — дважды чемпионы мира по спортивному программированию. Другой призер ICPC — интернет-предприниматель Тони Шей. Спустя всего три года после победы в чемпионате он заработал 265 млн долларов (его баннерообменную сеть LinkExchange купила Microsoft), а затем создал онлайн-магазин одежды Zappos (в 2009 году Amazon заплатила за нее 1,2 млрд долларов). Также среди победителей чемпионата — сооснователь Facebook Адам Ди Анджело, бывший директор по технологиям Google Крейг Силверстайн и один из нынешних ведущих инженеров компании Петр Митричев. Победители ICPC делают карьеру не только за границей, но и в России: например, Федор Царев руководит питерским офисом хедж-фонда Игоря Тульчинского WorldQuant (фирма управляет инвестициями на 5 млрд долларов).
Самый титулованный спортивный программист планеты — Геннадий Короткевич. В свои 25 лет он побеждал на всех крупнейших международных турнирах по программированию, в некоторых — не один раз. Например, на Google Code Jam он занимает первое место уже шесть лет подряд: другим участникам удавалось выиграть максимум два раза подряд.
Нет никаких сомнений в том, что люди этой профессии всегда будут востребованы.
Университет ИТМО делится своим опытом. Часть 2 / Sudo Null IT News
Продолжаем рассказывать о курсе «Как побеждать в соревнованиях по программированию: секреты чемпионов», который Университет ИТМО запустил на edX в этом году (первую часть статьи читайте здесь).
Во второй части нашего разговора с авторами и инструкторами курса — Максимом Буздаловым и Павлом Кротковым, чемпионами ACM ICPC, и Дарьей Яковлевой, победительницей Google Code Jam for Women, мы поговорим о том, будут ли победители олимпиад иметь правильное отношение, как развивать умение находить творческие решения и кому будет полезен курс чемпионов Университета ИТМО.
Майкл Поллак / Flickr / CC
Отношение к опыту: какую роль психология играет в победе
Максим Буздалов считает, что успех команды (или участника, если речь идет об одиночных соревнованиях) зависит от тренированности и координации работы, которая достигается за долгие часы практических занятий — чем больше тренируются участники, тем меньше их результат. зависит от правильного настроения или его отсутствия.
Я бы не сказал, что «отношение» играет важную роль в успехе.Чем выше уровень команды, тем выше интеллект ее участников, и тем реже используются методы самообмана, направленные на повышение уверенности в себе и «поднятие духа»
— Максим Буздалов
Но совместимость участников друг с другом, и их личные качества, по мнению Максима, играют очень большую роль. При этом некоторые из этих качеств, как положительные, так и отрицательные, могут проявиться только в финале соревнований, из-за осознания ответственности: раньше команда отвечала только за себя, а в финале представляет весь университет или даже страна. Пример из личного опыта Максима (чемпион ACM ICPC 2009 года):
Конечно, наличие «боевого духа», заложенного в головах, может очень помочь: например, в 2009 году наши соперники, команда Университета Циньхуа, решили четыре или около того, задачи и вырвались на второе место, обеспечив себе золотую медаль и титул чемпиона Азии. Хороший пример …
… если бы не то, что мы заняли первое место, которые через несколько минут после начала последнего часа прошли свое последнее девятое задание, а за оставшийся час не успели написать что-нибудь толковое.Правда, мы, конечно, не «сдались», просто ситуация сложилась так, что все предыдущие четыре часа у нас были задачи в очереди на запись, а потом они вдруг закончились. Мы написали решение десятой задачи, но не успели
— Максим Буздалов
Команда Университета ИТМО 2016 на ACM ICPC: Адам Бардашевич, Антон Ковшаров, Андрей Станкевич (тренер) и Владимир Смыкалов
Павел Кротков поясняет — для команды профессионалов «упор на победу» может отойти на второй план, но с новичками без олимпиад ей не обойтись:
Мой опыт говорит, что главное [для новичка] еще психология и стрессоустойчивость. Андрей Станкевич в шутку сказал, что для развития карьеры тренера ему необходимо получить образование психолога / психиатра
— Павел Кротков
Дарья Яковлева подчеркивает: если этап соревнований произошел не сразу, участники действительно могут «опустить руки» — но больше всего помогает справиться с проблемой дополнительная подготовка, а не какие-либо психологические методы. Однако хорошее настроение и самочувствие перед стартом соревнований отходят на второй план, если команда или один из ее участников не проявляет особого интереса к процессу.
Люди, не испытывающие удовольствия от решения задач, конечно, не получат никаких призов, у них просто нет шансов
— Максим Буздалов
Лайфхаки и советы
Мы пригласили авторов курса «Как побеждать в соревнованиях по программированию: секреты чемпионов» поделиться советами и приемами, полезными в олимпиадном программировании — у нас есть несколько больших тем:
Практика
Практика, практика и снова практика. Главный лайфхак — решать одну задачу каждый день, даже в выходные, и не пропускать ни одного дня
— Дарья Яковлева
Максим Буздалов и Павел Кротков отмечают, что постоянные тренировки помогают не только добиться успеха в решении задач, но и дают возможность предугадать правильный ход мысли.Однако одного онлайн-курса для развития такой способности будет явно недостаточно (для его прохождения студентам потребуется 4-6 часов в неделю) — им придется решать задачи каждый день (кстати, авторы курса дают советы, как продолжить регулярные тренировки самостоятельно).
Чутье (или тонкая настройка в мозгу эвристики, с помощью которой расставить приоритеты в поиске направлений мысли) можно развить только при решении очень большого количества задач. Нагрузка, предлагаемая курсом по этой теме — одно-три олимпиадных задания в неделю в течение четырех недель — явно недостаточна.Для развития интуиции необходимо долго и регулярно (от субъективно легкой до субъективно чрезмерной) решать олимпиадные задачи разной степени сложности
— Максим Буздалов
Когда вы увидели тысячу задач с разными алгоритмами и идей, гораздо проще понять, в каком направлении двигаться в поисках решения. В этом смысле курс может заложить основу и показать, по крайней мере, самые основные темы и типы задач.
[Спортивное программирование] по-прежнему остается математикой, и редко проблема может быть решена методом, который в корне отличается от того, что задумал автор.Хотя такое тоже бывает, и чтобы это увидеть, опять же, нужно иметь опыт решения различных задач
— Павел Кротков
Парное программирование
Еще один совет от Павла — попрактиковаться в парном программировании. Такой подход позволяет сэкономить командное время и добиться синергетического эффекта (участники команды решают задачу не индивидуально, а вместе):
Понятно, что в такой ситуации количество «мозгов», работающих над решением, удваивается, и решение должно появиться быстрее / лучше
— Павел Кротков
Тактические решения во время олимпиады
Максим Буздалов дает совет, вполне применимый для работы команды «промышленных» программистов в жестких дедлайновых условиях (например, при нужно решить сразу несколько известных, но нетривиальных задач за очень короткое время):
Допустим, идет пятичасовое командное соревнование. В этом случае все члены команды должны прочитать все невыполненные задания к концу первого часа. Точно. Таким образом, вы 1) найдете все простые задачи и 2) сможете обсуждать сложные проблемы на равных.
Расширением этой техники является лист бумаги, размеченный в виде пластины, на которой задачи отображаются в виде строк, а участники — в виде столбцов. В ячейках участник отмечает, что он прочитал условие задачи, а также делает короткие комментарии (например, «задача динамического программирования по подмножествам»).Решенная проблема зачеркнута. Таким образом, текущее состояние коллектива становится видно самому коллективу
— Максим Буздалов
Изучение смежных областей
Еще один совет от Максима касается развития творческого мышления: помимо постоянной практики (которая ложится определенные «шаблоны» решения проблем), иногда полезно заставить себя мыслить нестандартно. Лучший способ достичь этой цели — «изучить» смежные дисциплины — от очевидных до относительно экзотических.
Есть такая «полуолимпиадная» дисциплина, которая называется «теория решения изобретательских задач». Не могу сказать, что я в ней профессионал — скорее, я работаю в этой области интуитивно, — но она предлагает некоторые высокоуровневые идеи, которые могут помочь в оптимизации и отмене стандартизации процесса мышления.
В свое время мне очень помогли олимпиады по математике. В них, во-первых, большое разнообразие способов думать о задаче, а во-вторых, они учат мыслить не одним способом из списка, а скорее «выпуклым сочетанием» этих способов.Таким образом, каждая новая идея, изобретенная или где-то увиденная, увеличивает вашу способность решать проблемы не одной идеей, а бесчисленным количеством идей, возникающих в результате гибридизации новых знаний и того, что вы уже знаете.
Много читаю, причем не только по выбранной вами предметной области (допустим, информатика), но и в различных других областях (например, биологии). Эти знания помогут вам найти решения проблем в одних областях, используя идеи и знания из других областей — и тем самым шокировать мир радикально новыми взглядами
— Максим Буздалов
Роберт Гурли / Flickr / CC
Как сделать отдых победителей олимпиад
Ежедневная практика, решение задач, изучение смежных областей знаний, учеба в вузе — вроде бы такие требования полностью исключают отдых из жизни участников олимпиад. Максим, Павел и Дарья развеяли наши сомнения — хотя выяснилось, что во время остальных чемпионов программирования он соблазнялся кодировать:
Если попытаться выделить что-то общее, я бы сказал, что настольные игры очень популярны. Но по большому счету каждый отдыхает по-своему
— Павел Кротков
Дети любят играть в настольные игры, в которых им нужно придумывать интересные стратегии, тактики для победы. Также программисты [олимпиадники] любят активный отдых: футбол, волейбол, фрисби.Есть парни, которым нравится танцевать суету. Участники очень разносторонние личности, и у каждого свои интересы
— Дарья Яковлева
Участники олимпиад — обычные люди, поэтому хобби и увлечения могут быть такими же, как у других. Верно, что программирование теперь стало такой большой сферой деятельности и дает столько свободы, которую программист может иметь в качестве хобби … программирование, просто отличное от его работы.
Итак, когда я участвовал в олимпиадах, из увлечения программированием у меня были генетические алгоритмы (которые впоследствии стали основным направлением моей научной деятельности) и обработка звука.А мое «обычное» хобби более десяти лет — игра на гитаре, сочинение музыки и свободная импровизация.
— Максим Буздалов
Не только олимпиады: кому еще (кроме будущих чемпионов) этот курс принесет пользу
Авторы курса отмечают: далеко не все зачисленные собираются участвовать в чемпионатах по программированию в ближайшее время. Многие из тех, кто прошел курс, просто хотели узнать что-то новое в знакомой области или даже развить профессиональные навыки и сделать свое портфолио более привлекательным.
Да, курс полезен ИТ-специалистам. Он рассказывает о том, что такое соревнования по программированию, как в них участвовать, как решать олимпиадные задачи, какие методы использовать и как развивать навыки решения задач. И все эти идеи могут быть применены и реализованы в сфере IT.
— Дарья Яковлева
Общение на форуме с некоторыми участниками курса показало, что некоторые ИТ-специалисты с помощью нашего курса вернули веру в то, что программирование может быть интересным.
Как показывает опыт работы с различными программами и сайтами, многим ИТ-специалистам было бы неплохо пройти хотя бы базовый курс вычислительной сложности, чтобы хоть как-то понять, в каком масштабе размеры данных их программ начнут замедляться, а какие делать с этим. Этот курс (не смотря на название, конечно) вполне может сыграть такую роль
— Максим Буздалов
Павел Кротков (который работает параллельно с преподаванием курса в Facebook) объясняет, почему IT-гиганты интересуются олимпийскими программистами:
С одной стороны, такие [олимпиадные] задания, конечно, имеют мало общего с повседневной работой « промышленный »программист.С другой стороны, ведущие IT-компании (Google, Facebook — из мира), Яндекс — из России, просто любят нанимать людей с бэкграундными олимпиадами. Более того, даже интервью в этих компаниях имеют много общего с соревнованиями.
Я бы сказал, что прохождение такого собеседования (опыт успешного участия в соревнованиях) дает возможность понять, что кандидат умеет «думать» в условиях стресса и ограниченного времени.
В целом, сам курс не поможет в повседневной работе, но может помочь лучше ориентироваться тем, у кого есть пробелы в области алгоритмов / математики.А участие в конкурсах вообще может помочь мозгу «не ржаветь», если работа иногда приедается.
— Павел Кротков
Добавим, что второй поток курса «Как побеждать в соревнованиях по программированию: Секреты чемпионов» стартует 6 марта 2017 года, но записаться на него можно уже сейчас. Занятия продлятся 5 недель: для обучения потребуются знания английского и одного из самых популярных языков программирования (C ++, Java или Python). Вы можете пройти обучение бесплатно (сертификат о прохождении обучения — при необходимости — будет стоить 49 долларов). Ждем вас среди слушателей курса и будущих победителей олимпиад!
Почему США проиграли России в этих ведущих испытаниях по кодированию почти десятилетие
В России может быть лето, но самым способным школьникам некогда расслабляться.
В июне следующего года в Москве пройдет одно из самых престижных соревнований по программированию для университетов, ICPC, и одна из российских команд надеется снова выиграть для страны, в девятый раз подряд.Они говорят, что проиграть дома — это не вариант.
Международный студенческий чемпионат по программированию (ICPC) собирает студентов из лучших университетов мира. К ним относятся Массачусетский технологический институт, Стэнфорд, Калифорнийский технологический институт, Гарвард, Пекинский университет и Сеульский национальный университет.
SEE: Как построить успешную карьеру разработчика (бесплатный PDF)
В конкурсе будут участвовать несколько школ из России: Московский государственный университет, выигравший ICPC за последние два года, и два колледжа из Санкт-Петербурга , Государственный университет и ИТМО, которые выиграли Мировой финал в период с 2012 по 2017 год поочередно.
Правила делают ICPC очень сложным соревнованием по программированию. Каждая команда, состоящая из трех человек, должна решить восемь или более задач всего за пять часов, используя только один компьютер. Побеждает команда, решившая больше всего проблем.
Среди выпускников ICPC — бывший технический директор Facebook Адам Д’Анджело, создатель Apache Spark Матей Захария и генеральный директор Zappos Тони Хси.
Хотя ICPC World Finals запланирована только в июне следующего года, россияне уже тренировались, и тренируют экс-чемпионы страны.
«Опытные наставники, неоднократно обучавшие победителей ICPC, могут указать на слабые места и подсказать, какие типы задач следует выполнять команде», — говорит Алексей Малеев, директор ICPC 2020 Moscow.
У каждого члена российской команды своя роль. «Кто-то может быть математиком, а кто-то вводит код в компьютер. У команды может быть руководитель, который решает, двигаться ли дальше, если проблема не решена, или придерживаться ее», — говорит Малеев.
Он считает, что у русских есть хорошие шансы на победу в девятый раз в следующем году, в основном потому, что главные российские студенты выделяются, когда дело доходит до тяжелой работы, абстрактного мышления и математических навыков.
И тому есть несколько причин, говорит Малеев. Во-первых, образование в области естественных наук, технологий, инженерии и математики начинается в раннем возрасте.
«Ученики начальной школы решают множество задач, в которых необходимо помнить несколько шагов. Запрет на использование калькуляторов на уроках и олимпиадах означает, что ученики должны много держать в голове», — говорит он.
Во-вторых, он утверждает, что российские школьники довольно рано знакомятся с абстрактными концепциями, что способствует абстрактному мышлению.Например, в средней школе изучают многочлены.
Также помогает то, что российские университеты полностью поддерживают соревнования по кодированию и прилагают все усилия, чтобы подготовить успешных студентов не только из этой страны, но и из других стран.
В течение последних восьми лет Московский физико-технический институт организовывал семинары для подготовки студентов к ICPC.
«Восьмидневные тренировочные лагеря прошли в Пекине, Маскате, Владивостоке, Гродно, Барселоне и Колламе [Индия]», — говорит Малеев.
«Результаты тренировок в этих учебных лагерях впечатляют — 11 из 12 победителей финала ICPC 2019 в Порту обучались в Moscow Workshops ICPC».
SEE: Шесть востребованных языков программирования: Начало работы (бесплатный PDF)
На данный момент около 2200 студентов из 205 университетов 55 стран приняли участие в этих интенсивных курсах. По словам Малеева, стремящиеся к медали решают большое количество задач на тренировках.
«Студенты, которые достигают мирового финала, обычно решают не менее 1000 конкурсов и около 10 000 задач. А иногда и больше».
Поэтому даже летом самые одаренные российские студенты-информатики продолжают много работать. Иногда они собираются вместе с официальной целью повеселиться, но в конечном итоге они обсуждают алгоритмы.
«Каждое лето мы проводим время на природе», — говорит Малеев. «Так студенты могут общаться и обсуждать важные темы».
В июне следующего года одна из российских команд надеется в девятый раз подряд выиграть соревнование ICPC для страны.
Изображение: Боб Смит / ICPC
Подробнее по информатике и навыкам
Camp in Programming — образовательная программа в Университете ИТМО
Направление
ВсеАэронавигация и эксплуатация авиационных и ракетно-космических технологийСельское хозяйство, лесное хозяйство и рыболовствоПрикладная геология, горнодобывающая промышленность, нефтегазовая промышленность и геодезияАрхитектураХудожественные исследованияАзиатские и африканские исследованияАвиационные и ракетно-космические технологииБиологические наукиХимические наукиХимические технологииХимияКлиническая медицинаКомпьютерные и информационные наукиКонструкторские исследования и социальные науки и менеджментОбразование и педагогические наукиЭлектроэнергетика и теплоэнергетикаЭлектроника, радиотехника и системы связиИнженерия и технологии Наземный транспортИнжиниринг и технологии судостроения и водного транспортаФундаментальная медицинаГрафическое и прикладное искусствоЗдоровье и профилактическая медицинаИстория и археологияИндустриальная экология и биотехнологииИнформационная промышленностьИнформационные технологии В технических системах СМИ и информатика-библиотековедениеМатематика и механикаМеханическая инженерияНанотехнологии и наноматериалыЯдерная инженерия и технологииМедицинское обслуживаниеФармацияФилософия, этика и религиоведение Материалы Техносферная безопасность и экологическая инженерия Теология Ветеринария и зоотехника
Субъект
AllAgricultural EngineeringAgricultureAircraft EnginesAllergology и ImmunologyAnestesiology и ReanimatologyAnimal Orogin FoodAnimal ScienceAnthropology и EthnologyApplied GeodesyApplied GeologyApplied InformaticsApplied MathematicsApplied Математика и InformaticsApplied Математика и PhysicsApplied MechanicsArchitectureArchutecture Environmental DesignArt и HumanitiesArt HistoryArt Погрузочно-разгрузочное TechnologyArtsAstronomyAutomation технологических процессов и ProductionsAviation и ракетно-космической TechnologyAviation и исследованию космического пространства MedicineBacteriologyBallistics и HydroaerodynamicsBioengineering и BioinformaticsBiologyBiology ScienceBiotechnical Systems и технологииБиотехнологииБизнес-информатикаКардиологияКардиологияСердечно-сосудистая хирургияКартография и геоинформатикаХимические наукиХимические технологииХимические технологии материалов современной энергетикиХимияХимия, физика и механика материаловГражданское строительствоКлиническая лабораторная диагностикаКлиническая медицина eClinical PharmocologyClinical PsychologyColoproctologyCommerceComputer и информация SciencesComputer SecurityConflictologyCosmetologyCulturologyCustomsDental SurgeryDermatovenereologyDesignDesign и технологии поддержки инженерного IndustriesDesign авиации и ракетной EnginesDesigning и технологии электронных ToolsDietologyDiving MedicineDocument науки и архива ScienceEarth SciencesEcology и природы UseEconomic SecurityEconomicsEducation и Pedagogyc SciencesElectricity и тепло-и-Power EngineeringElectronic и оптико-электронные приборы и системы специального назначенияЭлектроника и наноэлектроникаЭлектроника, радиотехника и системы связи Экстренная медицинаЭндокринологияЭндоскопияИнжиниринг и технологии Наземный транспортЭкологическая инженерия и водопользованиеЭпидемиологияЭпидемиологияЭксплуатация транспортных технологических машин и комплексовЧеловеческая безопасностьФинансы, медицина и кредит Электронная судебная медицинаЛесоводствоФункциональная диагностикаФундаментальная и прикладная химияФундаментальная математика и механикаФундаментальная медицинаФундаментальные науки и информационные технологииГастроэнтерологияОбщая стоматологияГенеральная практика (семейная медицина) ГенетикаГеодезия и дистанционное зондированиеГеография-геология, геология, геологоразведка и энергетика, разработка и управление теплотехнологиямиГеология, геология, геологоразведка и энергетика, развитие энергетики и энергетики Функциональные и специальные пищевые продуктыИсторические науки и археологияИстория искусстваГидрометеорологияПромышленная экология и биотехнологииИнфекционные заболеванияИнфекционные заболеванияИнформатика и компьютерные технологииИнформационная безопасностьИнформационная безопасность компьютерных системИнформационная безопасность телекоммуникационных системИнформационные системы и технологииИнновационные исследования в области приборостроения и управления интеллектуальной собственностью manitites SphereМеждународные отношенияЖурналистикаОрганизация и управление интенсивными производствамиЛабораторная генетикаУправление землями и кадастрыЗемельные транспортно-технологические комплексыЛандшафтная архитектураЛазерное оборудование и лазерные технологииЗаконодательство в поддержку национальной безопасностиЛингвистикаЛингвистика и литературная критикаМенеджментУправление техническими системамиМеханика и математикаМеханика и компьютерная наукаМатериаловедениеМатериаловедение и математическое моделированиеМехатроника и робототехникаМедиакоммуникацииМедицинская и социальная экспертизаМедицинская биохимияМедицинская биофизикаМедицинская промышленностьМедицинская стоматологияМедико-профилактическое делоМедицинская медицина и наркологияМеталлургияГорное делоМузей науки и защиты объектов культурного и природного наследияНанотехнологии и защиты объектов культурного и природного наследияНанотехнологии и нанотехнологии icrosystem Technicsologies и микросистемная technicsNanotechnologies и микросистемная TechnicsNanotechnologies и NanomaterialsNeonatologyNephrologyNeurologyNeurosurgeryNeurosurgeryNuclear Энергетик и Термальный PhysicsNuclear Физика и TechnologiesNuclear растения: Проектирование, эксплуатация и EngineeringNuclear Реакторы и MaterialsNuclear Реакторы и MaterialsNuclear, тепло и возобновляемые источники энергия и связанный с ними TechnologiesNursingNutrition HygieneObstetrics и GynecologyOil и газа BusinessOncologyOphtalmologyOphtalmologyOptical TechnicsOrganization работы с YouthOriental и Африканские исследованияОртодонтияОртопедическая стоматологияОториноларингологияПатологическая анатомияПедагогическое образование (с двумя профилями образования) Педагогика и психология девиантного поведенияПедагогическое образованиеДетская стоматологияДетская эндокринологияДетская хирургияПедиатрическая урология и андрологияПедиатрические исследования Приборостроение, оптические и биотехнологические системы и технологииФизиологияФизиологияФизические и технические науки и технологииФизическая культураФизическая культура и спортФизическое образование для людей с ограниченными возможностями в состоянии здоровья (адаптивная физическая культура) Физическая терапия и спортивная медицинаФизикаФизика и астрономияФизика горнодобывающего происхождения или нефтегазовая хирургияПластическая хирургия и региональные исследованияПолитологияПроцессы энергосбережения и ресурсосбережения в химической технологии, химии бензина и биотехнологииЭнергетическая инженерияПривязки к PR и СМИПрофессиональные патологииПсихиатрияПсихиатрияПсихологические наукиПсихологияПсихиатрияПсихиатрияПсихологические наукиПсихологияПсихология и педагогическое образованиеПсихология профессиональной деятельностиПсихотерапияГиотерапия, общественная медицина, электронная промышленность, управление и социальные науки и спортивный туризмРефлексотерапияХолодильник, криогенные технологии и системы жизнеобеспеченияРелигиозные исследованияИсследование технологий и систем связиРевматологияРентген-эндоваскулярная диагностика и лечениеРентгенологияРегиональное исследование в РоссииСервисСервисная индустрияСудостроение, океанотехника и системная инженерия объектов морской инфраструктуры и муниципальная администрацияСтоматологияХирургияСистемный анализ и управлениеТехническая работа самолетов и двигателейТехническая физикаТехнологические машины и оборудованиеТехнологии материаловТехнологии Строительное машиностроениеТехнологии лесозаготовительной и деревообрабатывающей промышленностиТехнология геологоразведкиТехнология продуктов и организация общественного питанияТехнология транспортных процессов fetyТелевидениеТехнология печати и производства упаковки Театральная наука ТеологияТерапияТоракальная хирургияТуризмГородское планированиеДорожные системы и навигацияТрансфузиологияПеревод и теория переводаТравматология и ортопедияУльтразвуковая диагностикаУникальные здания и строительная техникаУрологияВетеринарияВетеринария и зоотехника 9000 по отраслям
Обзор
: Как выиграть соревнования по программированию от Университета ИТМО
В прошлом месяце Университет ИТМО запустил курс edX «Как побеждать в соревнованиях по программированию: секреты чемпионов». Когда эта первая итерация курса подошла к концу, я подумал, что поделюсь своим опытом с ней.
О курсе
Идея, лежащая в основе того, как выиграть соревнования по программированию (HTWCC), состоит в том, чтобы взять людей с некоторым опытом программирования (может быть, немного, может быть, много) и через семь недель научить их основы соревновательного программирования.
Возможно, вы уже заметили противоречие между этой целью и названием курса. Курс посвящен началу занятий соревновательным программированием, а не победам в соревнованиях или продвинутым секретам.Но пока давайте примем это за чистую монету.
Курс разделен на пять разделов, каждый из которых длится одну неделю:
- Неделя 1: Добро пожаловать в соревновательное программирование
Первая неделя состоит в основном из базовой информации о соревнованиях и простых задач, которые студенты могут использовать для ознакомления онлайн-судья, используемый в классе. Однако на этой неделе преподаватели задают одну сложную задачу по теории чисел, просто чтобы было интересно.
- Неделя 2: Вычислительная сложность и линейные структуры данных
В лекциях второй недели рассматривается анализ алгоритмов, нотация большого O и основные линейные структуры данных, такие как стеки, очереди и списки.Набор задач начинается просто, но быстро становится все сложнее.
- Неделя 3: Сортировка и поиск
На этой неделе рассматриваются двоичный поиск, а также стандартные алгоритмы сортировки, такие как сортировка вставкой, быстрая сортировка и сортировка слиянием. На этом простые проблемы решены. Все задачи на этой неделе требуют некоторого размышления о том, как применять концепции сортировки и поиска к задачам программирования.
- Неделя 4: Алгоритмы на графах
Последняя неделя лекций посвящена структурам данных графов и их использованию для реализации таких алгоритмов, как поиск в глубину, поиск в ширину и кратчайший путь из одного источника. Задачи требуют от студентов реализации этих алгоритмов для конкретных сценариев.
На это отведена неделя, но сам экзамен длится всего пять часов.
Почему стоит пройти этот курс?
Есть много онлайн-судей, где вы можете найти практические задания. Но решение случайных задач — не очень эффективный способ обучения, пока вы не освоите все основы. Преимущество курса или книги в том, что они дают вам информацию для изучения, а за ней следуют практические задачи.Есть причина, по которой курсы математики и естествознания в колледже работают именно так. Наборы задач — это эффективный способ выяснить, что вы делаете и не понимаете в материале. Если у вас возникнут проблемы с проблемой, вы можете немедленно вернуться к соответствующему ресурсу (для HTWCC это слайд с лекцией и связанный с ним раздел видео) и выяснить, что вам не хватает.
В какой-то момент становится полезным практиковать задачи, которые не были заранее классифицированы. Такой стиль практики заставляет вас понять не только, как применить алгоритм или методику к проблеме, но и какой алгоритм или метод использовать. Но участие в соревнованиях, вероятно, лучший способ получить такую практику. В первые дни вы можете столкнуться с множеством проблем, даже если вам дадут общее представление о том, какой подход выбрать.
Итак, основная причина выбрать этот курс среди множества других вариантов обучения — это попросить группу экспертов познакомить вас с набором ресурсов, а затем проверить себя на наборе задач, специально написанном для этих ресурсов. Видеолекции также делают этот урок более похожим на настоящий класс по сравнению с чем-то вроде Стэнфордского CS 97SI: Введение в соревнования по программированию, где лекции читают только студенты на месте.А если вы пройдете курс во время одной из интерактивных сессий (например, с октября по декабрь 2016 г.), вы получите дополнительное преимущество в виде принудительных дедлайнов и участия инструкторов в форумах.
HTWCC по сравнению с другими вариантами обучения
Как этот курс сравнивается с другими вариантами изучения конкурентного программирования? Давайте посмотрим на некоторые характеристики.
Решения
Во время живого курса редакционные статьи не были доступны до тех пор, пока не наступил срок выполнения каждого набора задач.Это стандартный подход для курсов колледжей и МООК. Но он отличается от многих вариантов самообучения, где вы можете искать решения всякий раз, когда решите, что потратили достаточно времени на проблему. Таким образом, существует компромисс между гибкостью и строгой дисциплиной. Возможно, что после того, как курс будет заархивирован, редакционные статьи будут доступны в любое время.
В курсе есть раздел для обсуждения, и в нем преимущества обратны: во время живого курса инструктор предлагал подсказки, пока набор задач был активен.После того, как курс заархивирован, преподаватель может не участвовать, но вы сможете просматривать заархивированные обсуждения.
Совместное использование
Как и в случае с другими курсами колледжа, сотрудничество поощряется и ограничивается. Инструкторы хотят, чтобы ученики помогали друг другу с проблемами. Но они также хотят, чтобы каждый ученик представил свою работу, поэтому важно не рассказывать слишком много о проблемах. Напротив, другие сообщества соревновательного программирования обычно рады, когда люди пишут редакционные статьи о проблемах.Даже Project Euler, который не любит, когда люди обсуждают его проблемы публично, предоставляет редакционные статьи после того, как вы решили проблему.
Поскольку объяснение вещей другим — хороший способ учиться, одно из преимуществ использования открытых коллекций задач конкурентного программирования состоит в том, что вы можете говорить о них сколько угодно.
Онлайн-судья
В курсе используется онлайн-судья, который интегрируется в среду edX. У него есть несколько причуд:
- Вместо чтения из стандартного ввода и записи в стандартный вывод решения должны читать из файлов, имена которых меняются для каждой проблемы.Это создает некоторую загруженную работу по редактированию шаблона в начале каждого решения.
- В начале курса судья несколько раз попадал в аварию и прекращал прием материалов. Позже инструктор взял это под контроль.
- Входной файл содержит только один тестовый пример (который может включать несколько строк). Это может сделать тестирование менее удобным по сравнению с судьями, которые поддерживают несколько тестовых случаев для каждого входного файла.
- Нет вывода, кроме приговора судьи.Например, нет таймера, поэтому вы не можете сказать, было ли ваше решение только что отведено по времени или было много дополнительного времени.
- Нет истории предыдущих отправок, кроме счетчика, показывающего, сколько отправлений вы подали по проблеме.
- Нет рейтинга игроков. Наблюдение за тем, как другие учащиеся справились с проблемами, не только помогает оценить сложность проблемы, но также может способствовать развитию сообщества среди участников. Чтобы избежать каких-либо проблем с конфиденциальностью, учащиеся могут зарегистрироваться в таблице лидеров.
Но кроме этих предметов, судья был в порядке. Это сделало свою работу.
Лекции
HTWCC не имеет назначенных учебников или других важных заданий по чтению. Информация, необходимая для решения задач программирования, содержится в 34 коротких лекциях, большинство из которых сопровождаются одним или двумя вопросами с несколькими вариантами ответов. Лекции длятся в общей сложности около 4,25 часа, из которых около 90% времени тратится на недели 3 и 4.
Поскольку задачи программирования, кажется, написаны специально для класса, они тесно связаны с содержанием лекции.Так что даже если вы, как и я, уже изучали эти темы раньше, стоит хотя бы просмотреть лекции. Я счел полезным смотреть лекции с двукратной скоростью, что отлично работает, потому что они включают расшифровку стенограммы, которая синхронизируется с видео. Так что вам не нужно очень внимательно слушать аудио.
В лекциях есть несколько советов о методах, которые распространены в соревновательном программировании, например об использовании поразрядных операций для ускорения некоторых алгоритмов. И темы, которые выбирают преподаватели, основаны на том, что, скорее всего, будет полезно в олимпиадах по программированию.Но по большей части лекции охватывают материал, который можно найти в любом стандартном учебнике или курсе алгоритмов.
Поскольку лекции в основном охватывают темы стандартных алгоритмов, вы можете назначить себе учебник, например, CLRS или Sedgewick, и использовать его для более подробного объяснения быстрой сортировки, поиска в глубину или других алгоритмов в курсе.
Обсуждения
Каждой проблеме программирования и лекции в классе соответствует цепочка обсуждения.Ведущий инструктор проявил удивительную активность в обсуждениях проблем программирования. Студенты задавали вопросы вроде: «Я получил неправильный ответ на тесте № 9. Что не так с моим кодом? » и инструктор прочитает их код и предоставит подробный диагноз. Это не будет масштабируемым в долгосрочной перспективе, если класс станет больше, но это означает, что ветка обсуждения — хорошее место для поиска подсказок о проблемах, на которых вы застряли.
Процесс
Вот учебный процесс, который я использовал каждую неделю:
- Просмотрите задачи программирования, чтобы узнать, какие темы они охватывают.
- Посмотрите следующую лекцию о скорости 2X, чтобы получить обзор материала, используя стенограмму, чтобы не отставать от произнесенных слов.
- Решите задачи с множественным выбором для лекции.
- Если лекция кажется относящейся к следующей задаче программирования, начните ее, возвращаясь к лекции, когда это необходимо, чтобы получить более подробную информацию о соответствующем алгоритме.
- Повторяйте, пока не закончите в течение недели.
Для решения задач программирования я использовал процесс, который у меня уже есть для uHunt.Я изменил свой шаблон и инструменты командной строки в соответствии со стилем, который требует судья HTWCC. Хотя API для отправки программ отсутствует, остальные инструменты (включая мой рабочий процесс git) работали нормально.
На пятой неделе занятий нет лекций или викторин, только экзамен по времени, состоящий из задач по программированию. На этой неделе моя стратегия заключалась в том, чтобы сначала прочитать все проблемы и поработать над ними в порядке сложности.
Отладка
Для практики соревновательного программирования я обычно использую задачи uHunt.Каждая из этих проблем имеет соответствующую страницу uDebug, которая предоставляет принятый вывод для любого ввода. Эта система позволяет вам использовать случайный ввод (или образец ввода, который пользователи uDebug загружают на сайт) для сравнения вывода вашей программы с принятым выводом и исправления любых ошибок, из-за которых ваш вывод отличается от принятой версии.
При проблемах HTWCC (и проблемах со многих других сайтов) у вас нет этого преимущества. Тем не менее случайный ввод по-прежнему играет решающую роль, если вы застряли на проблеме.(Случайный ввод, кстати, создается программой, которая генерирует данные в формате, указанном в формулировке задачи. Такую программу, как правило, намного проще написать, чем программу, которая решает головоломку программирования).
Имея неограниченное количество случайных входных данных, вы можете сделать следующее:
- Если вы получите вердикт Wrong Answer , реализуйте более простую (но, вероятно, более медленную) версию вашего решения. Затем сравните его результат с выводом оптимизированной версии, над которой вы работаете.Возможно, вам не удастся принять ваше медленное решение, но вы можете использовать его для отладки быстрого решения.
- Если вы получили вердикт об ошибке Runtime Error , вы можете использовать случайный ввод в качестве стратегии перебора, чтобы найти ввод, который вызывает сбой вашей программы. Просто продолжайте генерировать и работать, пока это не произойдет.
- Если вы получите вердикт Time Limit Exceeded , вы можете сгенерировать достаточно случайных входных данных, чтобы ваша программа работала в течение нескольких секунд. Это помогает получить полезные результаты от профилировщика, а также гарантирует, что ваши выходные данные не изменятся, когда вы настроите свою программу, чтобы она работала быстрее.
Усилия и сложность
Усилия
Согласно главной странице HTWCC на edX, курс длится 5 недель и требует 4-6 часов в неделю усилий. В общей сложности получается 20-30 часов усилий. Сайт курса открылся 17 октября 2016 года, а заключительный экзамен по этому предложению курса должен состояться 4 декабря 2016 года. Поскольку лекции и наборы задач для каждой недели были доступны задолго до установленных сроков, я бы посчитал полные семь недель в качестве потенциального учебного времени, в общей сложности 28-42 часа усилий.На мой взгляд, все эти цифры недооценивают реальный уровень усилий, необходимых для серьезной попытки пройти курс.
Вот почему я так говорю:
- Как я уже упоминал выше, существует 4,25 часа видео. Наблюдение за ними на 2-кратной скорости сократило бы это вдвое, но цель быстрого просмотра — пролистать легкие части, чтобы высвободить время для изучения сложных частей. Итак, давайте предположим, что в сумме 5 часов для комбинации двукратного просмотра, замедления, когда становится интересно, и ответов на вопросы с несколькими вариантами ответов.
- Заключительный экзамен рассчитан на пять часов для имитации соревнований ACM-ICPC. На экзамене достаточно задач, поэтому нет причин не использовать все время, если только у вас нет большого опыта в соревнованиях. (В таком случае, почему вы проходите этот вводный курс?)
- Итак, прежде чем мы перейдем к наборам задач, у нас 10 часов учебного времени. Тогда есть восемь задач в неделю, или всего 36 задач. Первые шесть задач на неделе 1 на самом деле не в счет, так как они всего лишь задачи для разминки.Итак, допустим, 30 реальных задач плюс немного времени на разминку. Достижение 20 часов (нижний предел диапазона усилий) означало бы потратить меньше часа на задачу плюс 10 уже выделенных часов. Даже самый высокий уровень (42 часа) обеспечит только около часа на реальную проблему. Я бы посоветовал выделить в среднем пару часов на каждую задачу, в общей сложности 60 часов времени на решение проблемы. Таким образом, весь класс составляет 70 часов, или 10 часов в неделю.
На самом деле, вы все равно можете обнаружить, что это число находится на низком уровне, если вы серьезно относитесь к классу, не участвовали во многих соревнованиях и хотите завершить все задачи. Вы могли бы потратить десять часов на одну проблему и считать ее потраченным не зря, если бы это было десять часов исследований и обучения.
Сложность
HTWCC рекламируется как начальный уровень по шкале edX Introductory — Intermediate — Advanced. Это разумная классификация. Это требует некоторых навыков программирования, но ничего особенного. Лекции охватывают все алгоритмы, структуры данных и методы, необходимые для решения проблем. Теоретически любой целеустремленный программист может сразу же вмешаться.
Но разработчики курсов не скрывают сложности задачи. Есть много сложных проблем для начинающих и опытных программистов. По шкале uHunt я бы поставил их на L3 и L4 (за исключением первых нескольких задач на неделе 1, которые относятся к сложности L1).
Подведение итогов
В Интернете есть много материалов для изучения и практики соревновательного программирования (см. «Отличный список»). Так что же особенного в HTWCC? В основном следующее: это единственный настоящий MOOC по конкурентному программированию. Раздел «Открытые курсы» в списке содержит ссылки на слайды лекций, видео очных занятий, учебные пособия и другие материалы. Но HTWCC — это наиболее близкий к университетскому классу курс по конкурентному программированию, доступный для людей, не обучающихся в университете, который предлагает такую возможность. В нем есть инструкторы, лекции, домашние задания, дедлайны и экзамен, объединенные в курс.
Учитывая, что задачи хорошие, а лекции хорошие, если вы собираетесь их решать, стоит изучить HTWCC, если вы серьезно относитесь к изучению соревновательного программирования.Это не обязательный курс, но это хорошее использование учебного времени. После его завершения вы не выиграете ни одного крупного соревнования, и нет никаких настоящих секретов, кроме изучения правильных тем и тщательного обдумывания проблем. Но на пути к вашей первой 1000 практических задач вы могли бы сделать хуже, чем эти тридцать.
(Изображение предоставлено ICPCNews)
Программисты Университета ИТМО — семикратные чемпионы acm icpc! Российские студенты выиграли чемпионат мира по программированию ICPC.
В седьмой раз команда Санкт-Петербургского университета ИТМО завоевала золотые медали в финальной части чемпионата мира по спортивному программированию ACM ICPC, который прошел в американском городе Рапид-Сити (штат Южная Дакота). Второе место заняли студенты Варшавского университета, третье — Сеульского университета, четвертое — Санкт-Петербургский государственный университет (СПбГУ). Честь ИТМО защищали студенты кафедры компьютерных технологий Иван Белоногов (4 курс бакалавриата), Илья Збан (4 курс бакалавриата) и Владимир Смыкалов (1 курс магистратуры).Тренер команды — Андрей Станкевич, обладатель престижной премии ACM ICPC Senior Coach Award.
В отдельных категориях Чемпионата мира золотые медали достались студентам Санкт-Петербургского государственного университета (СПбГУ), серебряные медали — команде Московского физико-технического института (МФТИ), бронзовые — уральским студентам. Федеральный университет (УрФУ).
За места на пьедестале почета боролись 27 команд, прошедших предварительный отбор. Всего в чемпионате мира приняли участие 133 команды, из них 13 российских, представлены вузами Москвы, Санкт-Петербурга.-Петербург, Екатеринбург, Новосибирск, Пермь, Петрозаводск, Саратов, Самара и Томск.
Международный студенческий чемпионат по программированию ACM считается самым авторитетным чемпионатом по спортивному программированию в мире. Конкурс проводится ежегодно с 1977 г. под эгидой Ассоциации вычислительной техники (ACM). Спонсором чемпионата является корпорация IBM. Победители ACM ICPC получают приз в размере 15 000 долларов США
«Эти дети решают задачи за три минуты.Да это чушь какая-то! И я люблю это. Это то, что происходит, когда дети сосредоточены на решении проблем, у них есть необходимые ресурсы и поддержка, а также правильные советы тренера, и они достигают своей цели в течение года », — сказал исполнительный директор ICPC Билл Паучер.
Основа успеха
Заключительный этап финальной части чемпионата мира длился пять часов. Согласно условиям ACM ICPC, трое студентов имели в своем распоряжении только один компьютер.Команде нужно было в кратчайшие сроки составить алгоритм решения и написать код для максимального количества задач.
«В главном матче ACM ICPC разгорелась нешуточная борьба — за час до окончания соревнований, когда турнирная таблица была заморожена, Университет ИТМО лидировал, но до недавнего времени оставалось загадкой, кто победит. », — сказали в пресс-службе ИТМО.
Команда из Санкт-Петербурга смогла справиться с 10 задачами из 12, но такое же количество задач удалось решить ее соперникам.Тем не менее, студенты Университета ИТМО показали лучшее время — 845 минут. Ближайшие преследователи — студенты из Варшавы — выполнили 10 задач за 953 минуты.
«Мы увидели, что у других команд есть потенциал для решения 11 задач. Однако нам повезло: больше никто не решил 10 », — сказал после церемонии награждения один из участников команды Владимир Смыкалов.
Российские команды принимают участие в чемпионате ACM ICPC с 1995 года и выиграли 12 из них. Команда ИТМО побеждала семь раз — в 2004, 2008, 2009, 2012, 2013, 2015 и 2017 годах.Санкт-Петербургский государственный университет одержал четыре победы — в 2000, 2001, 2014 и 2016 годах. В 2006 году студенты Саратовского государственного университета получили золотые медали.
Заведующий кафедрой технологий программирования Университета ИТМО, профессор Анатолий Шалыто прокомментировал RT победу студентов своего вуза.
«У нас сильная математическая школа и два гениальных тренера — оба Андрей Сергеевич. Один — Станкевич, другой — Лопатин (наставник команды СПбГУ. РТ ), создавший с Дуровым «ВКонтакте» и «Telegram».Он был двукратным чемпионом мира. Мы гордимся своими детьми », — сказал Шалыто.
«Я могу объяснить причину наших побед на одном примере. В 2013 году мы провели чемпионат мира по футболу и заняли первое место. Казалось бы, тренеру команды надо было ехать отдыхать куда-нибудь в Крым или на Бали. А он пошел проводить летнюю компьютерную школу и попросил меня не звонить ему до 22:00, потому что он укладывает детей спать », — пояснил профессор.
Собеседник RT считает, что программирование можно сделать профессиональным видом спорта, хотя студенты не согласны с профессором.Тем не менее, Шалыто надеется, что вице-премьер Виталий Мутко услышит его пожелания — и в будущем появится федерация спортивного программирования России.
«Посмотрите, какие результаты показывают наши спортсмены в хоккее, футболе или баскетболе. Вы можете представить, что мы теперь семикратные чемпионы в каком-либо виде спорта? Почему наш Станкевич не может быть заслуженным тренером России?
Специалист по информационной безопасности Российского института стратегических исследований (РИСИ) Иван Монков рассказал RT, что основой успеха российских программистов является советская / российская физико-математическая школа.
«Россия имеет отличную научную базу для появления высококлассных ИТ-специалистов. Несмотря на распад СССР, техническое образование в 90-е годы оставалось на очень достойном уровне. Поэтому меня не удивляет, что наши ребята из года в год становятся чемпионами », — сказал Монков.
«Наверх»
Университет ИТМО — единственный семикратный чемпион мира по ACM ICPC. В 2016 году в рейтинге лучших ИТ-университетов мира Times Higher Education St.Петербургский университет занял 56-е место.
История ИТМО началась 13 марта 1900 года, когда Николай II основал профессионально-техническое училище с механико-оптическим и часовым отделением. В 1920 году основные классы школы были преобразованы в техникум. В 1933 году на базе техникума был создан Ленинградский институт точной механики и оптики.
В 1994 году институт получил статус вуза, что позволило открыть направления, связанные с информационными технологиями.Статус национального исследовательского университета ИТМО получил в 2009 году.
22 мая обозреватель Le Figaro Марк Черки написал, что ИТМО «готовит молодых гениев информатики, которые доминируют на самых престижных международных соревнованиях». По его мнению, успехи петербургских студентов свидетельствуют о том, что Россия «стремится вернуться в лидеры мировой исследовательской гонки».
В 2017 году 133 команды из всех регионов мира приняли участие в финале самого престижного конкурса среди программистов, конкурс проводился в 41-й раз.В результате команда ИТМО в седьмой раз стала победителем ACM ICPC, что никогда не было возможным ни для одного вуза мира, сообщает пресс-служба вуза.
Победителями стали студенты факультета компьютерных технологий Владимир Смыкалов, Иван Белоногов и Илья Збан. Главным тренером команды был Андрей Станкевич, доцент кафедры компьютерных технологий, кандидат технических наук. В 2016 году он получил престижную награду ACM ICPC Senior Coach Award за выход в финал конкурса за 15 лет.
Остальные команды из четверки также решили 10 задач, но потратили на это чуть больше времени. Итак, второе место заняла команда Варшавского университета. На третьем месте программисты из Сеульского национального университета. Команда СПбГУ, чемпион 2016 года, финишировала с четвертым результатом.
«Конкурс прошел на удивление гладко. В некоторых задачах мы интуитивно полагались на факты, которые не могли полностью доказать, и наш инстинкт нас не подвел.Нам удалось решить 10 задач фактически за четыре часа, и это давало хороший запас уверенности. Но только в самом конце, когда мы прошли десятую задачу, я подумал: «Ой, эй, видимо, получится взять золото!» — сказал Иван Белоногов.
Призерами стали и другие российские команды: команда МФТИ и Уральский федеральный университет. В 2017 году Россию представляли 13 команд из Москвы, Санкт-Петербурга, Саратова, Перми, Петрозаводска, Новосибирска, Самары, Томска и Екатеринбурга.Команды из России участвуют в чемпионате с 1993 года, а с 2000 года они выиграли соревнования 12 раз, в том числе в этом году.
Традиционно конкурс длился пять часов. За это время участники должны решить практические задачи. Особенность конкурса в том, что перед одним компьютером сидят команды из трех человек. Поэтому, помимо логики и умения работать под давлением, они должны показать навыки командной игры и правильного распределения ролей. Для решения некоторых проблем достаточно только аккуратности и внимательности. Другие задания требуют глубоких знаний различных алгоритмов. Результатом работы команды зачастую становится какое-то программное обеспечение, отвечающее заданным условиям. Проблемы проверяются автоматически согласно тестам, которые заранее составлены жюри, а решения проверяются в режиме реального времени. Учитывается полнота и скорость выполнения задачи, а также количество попыток, которые сделала команда при решении той или иной задачи.Команды не всегда успевают со всеми справиться. Такие суровые условия соответствуют реальной жизни, ведь клиент может просто отказаться от услуг программиста, если он зря тратит время и ресурсы.
Чтобы попасть в финал ACM ICPC, вам сначала нужно было пройти местный отбор в вашем собственном университете. Обычно в этих мероприятиях принимают участие более 300 тысяч человек. Затем проходят региональные соревнования, в которых определяются лидеры, достойные финала. В этом году чемпионы ICPC получают кубок чемпионата мира и денежный приз в размере 15 000 долларов США.
24 мая в Рапид-Сити (США) состоялась кульминация чемпионата мира по программированию ACM ICPC 2017. Команда Университета ИТМО стала абсолютным чемпионом, решив 10 задач из 12 быстрее и умнее своих конкурентов. Таким образом, Санкт-Петербургский университет установил новый рекорд в истории конкурса: команды Университета ИТМО в седьмой раз стали победителями ACM ICPC, что никогда не было возможным ни для одного вуза мира. Кубок чемпионата подняли над головой студенты факультета компьютерных технологий Владимир Смыкалов, Иван Белоногов и Илья Збан.В этом году в финале самого престижного конкурса среди программистов принимают участие 133 команды со всех регионов мира, конкурс проводился уже 41 раз.
Награждение команды Университета ИТМО
Команда университета смогла правильно решить 10 задач из 12, затратив на это минимум времени. Пришло время решать проблемы и меньшее количество неудачных попыток их пройти, что обеспечило команде седьмой Кубок ACM ICPC. Остальные «золотые» команды, вошедшие в четверку лидеров конкурса, также решили по десять задач каждая. Команда буквально преследовала чемпионов мира Варшавского университета, бывшего фаворита ACM ICPC-2017. На третьем месте программисты из Сеульского национального университета. Команда СПбГУ финишировала с четвертым результатом — прошлогодним чемпионом. Команда Университета ИТМО состоит из студентов факультета информационных технологий и программирования Смыкалов Владимир (первый курс магистратуры на кафедре КТ), Иван Белоногов (четвертый курс бакалавриата кафедры КТ) и Илья Збаня (четвертый курс бакалавриата кафедры КТ).Главным тренером команды был доцент кафедры компьютерных технологий, кандидат технических наук Андрей Станкевич , который подготовил не одно поколение спортивных программистов. В 2016 году он получил престижную награду ACM ICPC Senior Coach Award за выход в финал конкурса в течение 15 лет.
«Конкурс прошел на удивление гладко, , — делится впечатлениями Иван Белоногов . — В некоторых задачах мы интуитивно полагались на факты, которые не могли полностью доказать, и наш инстинкт нас не подвел.Нам удалось решить 10 задач фактически за четыре часа, и это давало хороший запас уверенности. Но только в самом конце, когда мы прошли десятую задачу, я подумал: «Ладно, видимо, получится взять золото!»
Другие российские команды также стали призерами: команда МФТИ выйдет с серебряным призером ACM ICPC, а Уральский федеральный университет с «бронзой» конкурса … Всего в этом году Россию представляли 13 команд — еще одна. чем в прошлом году, в том числе трое из Москвы и Питера.-Петербурга, а также из других городов: Саратова, Перми, Петрозаводска, Новосибирска, Самары, Томска и Екатеринбурга. Команды из Российской Федерации участвуют в чемпионате с 1993 года, а с 2000 года они выиграли соревнования 12 раз, в том числе в этом году.
Полную таблицу результатов можно найти здесь.
«Все команды, попавшие в ТОП-12, не раз попадали в список фаворитов — больших сюрпризов не было. По сравнению с прошлым годом азиатских вузов показали мощный рывок: в прошлом году они завоевали всего две медали, а сейчас — целых семь.Однако в каждом регионе много сильных команд, и конкуренция становится все более напряженной. «, — комментирует наставник команды Университета ИТМО Андрей Станкевич .
Последний час соревнований, признал тренер, был для него не менее волнующим, чем для его подопечных.
«После замораживания турнирной таблицы у ребят нет возможности показать тренеру, решена ли задача, но на этот раз, увидев изображение с экрана их компьютера во время трансляции, я заметил, что после отправки последней задачи G , быстро перешли на страницу результатов и подумали: значит все нормально, прошло.Это была не та задача, от которой следовало отказываться, если ответ был неправильным. «, — делится тренер.
Традиционно, как и в этом году, конкурс длился пять часов. За это время участники должны решить практические задачи. Особенность конкурса в том, что перед одним компьютером сидят команды из трех человек. Поэтому, помимо логики и умения работать под давлением, они должны показать навыки командной игры и правильного распределения ролей.Организаторы чемпионата отмечают, что для решения некоторых задач достаточно проявить осторожность и внимательность. Другие задачи требуют глубоких знаний различных алгоритмов. Результатом работы команды чаще всего является какое-то программное обеспечение, отвечающее поставленным условиям. Проблемы проверяются автоматически согласно тестам, которые заранее составлены жюри, а решения проверяются в режиме реального времени. Учитывается полнота и скорость выполнения задачи, а также количество попыток, которые сделала команда при решении той или иной задачи.Команды не всегда успевают со всеми справиться. Такие суровые условия соответствуют реальной жизни: ведь клиент может просто отказаться от услуг программиста, если второй тратит впустую время и ресурсы первого.
Чтобы попасть в финал ACM ICPC, вам сначала нужно было пройти местный отбор в вашем собственном университете. Обычно в этих мероприятиях принимают участие более 300 тысяч человек. Затем они проходят, в которых определяются лидеры, достойные финала. В этом году чемпионы ICPC получают кубок чемпионата мира и значительный денежный приз в размере 15 000 долларов США.Остальные призовые команды также не остаются без материального вознаграждения.
Международный студенческий чемпионат по программированию проводится ежегодно с 1977 года под эгидой Ассоциации вычислительной техники (ACM, штаб-квартира в Нью-Йорке). В этом году ACM ICPC в очередной раз установила новый рекорд по количеству участников. Всего в региональных отборочных турах приняли участие 46 381 студент из почти 3000 вузов. В прошлом году в чемпионате участвовало чуть более 40 000 программистов.По статистике организаторов мероприятия, количество участников увеличилось на 2000% с 1997 года, когда компания IBM начала поддерживать чемпионат.
За последние 17 лет российские программисты 11 раз выиграли чемпионаты мира по программированию ACM ICPC, а в последние пять лет кубки ежегодно уезжали в Россию. Журнал РБК выяснил, как развивалась карьера нескольких финалистов одного из самых престижных мировых соревнований по программированию
Фото: Асхат Бардынов для РБК
Международный студенческий чемпионат по программированию Ассоциация вычислительных машин International Collegiate Programming Contest (далее — ICPC) проводится с 1977 года.До финала, который проходит каждый раз в разных странах, дойдет до 100-120 команд, состоящих из трех человек. Организаторы турнира раздают 12 комплектов медалей — четыре золотые, серебряные и бронзовые награды.
За весь период проведения ICPC чемпионами стали студенты в основном двух российских вузов — Санкт-Петербургского государственного университета (Санкт-Петербургский государственный университет) и Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики (ИТМО).В 2006 году победу одержала команда Саратовского государственного университета.
Конкурс студенческий, но даже после пяти-десяти лет участие в нем указывается при приеме на работу, рассказал РБК руководитель группы по подбору персонала Amazing Hiring platform Александр Пашинцев. Чаще всего медалистов и чемпионов таких олимпиад нанимают интернет-гиганты — Яндекс, ВКонтакте, Facebook, Google, Amazon, Mail.Ru Group, Avito или специализированные компании, занимающиеся, например, высокочастотной торговлей, отмечает Пашинцев.По его словам, в крупных IT-компаниях от 5 до 10% от общего числа сотрудников составляют специалисты, прошедшие турниры ICPC.
Молодые люди, побеждающие в специализированных конкурсах, могут быть интересны крупным западным компаниям, которые привыкли обучать сотрудников самостоятельно, — считает Ирина Лукавская, старший консультант отдела информационных технологий и телекоммуникаций кадрового агентства Cornerstone. Уровень заработной платы таких сотрудников зависит от современности технологий, в которых они разбираются, и количества конкурентоспособных профессионалов на рынке.Например, для тех, кто работает с программным обеспечением 1С, ежемесячная зарплата составляет 150 тысяч рублей. — достойно, продолжает Лукавская, и ABAP-разработчики (владеющие внутренним языком программирования немецкого SAP) заработали более 200 тысяч рублей еще до кризиса 2008 года. в месяц.
Несколько членов ICPC отказались общаться из-за корпоративной политики компаний, в которых они в настоящее время работают. Журнал РБК побеседовал с четырьмя чемпионами и призерами ICPC, чтобы узнать, как развивалась их карьера и помогло ли им олимпийское прошлое.
Игровой тренер
Двукратный чемпион мира по программированию (2000 и 2001 гг.) Андрей Лопатин считает, что ему удается совмещать карьеру в IT и преподавание. Его бывший наставник Наталья Вояковская, доцент факультета информационных технологий и программирования СПбГУ, ушла после 15 лет работы, а Лопатин после второй победы в ICPC занял место главного тренера Университет. «Я хотел, чтобы бизнес продолжал жить.Если бы я не поднял его, он бы рухнул », — говорит учитель-чемпион.
Интерес к соревнованиям в СПбГУ растет: десять лет назад количество желающих заниматься спортивным программированием не превышало 100 человек в год. Сейчас количество студентов, желающих испытать свои силы в чемпионате, достигает 200 человек ежегодно: к Лопатину приезжают студенты разных факультетов СПбГУ. В основном это студенты-математики — у каждого свои успехи, но в среднем обучение занимает от трех до пяти лет.Финальный отбор для участия в конкурсе составляет около 50 человек, а в финал ICPC проходят всего три человека.
Андрей Лопатин уверен, что программисты — ценный ресурс, если они умеют не только писать код, но и знают, как должна работать программа.
На начальном этапе можно практиковаться один-два раза в неделю по несколько часов, делится опытом Лопатин, на более продвинутом уровне — три раза в неделю по пять часов. Также нужно постоянно делать уроки.Например, ученики, не решившие на уроке какие-то задачи, обязаны закончить их дома, иначе не будет прогресса, отмечает тренер.
При хорошем уровне подготовки студенты начинают раз в полтора месяца участвовать во выездных мероприятиях: в одном из университетов собираются команды из разных университетов, которые соревнуются между собой. Самая сильная площадка в России по составу участников и тренеров находится в Петрозаводском государственном университете, — говорит Лопатин.
Сборы периодически проходят за границей, но они, как правило, «намного слабее, чем в России» — из-за среднего уровня подготовки участников, говорит один из главных тренеров страны. В последние годы Россия доминировала в ICPC. Среди тех, кто вполне может конкурировать с российскими программистами, Лопатин называет американских, но это за счет «привозных» студентов — поляков, китайцев и др., Поскольку люди со всего мира едут учиться в ведущие университеты США.
«Говорят, что у китайцев есть тренировочные лагеря, похожие на наши, но нас никогда не приглашали на них, поэтому доподлинно неизвестно», — усмехается Лопатин.Когда он сам был школьником и участвовал в олимпиадах по программированию, о китайских участниках ходило много слухов: их якобы на год возили в горы и заставляли тренироваться. Так это или нет, но у китайских команд «довольно сильная конкуренция», Лопатин становится серьезным.
Программирование требует «больших математических знаний», — продолжает он: если начинать знакомство с математикой с детства, то у нас развивается определенный образ мышления. В ICPC участнику нужно не просто написать код — нужно решить сложную задачу и открыть что-то новое, а без математического мышления и знания алгоритмов тренер категоричен.С каждым годом задачи на чемпионате усложняются — задачи, которые еще 15 лет назад казались нереальными, теперь можно решить за 15 минут.
Многие ИТ-компании проводят собственные конкурсы по программированию, что позволяет им искать будущих сотрудников. Однако ICPC — самый престижный конкурс: в нем участвуют не просто программисты, создающие программы, а специалисты, которые придумывают, как такую программу можно организовать, — поясняет Лопатин. Финалисты ICPC могут сэкономить работодателю бюджет: 10 тысяч серверов обойдутся компании в 50 миллионов долларов, а два умных программиста могут подсказать, что нужно сделать, чтобы эти серверы не покупать, объясняет тренер.
Основная работа Лопатина — подготовка команд СПбГУ к соревнованиям по программированию. На протяжении многих лет он работал во ВКонтакте и Telegram, созданном Павлом Дуровым, но сейчас параллельно с педагогикой консультирует российский сервис по построению логистических маршрутов VeeRoute. Лопатин признается, что с момента своего последнего личного чемпионата 15 лет назад он отказал примерно десяти крупным компаниям, которые пригласили его на работу.
Главный для кошек
Дмитрий Егоров стал чемпионом мира ICPC в возрасте 20 лет — в 2014 году, будучи студентом третьего курса математико-механического факультета СПбГУ.Петербургский государственный университет. Сейчас он возглавляет отдел разработки и оптимизации баз данных крупнейшей в России социальной сети «ВКонтакте» и продолжает учиться в магистратуре Высшей школы экономики. Однако совмещение учебы с работой для Егорова — обычное дело.
Будущий чемпион мира окончил физико-математический лицей № 239 в Санкт-Петербурге — престижную школу, где, например, учился математик Григорий Перельман, доказавший гипотезу Пуанкаре, и Николай, брат основателя ВКонтакте Павла Дурова, который работал с ним над созданием и развитием социальной сети.
Дмитрий Егоров год назад возглавлял отдел ВКонтакте. Под его руководством четыре чемпиона мира по программированию. (Фото: Асхат Бардынов для РБК)
В 2014 году финал чемпионата ICPC прошел в начале июля в Екатеринбурге. Команда СПбГУ, в которой играл Егоров, заняла первое место — это третья подряд победа России на мировом турнире.
В первые годы учебы в университете Егоров проходил стажировку в Яндексе — с 2012 по 2014 год.В компании прием «стажеров» настроен на поток, поэтому при желании и «определенном уровне базовой подготовки» попасть туда несложно, — говорит студент. Он называет стажировку в Яндексе «чрезвычайно полезной» — не только с точки зрения приобретенных навыков программирования, но и с точки зрения организации внутри крупной компании. После стажировки Егоров понял, что не видит себя рядовым сотрудником крупной корпорации. «Я всегда был готов работать намного больше и лучше, чем другие, но я также ожидаю большей отдачи», — объясняет бывший студент Св.Петербургский государственный университет. У крупных компаний нет возможностей для роста и развития, нет индивидуального подхода, сетует Егоров. И это касается не только Яндекса, но и других ИТ-гигантов, таких как Google. «Если вы хотите спокойной жизни с хорошей зарплатой и уверенностью в завтрашнем дне, то крупные ИТ-компании — отличный вариант. Но это не для меня », — говорит чемпион ICPC.
Сразу после церемонии награждения к Егорову подошел один из сотрудников ВКонтакте и предложил присоединиться к команде.Спустя несколько месяцев студентка перешла на работу в крупнейшую социальную сеть. Перспективы для него очевидны: весной 2014 года из ВКонтакте ушел Павел Дуров, за ним последовали многие разработчики. «Несмотря на десятки миллионов пользователей в день, дух стартапа снова вернулся», — улыбается чемпион. Менее чем через год Егоров возглавил ведомство, в котором перешел на обычную должность. В его отделе семь человек: все они в разные годы участвовали в ICPC, четверо стали чемпионами мира.
Направление развития и оптимизации баз данных идеально подходит для бывших олимпиад, уверен Егоров. Несколько лет назад все высоконагруженные части сайта ВКонтакте были перенесены в собственные базы данных, оптимизированные под нужды компании, так как все доступные на рынке решения оказались для компании неэффективными. «Проще говоря, я отвечаю за то, чтобы килотонны нестандартных кошек никуда не пропадали», — смеется Егоров.
Аспирант не готов оценить степень значимости своего отдела для компании: во «ВКонтакте» сложно выделить ключевые и второстепенные отделы разработки.Для полноценной работы и разработки необходимы все компоненты — базы данных, back-end, front-end, группа системных администраторов, мобильная разработка. Без какой-либо из этих частей сайт довольно быстро начнет деградировать, уверен Егоров. «Вы не спрашиваете, какой орган у человека важнее — мозг или сердце? Без них человек может жить только анекдотами », — говорит он.
Все победители чемпионатов ICPC, как правило, могут выбрать место работы из довольно большого списка.Например, генеральный спонсор чемпионата мира IBM во время церемонии награждения раздает всем победителям приглашения связаться с кадровой службой и обсудить вакансии, вспоминает Егоров. Для себя он сразу решил, что не хочет уезжать из России.
«Для многих айтишников переезд за границу — это что-то вроде навязчивой идеи, которую они культивируют друг в друге, — говорит Егоров. Он не жалеет о том, что выбрал «ВКонтакте» в качестве работодателя, а массовую миграцию айтишников за границу называет «абсолютной катастрофой для страны».«
Поле возможностей
Глеб Леонов, студент 1 курса механико-математического факультета СПбГУ, и двое друзей увидели объявление на стенде университета о наборе желающих пройти олимпиадное программирование. Заинтересовался выпускник математической школы — Академической гимназии СПбГУ, где учился Павел Дуров. Так он попал в «класс» Андрея Лопатина. Дважды Леонов становился финалистом ICPC, однажды завоевав серебряную медаль.
Во время учебы в СПбГУ Леонов не подрабатывал: особой нужды в этом не было, а учеба и обучение программированию занимали много времени, вспоминает он. После университета Леонов поступил в аспирантуру, но через год ушел: хотел сконцентрироваться на программировании.
Глеб Леонов с детства любил решать математические задачи, а уже в университете увлекся олимпиадным программированием (Фото: Асхат Бардынов для РБК)
Сейчас финалисты ICPC получают много предложений от потенциальных работодателей: десять лет назад их возможности были скромнее. Однако уже тогда Google приглашал программистов на собеседования. Леонова никогда не привлекала перспектива работы в одной из крупнейших американских ИТ-корпораций.
Леонов уверяет, что участникам ICPC теперь легко уехать за границу и найти там работу: например, уровень письменного английского у олимпиадных спортсменов автоматически поднимается на высокий уровень, так как все условия задач указаны на английском языке. … Кроме того, большая часть специальной учебной литературы можно найти только на этом языке, медалист ICPC разводит руками.
Участие в чемпионатах и работа в компаниях — это не одно и то же. Если речь идет о спортивном программировании, то ваша цель решить проблему и как можно быстрее написать программу. А работая в компании, цель специалиста — разработать программное обеспечение, которое можно модифицировать. Иногда бывает необходимо «разрезать» программу на части и заменить одну из «частей», не касаясь остальных, поэтому в работе программиста главное — это практические навыки. По словам Леонова, в университете его сложно получить.Причем, чем выше должность, тем больше требуется дополнительных навыков.
Леонов работает в JetBrains в Санкт-Петербурге семь лет. Компания JetBrains, созданная в 1999 году в Праге российскими программистами Сергеем Дмитриевым, Евгением Беляевым и Валентином Кипятковым, занимается разработкой программного обеспечения для ИТ-специалистов. Теперь, помимо Праги и Санкт-Петербурга, у компании есть офисы в Москве, Мюнхене, Бостоне и Новосибирске. Леонов устроился на работу в JetBrains сам — попросил контакты у сотрудников компании и отправил резюме.
«Если ученик вышел в финал чемпионата мира, то, скорее всего, у него есть способности и он легко сможет пройти собеседование на позицию младшего программиста», — улыбается Леонов.
Сейчас финалист ICPC занимается разработкой инструментов, но не для программистов. Для кого — Леонов отказался отвечать, сославшись на внутренние правила компании. Несколько раз в год он участвует в индивидуальных соревнованиях по программированию, проводимых Google, Facebook, Mail. Ru Group и др. Отборочные этапы проходят через Интернет, а финалисты вызываются на финальные этапы в разных городах мира.«Конечно, я не дохожу до финала, потому что больше делаю для себя», — признается Леонов.
Ядро Google
Петр Митричев перенял увлечение математикой у старшего брата, который также занимался программированием. Мама, химик по образованию, купила Питеру книги по математике. Когда в доме не было компьютера, Митричев-младший читал литературу по программированию и ходил с братом в Центр детского и юношеского творчества, где занимались в компьютерном кружке.В семилетнем возрасте он поступил в районную школу № 827, а в 14 лет перешел в специализированный класс школы № 57 города Москвы, а затем поступил на механико-математический факультет МГУ.
В школе учитель информатики пригласил Митричева поучаствовать в олимпиаде по программированию Северо-Западного округа Москвы. «Попав в эту систему, будет легче участвовать в других олимпиадах», — вспоминает Митричев. Также он участвовал во Всероссийской олимпиаде школьников, несколько раз выезжал на двухнедельные сборы в разные города, где тренируются, в том числе будущие участники ICPC.
Петр Митричев еженедельно участвует в соревнованиях онлайн-программистов. После победы на ICPC это стало его хобби. (Фото: Асхат Бардынов для РБК)
В отличие от студентов СПбГУ и ИТМО, у Митричева и его однокурсников с механико-математического факультета не было одного тренера. Бывшие члены ICPC выступали в качестве неформальных наставников, делясь своим опытом как в Интернете, так и в тренировочном лагере. Евгений Панкратьев, ведущий научный сотрудник лаборатории вычислительных методов механики и математики МГУ, помогал участвовать в соревнованиях: организовывал поездки, помогал в оформлении документов.Митричев дважды выходил в финал ICPC — в 2003 году в США и в 2005 году в Китае, когда он был на первом и третьем курсе соответственно. Оба раза в командах он занимал вторые места.
Во время учебы Митричев иногда работал неполный рабочий день, но не искал работу на полную ставку. Он уверен, что победа в ICPC не дает 100% гарантии получения интересного предложения от потенциального работодателя. «ICPC скорее служит социальным средством общения профессионального игрока с хорошей компанией-работодателем», — улыбается Митричев.Соревнования учат грамотно программировать, после чего любая работа по специальности становится по плечу, — говорит он. Однако на олимпиаде важно программировать быстро и без ошибок, и можно не торопиться в работе. При этом он признает: умение писать код быстро и без ошибок приводит к тому, что вам не придется переделывать работу несколько раз.
Финалисты
ICPC могут организовывать аналогичные конкурсы в рамках крупных корпораций или аналитиков (например, торги на бирже).Последний вариант Митричев рассматривал для себя после выпуска. «Там можно заработать старость за более короткий период времени», — признает он.
Однако с 2007 года Митричев работает в Google — сначала в московском офисе, а с 2015 года в швейцарском офисе. На собеседовании в одной из крупнейших IT-компаний мира Митричеву пришлось решить задачи, аналогичные тем, что возникали в финале ICPC, вспоминает программист. Правда, сейчас он занимается поисковиком сайта Google, и эта работа больше связана с теорией вероятностей, которую Митричев изучал в университете.Скорость, полученная во время соревнований, помогает, когда вам нужно, например, создать прототип программы и посмотреть, работает ли она.
Сейчас Митричев помогает Google проводить собственные соревнования по программированию — Google Code Jam, придумывает задачи для турниров вместе с коллегами. Сам Митричев дважды принимал участие в этом конкурсе и занял третье место в 2005 году и первое в 2006 году. Программист признается, что обсуждал возможное сотрудничество с представителями ВКонтакте, Facebook и Яндекс, но сейчас ему кажется, что Google — лучший вариант », — сказал он. Потому что компания решает интересные задачи, а ее сотрудники — умные люди, с которыми приятно работать.«
После ICPC Митричев еженедельно участвует в онлайн-соревнованиях. По его словам, для решения некоторых задач ему приходится заново учиться: «Новое поколение в этом плане проще: они сразу осваивают современные методы программирования». Сейчас Митричев возглавляет один из ведущих рейтингов американской корпорации Topcoder.com, которая с 2001 года проводит соревнования по спортивному программированию.
С.-ПЕТЕРБУРГ, 19 мая — РИА Новости. Команда СПбГУ выиграла чемпионат мира по программированию среди студентов Ассоциации вычислительной техники (ACM-ICPC), сообщается на сайте вуза.Кроме того, на этом чемпионате команда МФТИ заняла 4-е место и получила золотые медали, а призерами стали еще три российских вуза — ИТМО, УрФУ и УНН.
«Наши студенты — Игорь Пышкин, Алексей Гордеев, Станислав Ершов — под руководством Андрея Лопатина в кратчайшие сроки решили несколько сложных задач и показали лучшие результаты», — говорится в сообщении.
Представители Санкт-Петербургского университета обыграли соперников из Гарвардского университета, Массачусетского технологического института, Шанхайского университета Чжао Тонга, Московского университета и Санкт-Петербурга.Петербургский университет ИТМО, команда которого заняла второе место.
Студенты СПбГУ уже побеждали на чемпионатах мира в 2000, 2001 и 2014 годах. Университет ИТМО (Университет информационных технологий, механики и оптики) стал абсолютным чемпионом ACM ICPC в 2004, 2008, 2009, 2012, 2013 и 2015.
МФТИ, в свою очередь, завоевал второе золото в своей истории — программисты из Долгопрудного выиграли первые медали в 2012 году, на чемпионате в Варшаве.
«Мы начали активно участвовать в олимпиадах по программированию в МФТИ примерно одновременно с запуском программы по информатике в 2011 году.С тех пор мы регулярно выходили в финал ACM ICPC. Финал этого чемпионата — сотня сильнейших команд, сотня сильнейших университетов IT-сферы. Быть одним из них уже очень престижно для многих, — говорит Алексей Малеев, директор Центра развития ИТ-образования МФТИ.
российских программиста на чемпионате мира: привычка побеждать На прошлой неделе в Марракеше наши программисты выиграли Чемпионат мира, заняв два первых места Об особенностях этой победы рассказывает посетивший чемпионат Андрей Анненков.
За последние три десятилетия ICPC был самым престижным в мире интеллектуальным соревнованием молодых программистов. Конкурс проводится под эгидой Международной ассоциации вычислительной техники ACM при поддержке IBM.
По правилам конкурса в каждой команде по три студента. Им предоставляется один компьютер и набор математических задач. Побеждает команда, решившая наибольшее количество задач, а при равенстве правильных ответов побеждает команда, потратившая меньше времени.
Первое командное соревнование по программированию ACM было проведено в Техасском университете в 1970 году. Чемпионат принял свой текущий формат в 1977 году, когда его первый финал был проведен в рамках ежегодной конференции ACM по информатике.
как складывались карьеры победителей мировых IT-чемпионатов ACM ICPC Programming Championship.
Сегодня в 18 часов по московскому времени в американском Rapid City стартует финал самого престижного мирового конкурса программистов — ACM ICPC.Приглашаем всех увидеть это событие вживую.
(прямая трансляция начнется в 17.00 по московскому времени) и поддержать команду Университета ИТМО, одного из фаворитов чемпионата. Ниже представлены подробности того, как команды со всего мира готовились к финалу, а также их прогнозы на победу.
Немного фактов
- Спортивные программы ежегодно привлекают больше участников, чем Олимпийские игры — в этом году в соревнованиях ACM ICPC принимают участие 46381 человек из 103 стран, а в Летних Олимпийских играх в Рио на всех этапах участвовали 11 544 спортсмена (в 4 раза меньше) .
- Интерес к конкурсу растет с каждым годом. По словам директора регионального полуфинала чемпионата ACM ICPC в России и странах Северо-Восточной Европы, декана факультета информационных технологий и программирования Университета ИТМО Владимира Парфенова, в 2004 году в турнире приняли участие 8000 программистов. ACM ICPC World Championship (включая региональные отборочные этапы), 2016 — уже более 40 тысяч.
- Позиция лидеров чемпионата давно закрепилась за российскими вузами — наши команды 11 раз становились абсолютными чемпионами ACM ICPC.Из них команды Университета ИТМО шесть раз побеждали в чемпионате — и это мировой рекорд (в 2017 году Университет ИТМО борется за титул семикратного чемпиона мира).
- Количество участников из России на протяжении многих лет остается высоким: в 2004 году во всех этапах чемпионата приняли участие 2100 программистов из России, к 2016 году их количество уже увеличилось до 3400.
- Формат чемпионата ACM ICPC называют не только одним из самых успешных, но и одним из самых сложных: каждая команда использует только один компьютер и должна решить как можно больше задач в короткие сроки.Из-за этого чемпионат предъявляет повышенные требования не только к творчеству, знанию алгоритмов и «железа», но и к умению распределять роли и работать в команде.
Я бы сказал, что можно преуспеть в соревновании до определенного уровня, имея только знания первой категории [знание математики, алгоритмов, языка программирования]. Тем не менее, знания из второй категории [понимание правильной тактики, навыки грамотного распределения ресурсов] значительно упрощают жизнь и работают как катализатор.Как и в любом виде спорта: есть физические навыки, есть знания техники, психологии и так далее. Добиться успеха можно только за счет первого, но второй будет работать катализатором
— Павел Кротков, выпускник факультета информационных технологий и программирования Университета ИТМО, участник и организатор многих олимпиад по программированию в России и за рубежом , в том числе ACM ICPC NEERC
- Кстати, с октября прошлого года Павел и его коллеги — Максим Буздалов, чемпион ACM ICPC 2009, и Дарья Яковлева, которая в 2016 году вошла в десятку лучших на международных соревнованиях по программированию Google Code Джем для женщин — читала курс «Как побеждать в соревнованиях по программированию: секреты чемпионов», запущенный Университетом ИТМО на платформе edX.О том, какие советы чемпионы дают новичкам в спортивном программировании, мы писали здесь: и.
- За онлайн-трансляцию чемпионата отвечает и команда Университета ИТМО (конечно, не спортивные программисты, а специалисты по видеотрансляциям). Пока участники чемпионата борются за чемпионский титул, видеокоманда, аналитики, режиссер, режиссер, дизайнер, программисты и видеоредакторы стремятся превратить финал ACM ICPC в событие, за которым будет интересно наблюдать людям со всего мира. .Кстати, в этом году специально для российских зрителей мы организуем вещание на русском языке. О том, как работает команда, какие аппаратные и программные решения используются для трансляции, читайте в этой статье.
Подготовка участников
Перед выходом в финал команды проходят подготовку на различных подготовительных сборах. Один из таких этапов обучения проводится ежегодно в МФТИ (Moscow Workshops ACM ICPC).
Формат мастерских достаточно жесткий: за 11 дней непрерывного обучения ученики-участники решают не менее 100 олимпиадных задач.Также в рамках программы обучения предусмотрены консультации с преподавателями лагерей и изучение лекционных материалов.
Будущие победители не пренебрегают такой подготовкой: в 2016 году 8 из 13 команд-победителей ACM ICPC приняли участие в сборах. 170 студентов и преподавателей из 19 стран и 44 университетов приняли участие в текущих Moscow Workshops ACM ICPC. Возможность дистанционного участия позволила командам из США, Латвии, Румынии, Китая и Индии пройти обучение у российских специалистов.
Прогнозы: кто выиграет
По словам Андрея Станкевича, тренера команды Университета ИТМО, члена оргкомитета полуфиналов чемпионата мира по футболу в Северо-Восточной Европе, в этом году претендентами на победу будут следующие университеты:
- Россия : СПбГУ, Университет ИТМО и МФТИ (тройка лидеров в регионе «Северо-Восточная Европа»)
- Китай : Университет Синьхуа, Шанхайский транспортный университет, Университет Фудань, Пекинский университет
- США : Массачусетский технологический институт
- Швеция : Королевский технологический институт
По словам Андрея Станкевича, они могут составить конкуренцию командам других китайских и корейских университетов, а также традиционно сильной команде Варшавского университета.
«Как показали предфинальные сборы в МФТИ, китайский университет Синьхуа в этом году имеет очень сильную команду. В него вошли ученики, которые в свое время школьниками заняли абсолютные первые места на международной олимпиаде. Тем не менее, наша команда сумела дважды обыграть их на тренировочном зачете, так что шанс есть.
Среди российских команд очень хорошо проявили себя команды из Университета ИТМО, СПбГУ и МФТИ. Из неожиданных открытий последнего сбора — команда из Австралии (Университет Нового Южного Уэльса) и более сильная, чем раньше, команда KTH из Стокгольма.Есть также сильные команды из Массачусетского технологического института и ряда других китайских университетов: Шанхайского транспортного университета, Фуданского университета из Пекина, Пекинского университета. «
— Андрей Станкевич
Владимир Парфенов отмечает, что в этом году результаты российских команд, вышедших в финал, были ожидаемыми: лидеры выступили стабильно хорошо, но состав вузов-финалистов практически не изменился по сравнению с прошлым годом:
Среди российских финалистов участники старые ([они] выходили в финал раньше, но не во все годы), так как очень сложно подготовить команду, которая выйдет в финал.
Если говорить о регионе [Северо-Восточная Европа], то в этом сезоне СПбГУ, Университет ИТМО и МФТИ — тройка сильнейших российских команд, так как у МГУ, например, не было сезона. С нами могут соревноваться белорусские команды из других стран [региона].
— Владимир Парфенов
Финал чемпионата мира по программированию ACM-ICPC 2017 прошел 24 мая в Рапид-Сити (США). Абсолютными чемпионами стала команда Санкт-Петербургского исследовательского университета информационных технологий, механики и оптики (СПбНИУ ИТМО), решившая 10 задач. из 12 быстрее своих конкурентов.Санкт-Петербургский университет установил новый рекорд в истории конкурса: команды Университета ИТМО стали его победителями в седьмой раз, что никогда не было возможным ни для одного вуза мира.
А кто наши герои?
В команду победителей вошли трое студентов факультета компьютерных технологий Владимир Смыкалов, Иван Белоногов и Илья Збан. Главным тренером команды был доцент кафедры компьютерных технологий, кандидат технических наук Андрей Станкевич, получивший в прошлом году премию ACM ICPC Senior Coach Award за то, что за 15 лет его подопечные вышли в финал соревнований.
Золотыми медалистами ACM-ICPC 2017 стали Санкт-Петербургский государственный университет (победитель прошлого года), университеты Варшавы и Сеула. Серебряные медали ACM-ICPC 2017 получили команды из Университета Фудань, Пекинского университета, Университета Синьхуа и МФТИ. «Бронзу» завоевали представители Токийского университета, Шведского Королевского технологического института, Уральского федерального университета и Корейского института передовых технологий.
Всего в этом году в финале ACM-ICPC 2017 приняли участие 133 команды из всех регионов мира.Сам конкурс проводился уже 41 раз.
Кульминация чемпионата мира по программированию ACM ICPC 2018 состоялась в Пекине 19 апреля. Чемпионский Кубок снова отправляется в Россию, но на этот раз впервые в истории — в Москву. Первую строчку турнирной таблицы ACM ICPC занимает МГУ. Второй результат показала команда Московского физико-технического института, получившая золотые медали. Для остальных российских команд игры в Пекине оказались не самыми удачными. Команда Университета ИТМО, действующий рекордсмен по количеству чемпионских побед, завоевала «бронзы» соревнований. Всего среди победителей и призеров ACM ICPC-2018 — четыре российские команды.
Коллектив МГУ
С каждым годом самое престижное соревнование среди программистов расширяет свою географию и увеличивает количество участников: в этом году в финале чемпионата приняли участие 140 команд из 51 страны. Соревнования проводятся 42 раза.
Чемпионат в Пекине определенно выделился среди последних соревнований ACM ICPC. С 2012 года чемпионский кубок разыгрывается между двумя петербургскими вузами — Университетом ИТМО (четыре победы за последние шесть лет) и Санкт-Петербургским государственным университетом (две победы за последние шесть лет). ACM ICPC-2018, не самый удачный для двух лидеров конкурса, открыл новую «звезду» чемпионата — команду МГУ. Ломоносов, никогда ранее не получавший чемпионского титула, но неоднократно завоевавший «золото» чемпионата (пять раз занимавший второе место).
Команда МГУ прибыла в Пекин в совершенно новом составе: чемпионами стали Михаил Ипатов, Владислав Макеев и Григорий Резников. Тренер команды — Елена Андреева. Студенты успешно решили девять задач, пропустив последнюю за две минуты до окончания конкурса. Таким образом, чемпионский кубок снова достается России, но уже в Москве.
Второе место и золотую медаль получила также команда Москвы из МФТИ (восемь решенных задач).Третьим результатом стала команда Пекинского университета, завоевавшая «золото», четвертым — команда Токийского университета.
Университет ИТМО занял девятое место в турнирной таблице и получил бронзовую медаль. Команда университета правильно решила 7 задач из 12. В этом году Университет ИТМО в финале Чемпионата мира по программированию в Пекине представляли первокурсники кафедры компьютерной техники Илья Збан и Иван Белоногов , которые принесли Чемпионы ICPC в Рапид-Сити в университете в прошлом году, а также студент второго курса бакалавриата Михаил Путилин , который впервые вышел в финал.Главным тренером команды был доцент кафедры компьютерных технологий, кандидат технических наук Андрей Станкевич , который подготовил не одно поколение чемпионов по спортивному программированию. В 2016 году он получил престижную награду ACM ICPC Senior Coach Award за то, что на протяжении 15 лет его подопечные выходили в финал соревнований.
«Мы рады, что Кубок ICPC снова уезжает в Россию, , — говорит Андрей Станкевич, тренер команды Университета ИТМО.- Среди команд-победителей не было сюрпризов. Все золотые медалисты — победители Международной олимпиады по программированию в старших классах (IOI), и все они считались претендентами на титул чемпиона. К сожалению, команда Университета ИТМО не преуспела в середине соревнований — в процессе накопилось несколько проблем, преодолеть которые оказалось непросто. К счастью, большая тренировка позволила нам добиться стабильности, и даже из очень плохой ситуации команде удалось получить медаль.»
Помимо чемпионского титула в олимпиаде разыгрываются золотые, серебряные и бронзовые медали: в этом году призерами стали 13, а не 12 команд. Среди медалистов из России, помимо МФТИ и Университета ИТМО, есть и Уральский федеральный университет — для них это пятая бронзовая медаль в истории участия в ACM ICPC.
Таблицу результатов можно найти здесь.
Всего в этом году Россию в финале представляли 11 команд, в том числе четыре команды из Москвы и три из Санкт-Петербурга.Петербург, а также участники из других городов: Саратов, Пермь, Новосибирск и Екатеринбург. В целом же российские вузы давно закрепились в позиции лидеров чемпионата: команды из Российской Федерации участвуют в чемпионате с 1993 года, а с 2000 года они 13 раз становились абсолютными чемпионами ACM ICPC. Из них команды Университета ИТМО семь раз выиграли чемпионат, установив мировой рекорд.
Международный студенческий чемпионат по программированию проводится ежегодно с 1977 года под эгидой Ассоциации вычислительной техники (ACM, штаб-квартира в Нью-Йорке).Однако, несмотря на то, что соревнования в нынешнем формате существуют уже более 40 лет, их популярность среди молодых программистов продолжает расти из года в год. Например, в прошлом году для участия в соревнованиях по всему миру было зарегистрировано более 46 000 студентов, что в четыре раза превышает количество спортсменов на летних Олимпийских играх в Рио.
В этом году в финале приняли участие 140 команд из 51 страны, что на семь больше, чем в прошлом году. Студенты приехали со всех регионов мира. Конкурс проводился в крупнейшем университете Китая — Пекинском университете, территория которого считается одним из самых красивых мест в мире.
Чтобы пройти в финал, команды должны сначала пройти квалификацию в своем учебном заведении, а затем пройти региональный раунд. В частности, в декабре прошлого года Университет ИТМО стал одной из четырех площадок отборочного тура в России и СНГ, в котором приняли участие более 300 команд. По результатам полуфинала за лучший результат были отобраны 16 команд, представляющих Северную Евразию.
Согласно правилам конкурса, в одной команде может быть не более трех учеников до 25 лет.Студенты, дважды участвовавшие в финальном этапе конкурса, к участию в чемпионате не допускаются. За пять часов программисты должны решить от 8 до 12 алгоритмических задач, условия которых написаны на английском языке. Команды пишут решения на языках программирования Java, C, C ++, Kotlin и Python (это набор для финала, который был утвержден правилами в этом году) и отправляют их на тестовый сервер.
Программы
тестируются на большом количестве различных вступительных испытаний, неизвестных участникам.Если программа дала неверный ответ или не уложилась в лимиты по времени или памяти, команде отправляется сообщение об этом, после чего участники могут отправить исправленную версию. Проблема считается решенной, если программа дала правильные ответы на все тесты. В отличие от других олимпиад частичные решения не учитываются. Побеждает команда, которая правильно решила больше всего задач. Если несколько команд решают одинаковое количество задач, то их позиция в рейтинге определяется штрафным временем.
МОСКВА, 19 апреля. / ТАСС /. Российские студенты выиграли чемпионат мира и четыре из 13 медалей на престижном чемпионате мира по программированию ICPC, финал которого прошел в Пекине в четверг. Это команды студентов четырех вузов России — МГУ. Ломоносова, МФТИ, ИТМО и Уральский федеральный университет, сообщили в пресс-службе МФТИ.
«Российские участники выиграли чемпионат мира и четыре из 13 медалей — больше, чем остальные страны-участницы: команды из Китая и США получили по три медали, по одной из Японии, Южной Кореи и Литвы.МГУ завоевал первое место и Кубок чемпионов. «Золото», помимо МГУ, получили МФТИ, Пекинский университет и Токийский университет. Серебро досталось Сеульскому университету, Университету Южного Уэльса, Университету Синьхуа и Шанхайскому университету Чжао Тонга. Бронзу выиграли Университет ИТМО, Университет Центральной Флориды, Массачусетский технологический университет, Вильнюсский университет и УрФУ », — отметили в пресс-службе.
Чемпионат мира по программированию
Международный студенческий чемпионат по программированию (ICPC) — старейший, крупнейший и самый престижный чемпионат мира по спортивному программированию.Конкурс проводится ежегодно с 1977 г. под эгидой Ассоциации вычислительной техники (ACM). Команды, прошедшие многоступенчатый отбор на региональных этапах, выйдут в финал чемпионата.
В этом году в чемпионате ICPC, включая региональные отборочные, приняли участие около 50 тысяч лучших студентов-программистов из около 3 тысяч университетов 111 стран мира.
российских программиста уже много лет лидируют на чемпионате мира.С 2000 года команды из нашей страны в 13-й раз побеждали на ICPC. Шесть лет, с 2012 по 2017 годы, чемпионат мира передавали друг другу две петербургские команды — СПбГУ и Университет ИТМО, имеющий мировой рекорд по количеству чемпионских титулов: у него семь кубков. . У ближайших зарубежных соперников — американского Стэнфорда и китайского университета Чжао Тонга — всего по три победы.
Команды из Российской Федерации принимают участие в ICPC с 1993 года.
В ICPC соревнуются команды из трех учеников не старше 25 лет. В распоряжении команды всего один компьютер, поэтому, помимо логики и умения работать в сжатые сроки, участники должны продемонстрировать навыки командного взаимодействия и правильно распределять роли. Побеждает команда, которая правильно решила наибольшее количество задач и при этом показала лучшее время.
Все победители ICPC получают денежный приз: команда чемпионов — 15 тысяч долларов; команды, завоевавшие золотые медали — 7 долларов.По 5 тысяч; серебряные призеры — по 6 тысяч долларов, а команды, завоевавшие бронзу, — по 3 тысячи долларов.
Как выиграть медаль
Система международных научных олимпиад сложна и охватывает практически все предметы. Самая старая из них — математика (Международная математическая олимпиада, или IMO), которая началась в 1959 году. Самые новые — по наукам о Земле (IESO) и астрономии (IOAA), стартовавшие в 2007 году. Развиваются турниры по робототехнике и программированию. Наиболее известны ACM / ICPC, Google Code Jam, Simulink Student Challenge и Всемирная олимпиада роботов.
Российские студенты и школьники попали в заголовки победителей олимпиад, особенно по физике, программированию и робототехнике. Их возраст колеблется от шести до 25 лет и охватывает разные категории. Каждый год они забирают домой высшие награды. И они просто не могли перестать это делать, глобальный финал Всемирной олимпиады роботов 2018 в ноябре этого года снова демонстрирует это в Таиланде. Команда Университета ИТМО и Президентского лицея №239 завоевала золотую медаль в старшей школе со своим проектом Strawberry Fields.Команда студентов Санкт-Петербургского университета ИТМО (Информационные технологии, механика и оптика) одержала седьмую победу на Международном студенческом чемпионате по программированию (ICPC) ACM в 2017 году, а также позволила МГУ (1-е место) и Московскому институту физики и физики. Технологии (2-е место) поднимутся на подиум в мае этого года.
Может возникнуть острый вопрос: как россияне побеждают?
Все считают, что современная Россия унаследовала сильные математические и физические традиции Советского Союза, и в этом действительно суть и основная причина этого явления.Такие ученые, как Петр Капица, Игорь Курчатов и Лев Ландау, совершили революционные прорывы. После распада СССР в 1990-х годах IT-специалисты стали очень востребованными. Программирование было практически единственной профессией, на которой можно было зарабатывать деньги. Кроме того, хорошо подготовленным математикам довольно легко овладеть программированием, потому что информатика — это практическое применение математики. Итак, информатика тоже прижилась в России, хотя и с опозданием. Однако не все так просто.
Не во всех странах есть многоуровневые национальные соревнования, но в этой стране есть мнение экспертов.В России общероссийские олимпиады проводятся на четырех уровнях: школьном, городском, областном и национальном. Вопросы и задания на всероссийской олимпиаде могут быть сложнее, чем на международной. Затем 10-15 лучших российских студентов приглашаются в специальные учебные центры, такие как центры в Московском физико-техническом институте (МФТИ), МГУ им. Ломоносова, Сириус в Сочи и Иннополис в Казани. Они проводят сборы, где продолжается отбор. После трех или четырех занятий в течение учебного года, когда они проходят серьезную подготовку, на основе их достижений выбирается 5-8 учеников, которые будут представлять эту страну на предметных олимпиадах.Однако перед выходом на международные соревнования у нас есть еще две недели.
Большинство экспертов сходятся во мнении, что россияне тоже обязаны своими результатами своей системе обучения и воспитания. Как это работает? Школьники в России начинают в начальной школе, когда им задают задачи, требующие от них выполнения сразу нескольких шагов в уме. Им не разрешается использовать калькулятор на уроках и соревнованиях. Более того, школьники довольно рано начинают оперировать абстрактными понятиями.Например, в средней школе в России им выставляют многочлены. Числа — это вообразимая концепция, но (a + b) HOW2 понять гораздо сложнее. Это требует абстрактного мышления.
В странах СНГ и России по-прежнему существует развитая система специальных школ, физико-математических лицеев и система специальностей в средних школах. Таким образом, соревновательная среда сама становится рутиной, и школьники принимают активное участие в олимпиадах: местных, региональных, национальных и международных.Продвигаясь через Национальную школьную олимпиаду, ученики тренируются для выполнения сложных задач и получают опыт, соревнуясь с лучшими из лучших, и их усилия окупаются. Другими словами, олимпиады помогают талантливым детям попасть в лучшие вузы страны.
Основы программ в стране и за рубежом в целом схожи, но академические способности студентов могут отличаться. Прием во многие университеты России настолько строгий, что привлекают студентов с уникальной квалификацией.Например, необходимый балл ЕГЭ для поступления в МФТИ уже много лет составляет 94, что делает его, наряду с МГИМО, одним из самых сложных вузов в России. Поступающие получают серьезное образование и много работают в команде. Способность работать в исследовательской группе представляет собой навыки командной работы, важный набор, объясняющий, что существует ряд ролей, которые может выполнять любой человек в команде, и представляющие многочисленные навыки, которые необходимы для выполнения командных ролей, ориентированных на конкретные задачи.
Командную игру подчеркивает Максим Спорышев, капитан команды подводной робототехники ДВФУ и Дальневосточного отделения РАН. «Факторами успеха являются, во-первых, хорошая подготовка студентов, а во-вторых, взаимодействие между лучшими студентами в различных областях — инженеры-механики, инженеры-электронщики и инженеры-программисты. Хорошие программисты не часто дружат с хорошими механиками и хорошими инженерами-электриками. Еще реже они собираются в одной команде для подводных роботов.В-третьих, в ДВФУ действует хорошая система наставничества, чтобы студенты могли правильно использовать свои навыки и полагаться на предыдущий опыт, чтобы избежать ошибок ».
Ученые, исследователи и разработчики из крупных российских компаний, возглавляя учебный процесс или участвуя в нем, предлагают студентам уникальные знания в различных областях, что является еще одним способом подготовки чемпионов. Hi-Tec и ИТ-компании включают в университетские инженерные программы и программы по обогащению ИТ — алгоритмы, программирование, машинное обучение и другие, и предоставляют современные специализированные векторные ресурсы с глубоким обучением, извлечением данных, курсами анализа изображений и т. Д.
«Университет ИТМО идет по пути трансформации своей образовательной деятельности, исходя из своей миссии, выраженной в Кодексе ИТМО. Один из основных элементов этой трансформации — более тесное сотрудничество с лидерами индустрии и бизнеса », — сказала Дарья Козлова, первый проректор Университета ИТМО. «Мы работаем в сферах, где навыки необходимо приобретать из первых рук; знания могут устареть очень быстро, поэтому мы не можем преподавать компьютерные науки отдельно от реальных случаев.Практически весь наш преподавательский состав ИТ — это специалисты, работающие в различных компаниях. Это единственный способ подготовить компетентных выпускников, обладающих самыми продвинутыми навыками », — добавила она .
Хорошим примером является компания Looksery Inc., основанная Виктором Шабуровым, команда которого разработала популярное приложение, добавляющее маски на лица людей в видео. Ядро компании составили члены той же олимпиадной команды программистов. В 2015 году, всего через три года, они продали его Snapchat за 150 миллионов долларов.Шабуров теперь поддерживает школьные программы обучения. Недавно он организовал Botan Investments Fund и создал программу грантов для учителей в области машинного обучения.
Московская компания AIM Tech занимается разработкой торговых алгоритмов. Он основан Ильей Седошкиным, в нем работают финалисты МФТИ ICPC Ренат Гимадеев, Александр Останин, Константин Семенов и другие. Это область, где важна скорость транзакций. Скорость и алгоритмы — вот что особенно хорошо развито в соревновательном программировании.
Координация между университетами и поддержка ИТ-компаний Яндекс, JetBrains, Mail.Ru Group, 1С и даже банков, Тинькофф Банка и Сбербанка сформировали культуру программирования в стране и породили новые таланты.
Компании набирают персонал из числа этих студентов. Разработка в крупнейшей социальной сети России «ВКонтакте» во многом похожа на олимпиаду по подходу к решению проблем, потому что ее создатели участвовали в этой системе со школьных лет. В социальной сети ВКонтакте работали двукратный победитель Чемпионата мира по программированию ICPC из СПбПУ Николай Дуров и его напарник Андрей Лопатин, тренер ICPC Moscow Workshops, который тренировал команды-победители СПбПУ.Сейчас во «ВКонтакте» работают чемпионы ICPC Дмитрий Егоров, Павел Кунявский и Борис Минаев.
Компании в других странах также помогают студентам, но Россия отличается эффективностью своих программ. Яндекс создал относительно простую площадку — Яндекс.Конкурс, где проводятся соревнования по программированию. Туда преподаватели вузов выкладывают свои задачи. Тестирование автоматизировано, поэтому беспристрастно, что помогает региональным университетам утвердиться в системе подготовки программистов.
«Мы можем многое сказать о том, как мы обучаем программистов, инженеров и механиков для соревнований по подводной робототехнике, отличаясь от зарубежных университетов. Как правило, там нет наставников, и студентам предоставляется большая автономия. Из-за этого у большинства команд возникают тривиальные проблемы. С другой стороны, учащиеся в сильных командах могут решать организационные вопросы самостоятельно и поразительным образом, например, находя финансирование или другую помощь от спонсоров.