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

Первый набор в Школу анализа данных состоялся летом 2007 года, но идея создания учебной программы в области анализа данных возникла у руководителей компании «Яндекс» раньше, и причина необходимости такой программы, к сожалению, хорошо известна: выпускники университетов, даже самых лучших, получив хорошее фундаментальное образование, оказываются не готовы к работе с реальными задачами. В частности, бывшие студенты не способны решать задачи обработки и анализа больших объемов данных, на которых базируются все интернет-проекты, а также не в состоянии их реализовать в виде качественных, надежных программ. Молодым специалистам не хватает не только практических навыков, но и глубоких теоретических знаний в ряде областей, которые составляют основу Сети и являются неотъемлемой частью современной компьютерной науки. Скорость модернизации университетских программ в России, их адаптации к потребностям и новейшим тенденциям в развитии ИТ по-прежнему остается крайне низкой.

Елена Бунина: “Содержание программы ШАД определяется представлением ее авторов о наиболее актуальных областях современной компьютерной науки”Как рассказывает один из основных организаторов ШАД, директор отделения computer science Елена Бунина, помимо желания сформировать программу учебных курсов, после изучения которых студенты смогут без проблем влиться в процессы работы с данными и промышленного программирования, витала еще более амбициозная идея воссоздания отечественной научной школы анализа данных. Можно, конечно, говорить, что такая школа уже существовала в 70-е годы на базе исследований в Институте проблем управления, однако недостаток финансирования, а затем катаклизмы перестроечного времени привели к практически полной потере накопленных достижений. Поскольку современные поисковые интернет-проекты ставят немало нетривиальных задач в сфере обработки и анализа больших объемов данных, нет ничего странного в том, что инициатива по развитию научной школы в этой области исходит со стороны ведущей российской компании, хотя она и была бы, возможно, более ожидаемой от университетского или академического сообщества.

Для реализации своих идей руководители «Яндекса» – генеральный директор Аркадий Волож и директор по технологиям и разработке Илья Сегалович – начали искать возможность сотрудничества с ведущими столичными университетами. Однако после ряда неудачных попыток предложить вузам не просто финансирование, а содержательную программу было решено действовать самостоятельно. Бунина рассказывает, что весной 2007 года по инициативе «Яндекса» был организован круглый стол, в котором приняли участие представители механико-математического факультета МГУ, Независимого московского университета и МФТИ. Это событие стало отправной точкой в создании ШАД – было принято решение о запуске собственной учебной программы по анализу данных. Ее идейным вдохновителем стал бывший научный руководитель Аркадия Воложа – Илья Мучник, профессор Ратгерского университета (США).

Программа школы была сформирована к лету, но организаторы были довольно скептически настроены по поводу возможности набора первого курса для начала полноценных занятий в сентябре. Хотя, по словам Буниной, которая сама является сотрудником кафедры высшей алгебры мехмата МГУ, она нисколько не сомневалась в том, что программа будет востребована: «Студенты меня постоянно спрашивают, что они будут делать после окончания университета, если не хотят заниматься чистой математикой. Я никогда не могла ответить им на этот вопрос». Программа ШАД открывала для сильных в математике студентов возможность освоить новые, востребованные практические области математики и компьютерной науки и, соответственно, увидеть перспективы будущей работы.

К началу занятий в ШАД 25 сентября 2007 года студентами школы стали 80 из 200 абитуриентов – такого наплыва на еще никому не известную учебную программу не ожидал никто. За три года конкурс неизменно рос, и сейчас ШАД уже не нуждается в рекламе, стабильно набирая не менее 100 новых студентов. Занятия школы проходят по вечерам в московском корпусе МФТИ, собирая преимущественно студентов-старшекурсников московских вузов. Большую часть аудитории, как рассказывает Бунина, составляют выпускники вузов и аспирантур, но есть также и приезжие из других городов. Дополнительные возможности учиться по программам ШАД для немосквичей открывает сотрудничество школы с МФТИ и ГУ ВШЭ. C 2008 года начался набор на магистерскую программу «Анализ данных» на отделении прикладной математики и информатики факультета бизнес-информатики ВШЭ. На факультете инноваций и высоких технологий физтеха с первого года работы школы существует базовая кафедра анализа данных «Яндекса», открыты бакалавриат и магистратура, студенты которых проходят обучение на курсах ШАД. При активном участии сотрудников ШАД была полностью перестроена программа обучения в бакалавриате ФИВТ, появилось новое для МФТИ направление подготовки: «Прикладная математика и информатика».

Чему учат в ШАД?

Как утверждает Елена Бунина, несмотря на исходный практический посыл к созданию школы, содержание ее программы определяется прежде всего представлением ее авторов о наиболее актуальных областях современной компьютерной науки, а не конкретными потребностями компании «Яндекс». Хотя тесная связь школы с компанией, которая ее создала и финансирует, не может не отражаться на учебной программе и ряд спецкурсов возникал в том числе исходя из желания дать студентам знания и навыки, необходимые для работы в большой компании.

Программа формируется экспериментально, и эксперимент не остановится и в последующие годы жизни школы, полагает Бунина. Это связано и с тем, что ШАД еще только нащупывает свое место в системе образования, коррелируя свои действия с динамикой развития самой computer science. И здесь у ШАД есть неоспоримое преимущество перед традиционными вузами – отсутствие необходимости следовать жестким образовательным стандартам; Школа способна гибко дополнять и изменять набор и содержание своих курсов в ответ на перемены в компьютерной науке.

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

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

Создателем программы отделения анализа данных является Илья Мучник, научный руководитель ШАД. Курсы программы охватывают базовые разделы анализа данных (методы построения классификаторов, вычисления мер сходства между объектами, кластерный анализ, методы визуализации и сокращения размерностей), методы анализа специальных данных (изображений, символьных последовательностей, текстов на естественных языках и других структурных объектов) и методы оптимизации, необходимые для построения основных вычислительных процедур для базовых и специальных задач.

Программу отделения computer science разрабатывали Елена Бунина, Илья Сегалович, Максим Бабенко и Михаил Левин. Максим — ассистент кафедры математической логики и теории алгоритмов мехмата МГУ, призер чемпионата мира ACM по программированию и сейчас тренирует национальные команды студентов для международных олимпиад по программированию. Михаил – аспирант кафедры высшей алгебры мехмата, призер чемпионата мира ACM по программированию, тренер команд МГУ и МФТИ. Основные направления курсов отделения computer science: дополнительные главы дискретного анализа, теории графов, комбинаторики и теории вероятностей, методы построения и анализа эффективных алгоритмов и структур данных, а также современные методы машинного обучения, обработки текстовой информации и распределенных вычислений.

В целом все курсы обоих отделений можно сгруппировать в пять категорий. Первая – это предметы, связанные с алгоритмами и их реализацией. Курс «Алгоритмы и структуры данных» Максима Бабенко и Михаила Левина является обязательным курсом первого года обучения для обоих отделений и, как поясняет Бунина, составляет ядро учебной программы школы. Решение любых задач в компьютерной области подразумевает поиск эффективных алгоритмов для их реализации и затем воплощение этих алгоритмов в коде. Построение и оптимизация таких алгоритмов – один из наиболее сложных курсов в школе, который дается не каждому студенту. В курсе очень существенна практическая составляющая, в процессе которой студенты учатся реализовывать алгоритмы и строить структуры данных, применять их в конкретных задачах, тестировать свои программы, писать простой и понятный код. Примерно треть получаемых студентами знаний и навыков приходит из личного общения с преподавателями во время сдачи домашних заданий. По словам Буниной, неуспеваемость по алгоритмическому курсу является одной из наиболее частых причин отчисления из ШАД. Глеб Колобаев, студент отделения computer science Школы анализа данных, студент четвертого курса мехмата, признает: «Учиться в ШАД непросто, сказывается большое количество материала и сложные домашние работы, однако, если посещать очные занятия, то непреодолимых проблем не остается. Домашние задания строго опираются на курс лекций, однако чтение дополнительной литературы не лишнее, поэтому преподаватели обычно предлагают список литературы».

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

Вторая группа курсов школы посвящена теории вероятности и статистике — для задач анализа данных глубокое знание этих дисциплин является абсолютно необходимым. Студентам отделения анализа данных обязательный курс по вероятностно-статистическим методам читает Альберт Ширяев, член-корреспондент РАН, заведующий кафедрой теории вероятностей мехмата МГУ. На отделении computer science в меньших деталях математическую базу теории вероятностей и статистики рассказывает профессор мехмата МГУ и МФТИ Андрей Райгородский. Достаточно широкий спектр тем вероятностной группы представлен в спецкурсах школы.

Третий блок включает в себя курсы по машинному обучению. Эта область компьютерной науки очень активно развивается в последние десятилетия и используется в поисковых задачах, медицинских, финансовых приложениях для улучшения ранжирования результатов поиска, фильтрации порнографии в поиске по картинкам, фильтрации спама в электронной почте и Web-поиске, для распознавания людей по фотографиям, построения алгоритмов игры на бирже и др. Машинное обучение дает возможность автоматизировать решение задач, которые плохо поддаются формализации. Теория машинного обучения представлена в программе школы курсами известного эксперта в этой области Алексея Червоненкиса, профессора Лондонского университета, ведущего сотрудника Института проблем управления РАН и одного из создателей отечественной школы анализа данных. Курсы по машинному обучению читает также старший научный сотрудник ВЦ РАН, доцент факультета ВМиК МГУ Константин Воронцов, который ведет на факультете научную работу в этой области.

Следующую группу курсов ШАД составляют курсы по программированию, в том числе промышленным процессам разработки ПО. В школе преподаются несколько разных языков программирования, среди них Java, процедурные и декларативные языки, а отдельный спецкурс посвящен C++ — основному языку программирования, принятому в компании «Яндекс». Кроме того, в ШАД разработан специальный курс по промышленному программированию, на котором студентов учат навыкам командной работы. Вообще, как отмечает Бунина, эту часть программы в школе хотят расширить, включив в нее обучение менеджменту процессов разработки, управлению проектами – необходимым компонентам современной программной инженерии.

И наконец, последняя, пятая категория курсов – это прикладные курсы по различным темам, например по биоинформатике, анализу изображений и видео, параллельным и распределенным вычислениям и др.

По словам Елены Буниной, программа дополняется курсами ежегодно, причем стимулы к их появлению могут быть самые разные. Например, руководители школы понимают, что очередному набору студентов катастрофически не хватает определенных знаний, или приходят интересные преподаватели с предложением своих курсов, или выпускники школы, а теперь сотрудники «Яндекса», обнаруживают в своей работе темы, для которых желательна предварительная углубленная подготовка в ШАД. Так, в частности, появился в программе спецкурс «Анализ изображений и видео», который ведет научный сотрудник лаборатории компьютерной графики и мультимедиа ВМиК МГУ Антон Конушин. Курс пользуется огромной популярностью.

Как учат в ШАД

В Школу анализа данных трудно поступить и еще труднее там учиться — в первые два года работы ШАД отсеивалось около половины студентов, но, как отмечает Бунина, есть ощущение, что с каждым годом в школу поступают все более сильные абитуриенты. Репутация школы растет, и в Москве уже знают, что просто так в ШАД не попасть. Отбор в школу проходит в два этапа: интерактивное тестирование и очное собеседование. Чтобы справиться с заданиями, которые предлагаются на обоих этапах, абитуриентам надо обладать определенной базой: знаниями математического анализа, линейной алгебры, комбинаторики, теории вероятностей, а также навыками программирования. Реальные шансы на поступление имеют студенты не моложе третьего курса специальностей с достаточно сильной математической подготовкой, и неудивительно, что среди обучающихся в ШАД преобладают представители мехмата и двух факультетов — физтеха  инноваций и высоких технологий и управления и прикладной математики. Как ни странно, но очень мало абитуриентов с ВМиК МГУ, факультета, который по своей направленности мог бы стать основным поставщиком аудитории школы.

В процессе обучения в ШАД студенты не сдают экзаменов и практически не пишут контрольных работ — контроль знаний построен на домашних заданиях, которые по каждому курсу студенты получают раз в две недели. Сроки сдачи заданий очень жесткие, объемы большие, и только тщательное и своевременное выполнение дает возможность получать за задания высокие баллы. Бунина отмечает, что такая система заставляет студентов учиться постоянно и демонстрирует очень хорошие результаты – в прошлом году, например, в школе преобладали отличники и хорошисты. Но любая халтура в конечном итоге приведет студента к отчислению.

Все выпускники Школы анализа данных получают сертификат «Яндекса», выпускникам с высшим образованием также вручается диплом МФТИ о профессиональной переподготовке по направлению «Анализ данных». Школа отчасти решила проблему кадров в компании «Яндекс», которая стала, наверное, наиболее привлекательным местом работы для выпускников ШАД, и они имеют реальные шансы ее получить, особенно если успешно проходят стажировку. Программа стажировок для студентов формально не связана с обучением в ШАД, но подготовка в школе существенно помогает выпускникам пройти конкурсный отбор на стажировку. Для большинства выпускников работа в компании «Яндекс» дает возможность развить полученные в школе знания на проектах, часто связанных с серьезными научными исследованиями. Стажеры-студенты активно участвуют в деятельности компании, например работали над важными задачами поиска изображений, реализовали ряд компонентов интерфейса поисковой машины «Яндекс», нашли решение нескольких задач для популярного сервиса "Яндекс.Пробки".

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

Лучшие выпускники, рассказывает Бунина, продолжают сотрудничество со школой и после ее окончания, в том числе ведут семинары по различным курсам ШАД. Однако в школе постоянно подчеркивают, что не ставят целью подготовку кадров именно для компании «Яндекс», — главная задача состоит в восполнении серьезных пробелов в университетском образовании в области computer science, предоставление студентам с сильной математической базой возможности получить глубокие знания в областях компьютерной науки, востребованных не только в сфере интернет-поиска, но и в самых разнообразных задачах финансовой индустрии, медицинской и биоинформатики, геоинформационных систем и др.

Не будет преувеличением сказать, что Школа анализа данных сегодня уже в состоянии оказать реальное влияние и на традиционное вузовское образование. Свидетельством тому – магистерские программы школы в МФТИ и ВШЭ, программа бакалавриата на факультете инноваций и высоких технологий МФТИ. Значительное число сотрудников ШАД преподают одновременно на кафедре анализа данных ФИВТ, а выпускники ШАД активно поступают в аспирантуру МФТИ и ВШЭ. Инициатива по созданию аспирантуры – реальный шаг к возрождению научной школы анализа данных, к которому стремятся создатели ШАД. В ближайших планах – организация совместных программ с европейскими и американскими университетами.

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

Курсы Школы анализа данных

Обязательные курсы отделения анализа данных:

  • Восстановление функциональных закономерностей из эмпирических данных
  • Алгоритмы и структуры данных поиска
  • Вероятностно-статистические методы. Обнаружение скрытых редких событий
  • Машинное обучение для построения классификаторов и регрессионных моделей
  • Выпуклый анализ и оптимизация
  • Машинное обучение
  • Биоинформатические методы в анализе символьных последовательностей

Обязательные курсы отделения computer science:

  • Алгоритмы и структуры данных поиска
  • Дискретный анализ и теория вероятностей
  • Машинное обучение
  • Введение в лингвистику и автоматическая обработка текстов

Спецкурсы:

  • Теория расписаний
  • Вычислительная теория интерполяции
  • Теория игр и функций выбора
  • Обучение языку C++
  • Основы программирования на Java
  • Параллельные и распределенные вычисления
  • Теория информации и распознавание образов
  • Сложность вычислений
  • Вероятностно-статистические методы в теории принятия решений
  • Комбинаторика и вероятность
  • Обучение программированию
  • Теория информации
  • Процедурные и декларативные языки
  • Промышленное программирование
  • Анализ изображений и видео
  • Web-графы и поиск
  • Кластеры и количественные структуры в данных: выявление, описание, визуализация
  • Основы статистики в машинном обучении
  • Избранные прикладные задачи информационного поиска
  • Введение в статистические методы распознавания