• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

“Прикладная математика и информатика”: как разработать новую образовательную программу в области компьютерных наук?

Конушин Антон Сергеевич

Департамент больших данных и информационного поиска: Доцент

 
Левин Михаил Владимирович

руководитель специализации Big Data Школы анализа данных Яндекса

 
Подольский Владимир Владимирович

Департамент больших данных и информационного поиска: Руководитель

 


Важной составляющей формирования учебного плана является изучение аналогичного опыта ведущих российских и зарубежных университетов. В компьютерных науках есть еще один источник информации – это рекомендации Computer Science Curricula совместной группы Association for Computing Machinery[1] (ACM) и Institute of Electrical and Electronics Engineers[2] (IEEE). Они предоставляют конкретные рекомендации по курсам, которые считаются необходимыми для направления Computer Science (CS). Впоследствие учебные планы нужно сопоставить с требованиями к выпускникам факультета.

На примере образовательной программы факультета компьютерных наук Высшей школы экономики «Прикладная математика и информатика» мы расскажем, чем российские программы по Computer Science (CS) отличаются от зарубежных аналогов, и каким образом эти различия можно конвертировать в конкурентное преимущество, как решить проблему разного уровня подготовки первокурсников, а также каким образом выстроить эффективную проектную работу.

Специфика российского образования в области CS

Сравнительный анализ российских и зарубежных образовательных программ по CS показывает несколько интересных различий.

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

Во-вторых, в силу исторической традиции, российские программы более математичны: ведущие отечественные CS-программы выросли из математических факультетов российских вузов, а потому сохранили близкий к ним объем преподавания таких классических дисциплин, как математический анализ и линейная алгебра.

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

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

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

Курсы по выбору

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

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

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

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

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

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

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

Итоговые проекты

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

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

Когда и в каком объеме начинать исследовательскую работу студентов – вопрос  дискуссионный. В Высшей школе экономики рекомендуется начинать исследовательскую работу как можно раньше: курсовые работы ставятся уже на первый год обучения.

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

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

Разный уровень первокурсников

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

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

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

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

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

На программе «Прикладная математика и информатика» мы опробовали два способа решения этой проблемы.

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

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

В последующие годы мы попробовали другой подход.

Было выделено несколько пилотных групп, для которых читались отдельные лекции, что существенно увеличило возможности для подстраивания материала под уровень студентов.

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

Также возможно создание групп с углубленным изучением части программы обучения. Это довольно логично представить на программе «Прикладная математика и информатика»: мы сформировали пилотную группу с углубленной программой и по математике, и по информатике, еще одну – только по математике, еще одну – только по информатике. Таким образом, отдельные лекции по математическим дисциплинам читаются первым двум группам, а по дисциплинам, относящимся к информатике – первой и третьей группе.

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

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

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

Индивидуальная проектная работа

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

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

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

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

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

В результате студенты создавали как научные, так и индустриальные проекты, связанные с нейросетями и машинным обучением, с приближенным решением NP-сложных задач. В результате проектов появлялись игры, финансовые приложения, студенты проводили аналитику соцсетей, занимались компьютерным зрением, биоинформатикой и многим другим. Один из ярких примеров – проект по аналогии с AlphaGo, в котором наши первокурсники создали систему, обучающуюся end-to-end играть в нарды на основе игр с самой собой.

Мы считаем, что качество проектной работы достаточно высокое, и в плане изменений решили разве что перенести ее начало на чуть более поздний срок – на второй курс, чтобы студенты успели накопить больше знаний перед стартом проекта.

Командная проектная работа

Сейчас мы решили немного расширить проектную работу. С этого года мы организуем командные проекты для студентов 3 и 4 курсов, как альтернативу обычным курсовым работам: их предлагают IT-компании, и они реально заинтересованы в том, чтобы проекты стали успешными. Компания должна выделить ментора, понимающего, как организована промышленная командная разработка. Ментор будет помогать студентам организовывать работу, обучать их инструментам и принципам организации командной разработки, проводить ревью кода и отслеживать прогресс.

Изначально мы собирались запустить небольшой эксперимент, в рамках которого 4-5 компаний запустили бы по одному проекту по 4-5 человек в каждом. Однако неожиданно для себя получили со стороны компаний гораздо больший отклик, и в ноябре у нас стартовало более 10 проектов такого вида.

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

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

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

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

Результаты

Целью программы является подготовка исследователей, инженеров-исследователей и инженеров-разработчиков в области теоретической и прикладной информатики. Она была разработана с учетом опыта ведущих факультетов компьютерных наук университетов EPFL (Федеральная политехническая школа Лозанны) в Швейцарии и Stanford (Стэнфордский университет) в США, а также Школы анализа данных компании Яндекс, у которой имеется большой образовательный опыт по подготовке специалистов в области анализа и обработки больших данных, машинного обучения и других направлений.

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

 


 

[1] Ассоциация вычислительной техники – старейшее и наиболее крупное международное научное и образовательное компьютерное сообщество. Это некоммерческая профессиональная организация, объединяющая более 100 тысяч специалистов в области компьютерных наук по всему миру. Штаб-квартира находится в Нью-Йорке, США.

[2] Институт инженеров электротехники и электроники – международная некоммерческая ассоциация специалистов в области техники. Штаб-квартира находится в Нью-Джерси, США.