Запущен онлайн-курс по программированию от университета ИТМО — шестикратного чемпиона ACM ICPC

Processed with VSCO with c2 preset

Недавно Университет ИТМО запустил свой первый курс на крупнейшей в мире образовательной онлайн-платформе 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 года (эти онлайн-олимпиады для школьников ИТМО проводит и сейчас). «Фишка» именно этого набора задач состоит в том, что «легенды» всех задач рассказывают, как эффективно вести себя на олимпиаде — например, там есть такие задачи, как «Готовьтесь к олимпиаде!», «Генерируйте тесты!», и даже «Расставьте стулья правильно!», — делится автор «Секретов чемпионов».

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

rsz_course_image

В соавторстве с Максимом Буздаловым выступает Павел Кротков, также чемпион ACM ICPC. У обоих преподавателей накоплен опыт тренировок олимпиадных команд других университетов. На этих тренировках они часто делились разными идеями именно о том, как эффективно расходовать свое время на соревновании — особенно на командном, о том, как программировать, минимизируя число ошибок, и так далее. Авторы хотели уделить этому внимание в своем курсе, но, к сожалению, подобные идеи не ложатся в стандартный образовательный процесс, к тому же их можно отнести к«элитному контенту», который рассчитан уже на более опытных олимпиадников, а не для начинающих, кто как раз является целевой аудиторией курса.

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

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

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

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

Вообще, перспектив после участия и победы в международной олимпиаде по программированию множество. Например, это предложения от Apple, Facebook, Google, IBM и многих других авторитетов, которые постоянно следят за подобными соревнованиями и выступающими на них программистами.

«Годами натренированное «чутье» в отношении того, что работает быстрее или точнее. Если такой человек еще и научится писать «читаемые» и поддерживаемые программы — что бывает не со всеми олимпиадниками — то как специалист он будет «рвать всех». Что и происходит, примеров много — от Романа Елизарова, сооснователя DevExperts, до команды олимпиадных программистов, составляющих интеллектуальное ядро компании MemSQL» — утверждает Максим Буздалов.

Конечно, его курс направлен на помощь начинающим программистам в подготовке к таким соревнованиям. Но сам автор советует не ограничиваться только курсом, но и тренироваться самому. Максим до своей победы в финале ACM ICPC три с половиной года в среднем решал по полторы пятичасовых тренировки в неделю. Кроме того, будущий чемпион проводил много времени, решая задачи, вне этих тренировок. Но сам он при этом заявляет, что среди участников был еще и не самым упорным!

Образование будущего

Благодаря своему опыту работы в университете и в онлайн-обучении у доцента кафедры компьютерных технологий и автора онлайн-курсов сложилось свое видение будущего сферы образования: оно будет состоять из трех уровней. Классическое образование будет самым элитным и очень дорогим. Следующий уровень — это онлайн-образование с прямым подключением к лектору и возможностью задавать вопросы. И затем уже — массовое онлайн-образование, где преподаватель сделал все возможное, чтобы 95 — 99.9% вопросов решались без его участия: самими слушателями или компьютерами. Но такую перспективу Максим видит через много-много лет, когда число людей перевалит за десяток-другой миллиардов.

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