Фонд «Интеллект»

«Программирование на уровне понимания нужно всем»

05.10.2022

Сегодня, 5 октября, в МГУ имени М.В. Ломоносова стартовали межфакультетские курсы по Python и машинному обучению, разрабатываемые при поддержке фонда «Интеллект».

Курсы призваны научить азам программирования студентов, для которых математика не является профильным предметом, которые не обучаются на физико-математических направлениях, и, возможно, ничего не знают о программировании. Записаться на курсы можно в личном кабинете студента в разделе МФК. О том, почему стоит записаться на эти МФК и где могут пригодится эти знания, рассказала руководитель проекта межфакультетских курсов по Python и машинному обучению Ольга Мигачёва.

– Ольга, можете рассказать немного о себе?

– Я закончила факультет ВМК МГУ, специалитет и аспирантуру. И сейчас занимаюсь созданием и организацией линейки межфакультетских курсов по программированию, анализу данных и машинному обучению в МГУ. Совместно с фондом «Интеллект» мы анализировали существующие направления обучения в области ИИ у нас в России и за рубежом. В западных вузах есть такое понятие, как основная специальность и дополнительная. Например, основная – психолог, а дополнительная – программирование или машинное обучение. Мы решили реализовать что-то подобное в МГУ. Сформировали команду из студентов и аспирантов МГУ, которые работают над курсами постоянно: разрабатывают новые материалы, придумывают задачи, проводят консультации и дополнительные семинары, отвечают на вопросы в чатах. Для чтения лекций мы приглашаем именитых преподавателей. Если вернуться к вопросу, чем же занимаюсь на курсах я, то я занимаюсь почти всем. Так как курсы новые, приходится устраивать все процессы с нуля, работать и над операционными задачами, и над разработкой контента, и над организацией совместной работы. Во время учебы в МГУ у нас была очень большая нагрузка: мне всегда нравились математика, программирование, и я много времени посвящала основному обучению. По окончанию университета я поняла, что практически ничего не знаю про коммерческое программирование. Это понимание очень сильно повлияло на меня: я 5 лет упорно и сложно училась, программа была насыщенная, но во время обучения я для себя не получила ответ на вопрос, как на работе применить то, что я знаю. Мне показалось, что я такая не одна. Поэтому на наших курсах мы стремимся дать студентам понимание современных инструментов анализа данных, как и где их применить, добавляем примеры практических кейсов, стараемся приглашать представителей из коммерческой разработки, ученых, чтобы они направляли ребят. Мне кажется, студентам важно получить актуальные знания: учиться чему-то не потому что так надо, а потому что это перспективно, можно реализовать себя – сделать свой проект или найти хорошую работу.

– Раньше считалось, что программирование нужно только программистам, сейчас кажется, что навыки программирования нужны всем. Так ли это?

– Да, это так. Люблю приводить пример с иностранным языком. Мы все изучаем английский язык, но не потому, что хотим быть переводчиками, а потому что это повышает наш общий навык, нашу ценность для работодателя и для рынка. Тоже самое сейчас наблюдается и с программированием. Можно построить успешную карьеру и без программирования, но, во-первых, на текущий момент это дает человеку существенный плюс при приеме на работу, в научных или коммерческих исследованиях. А, во-вторых, мы не знаем, что будет в будущем, но очевидно, что всё переходит в онлайн. Почти в каждой компании есть IT-отдел, и с большой вероятностью человек будет пересекаться с людьми, которые работают в IT, поэтому как минимум нужно понимать, что они делают. И если этот человек станет руководителем, ему нужно будет понимать, чем заняты программисты, находящиеся в его подчинении. Поэтому в нашем обществе, в котором явно наблюдается тенденция к цифровизации, программирование на уровне понимания нужно всем.

– С чего тогда начать изучение программирования?

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

– Это касается не только технических, но и естественно-научных и гуманитарных специальностей?

– Понятно, что студенты физико-математических специальностей скорее всего со школы изучали программирование, как минимум сдавали ЕГЭ по информатике. Наши курсы ориентированы на всех, кроме студентов факультетов ВМК и мехмата, хотя оттуда у нас много учащихся, и они говорят, что на наших курсах восполняют пробелы в знаниях. Неоспоримо, что географам, геологам, химикам, биологам нужно владеть инструментами для обработки экспериментальных данных. Экономистам важно уметь работать с финансовыми данными. К примеру, после экономического факультета можно работать аналитиком, если знать Python для анализа данных. Гуманитарным специальностям на самом деле тоже полезно уметь автоматизировать работу с данными – социологам, психологам – например, для обработки результатов опросов. Можно сделать это в Excel, а можно изучить Python и его библиотеки, и расширить возможности для работы с данными. У нас был интересный пример, когда нам написал студент: ему нужно было собрать информацию с какого-то сайта, а для решения задачи требовались однообразные действия. Он может это сделать вручную, а может освоить удобные инструменты и написать небольшую программу, которая поможет ему автоматизировать процесс. Таким образом могут работать историки, журналисты, филологи.

– Записаться на МФК могут все желающие студенты МГУ?

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

– Давайте перечислим все МФК, которые стартуют в октябре и дадим маленькую аннотацию, что там будет изучаться.

– В осеннем семестре мы проведем курс «Основы программирования и анализа данных на Python». Этот курс будет запущен в третий раз. У преподавателя курса Тимофея Федоровича Хирьянова большой опыт преподавания, он очень интересно преподносит материал. Курс немного необычный, на нем используется неклассический подход обучения программированию, делается упор на принципы функционального программирования, в этом его фишка. Также в этом семестре мы планируем запустить курс по машинному обучению. В нем рассматриваются классические методы машинного обучения: как они работают, где их можно применить. Чтобы понять код, можно пойти на курс по Python, а чтобы понять идею методов, нужно изучить математику. Для изучения необходимых тем по математике у нас есть факультативный курс «Математика для анализа данных» от Ивана Валерьевича Оселедец, сейчас курс доступен в записи на Teach in. Если человек хочет понять машинное обучение, ему нужно понимать и знать математику. Какие-то моменты в курсе по машинному обучению мы смогли объяснить «на-пальцах», иногда в конспектах лекций мы даем ссылки на разделы математики, которые необходимы для освоения соответствующей темы. В этом семестре будет больше практических задач по сравнению с предыдущем семестром. В весеннем семестре мы запустили курс «Введение в программирование», планируем перезапустить следующей весной. Это как раз курс для тех, кому был не очень понятен или тяжело давался основной курс по Python. У этого курса темп ниже, и в нем мы используем классический подход обучения программированию. Идея такая: когда ребята в спокойном темпе поймут в целом основные алгоритмы, перестанут «бояться» программного кода, они смогут пойти на основной курс и уже там познакомиться с особенностями Python и тем, почему он так хорош для работы с данными. Также мы сейчас активно работаем над созданием нового курса «Введение в глубокое обучение», который будет посвящен изучению современных методов машинного обучения и теоретических основ работы нейронных сетей.

– Получается, что самый первый вводный курс легкий и будет понятен всем?

– Да. И для нас это была довольно сложная задача. Мы понимаем, что нельзя ставить всех в одинаковые условия, а, к примеру, на некоторых факультетах, особенно на естественно-научных, программирование преподается. Наш курс для начинающих можно начать с нуля. Мы проводим консультации по домашним заданиям, постоянно дежурим в чатах. Наши сотрудники – студенты, аспиранты с ВМК, мехмата – общаются с ребятами, которые проходят МФК, и отвечают на их вопросы. Например, человек делает домашнее задание, и если у него что-то не получилось, то может нам написать, наши ребята достаточно быстро отвечают с раннего утра до позднего вечера. К тому же все материалы по курсу можно найти на платформе Teach in. Любой человек может посмотреть их перед тем, как записаться на МФК, чтобы проверить, насколько ему понятен этот курс. Если он понимает, что курс для него сложный, что ему не хватит времени, ведь есть еще основная нагрузка по учебе, он может пойти на более простой курс. На курсе по введению мы разбираем основы программирования в спокойном, умеренном темпе без сложных задач.

– Как строится учебный процесс?

– Раз в неделю по средам для всех МФК выделено одно время в 15.10 и в 17.00 по выбору. Ребятам нужно посмотреть лекцию, которая проходит в онлайн-режиме, это трансляции с записью. После лекции мы выдаем домашнее задание с автопроверкой, которое нужно выполнить и получить результаты. Если лекция длится полтора часа, то домашняя работа может занимать разное количество времени. Кстати, просмотр лекции тоже. Потому что у нас есть видеозапись, и кому-то из студентов нужно пересмотреть ее несколько раз, кто-то смотрит ее на перемотке. Главное – если студент хочет разобраться в теме, он может прийти на консультацию, написать нам. У начинающих изучать программирование домашнее задание может занимать много часов. Если времени мало, то лучше сначала пойти на курс по введению, а если времени много, студент понимает, что хочет посвятить свое время изучению программирования, то лучше сразу пойти на основы.

– Тогда вопрос по домашнему заданию. Насколько оно объемное?

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

– Сейчас существует много курсов по Python и машинному обучению. Чем МФК отличаются от этих курсов?

– Да, действительно, курсов много, но основное отличие наших курсов в том, что они входят в учебную программу. Студенту в любом случае нужно сдать МФК – есть такие правила. Например, если студент обучается на специалитете, то нужно пройти 4 МФК за время обучения, на бакалавриате – 2. Когда мы в прошлом году запустили свои межфакультетские курсы, других МФК по программированию на Python в МГУ не было, и наш курс оказался очень востребован среди студентов, на нем быстро закончились места. Студенты могут на сторонних платформах пройти курсы по Python, но это они будут делать дополнительно, увеличивая учебную нагрузку, помимо МФК, которые им все равно нужно пройти. А тут студент совмещает приятное с полезным. Он и зачет получит, и знания.

На самом деле, было бы здорово, если бы в учебных программах курсов факультетов тоже добавлялись современные курсы по программированию. Хотя понимаю, что учебную программу сложно изменить, так как там все курсы взаимосвязаны, любое изменение нужно согласовывать со всей программой обучения на факультете, это не так просто. С МФК проще, потому что это дополнительный курс. Тут еще возникает глобальный вопрос о том, что современный быстро меняющийся мир требует от нас непрерывного обучения новому всю жизнь, а раньше человек мог проучиться 5 лет по одной специальности, полученные знания были востребованы и актуальны на протяжении длительного времени. То есть курсы и учебные программы нужно обновлять достаточно часто, это большая нагрузка на преподавателей и методистов. Сегодня мы говорим про Python и используем его в обучении новичков, во-первых, потому что у него понятный и простой синтаксис, во-вторых, у Python широкий спектр областей применения, в частности много дополнительных модулей, пакетов и фреймворков для работы с анализом данных. Но я почти уверена, что через некоторое время картина может измениться, вполне возможно, что появятся новые инструменты.