Обзор некоторых MOOC Coursera по компьютерным наукам
Скорее всего, если вы зашли на Хабр и читаете эту статью, то хоть раз в жизни да слышали про MOOC-курсы.
Но если все же не слышали, то MOOC (по-русски принято произносить «мук») означает «Massive Open Online Course» — массовый открытый онлайн-курс. Это настоящий феномен в образовании XXI века. Газета «New York Times» назвала даже 2012 год «годом MOOC» в связи с появлением на рынке дистанционного образования 3-х «китов» — Coursera, Udacity и EdX. MOOC-ам посвящено множество статей, кто-то видит в них будущее образования, кто-то, наоборот, угрозу. Пытаются также предсказать «традиционную» и «дистанционную» составляющии обучения будущего.
Однако в этой статье я не буду обсуждать перспективы развития дистанционного образования, а расскажу про свой опыт знакомства с курсами на платформе Coursera. Эти курсы будут полезны студентам, изучающим прикладную математику и информатику, в особенности анализ данных. Многое из того, что мне дали эти курсы, как я потом понял — это знания, которыми должен обладать любой уважающий себя исследователь данных (так я предпочитаю переводить профессию Data Scientist).
Я привожу не только описание курса, но и примерные трудозатраты и субъективную оценку сложности по 10-балльной шкале.
-
Машинное обучение (Machine Learning, Stanford University). 4-5 ч/нед. Сложность: 7.
Просто блестящий курс, образец. За 10 недель участники своими руками разрабатывают программы для фильтрации спама, сжатия изображений, распознавания рукописных цифр и рекомендации фильмов. Рабочий язык — Octave, по сути тот же Matlab, только бесплатный.
-
Анализ данных (Data Analysis, Johns Hopkins University). 6-7 ч/нед. Сложность: 8.
В этом курсе реализованы рецензируемые (peer-reviewed) домашние проекты. Пишешь не только код для решения задачи, но и полноценную статью. Такие же участники, как и ты, «вслепую» оценивают. Считаю, это полезно для развития навыков изложения мысли на английском и доходчивого представления результатов исследования. Очень интересный проект по предсказанию поведения человека (сидение, лежание, бег и т.д.) на основе показаний акселерометра и гироскопа в мобильном телефоне.
Сейчас помимо этого интенсивного курса Университет Джонса Хопкинса предлагает также целую специализацию из 9 курсов по анализу данных. Рабочий язык — R. -
Статистика (Statistics One, Princeton). 3-4 ч/нед. Сложность: 5.
Один из самых популярных курсов на Coursera. Все объясняется очень доступно. Минусы — не выдаются сертификаты (хотя, конечно, знания важнее), немало глюков в системе проверки тестов. Рабочий язык — R. -
Алгоритмы: Построение и анализ, часть 1 (Algorithms: Design and Analysis, part 1, Stanford). 8-10 ч/нед. Сложность: 9.
Must-Know. Рассматриваются алгоритмы сортировки, анализа графовых структур, вопросы сложности алгоритмов, парадигмы при создании алгоритмов и много другого. Самые сложные задания из всех курсов, которые я проходил. Среди прочего надо было запрограммировать на любом языке алгоритмы минимального разреза в графе и поиска сильно связанных компонент, а также алгоритм Дейкстры поиска кратчайшего пути во взвешенном графе. Рабочий язык — любой.
-
Анализ социальных сетей (Social Network Analysis, University of Michigan). 3-4 ч/нед. Сложность: 5 (если без доп. заданий).
Рассматриваются базовые свойства соцсетей, их виды, а также задачи, в которых естественно возникают соцсети, например, предсказание распространения инфекции или диффузии. Неожиданный пример — сеть ингридиентов блюд, которая помогает найти кластеры схожих рецептов и взаимозаменяемые продукты. Демонстрируются средства анализа соцсетей Gephi и Netlogo.
-
Введение в язык R для анализа данных (Computing for Data Analysis, Johns Hopkins University). 3-4 ч/нед. Сложность: 3.
Очень простой курс, не может рассматриваться как самостоятельный. Скорее, вводный для курса «Анализ данных», и то для людей без навыка программирования (если такие вообще читают Хабр). -
Введение в язык Python (Rice University) 1-2 ч/нед. Сложность: 3.
Занимательный курс для людей без навыка программирования. Вероятно, кредо его создателей — «Каждый уважающий себя программист должен поиграть в свой собственный арканоид». Курс имеет смысл проходить с 12-летним сыном. Даются основы языка Python, по ходу курса надо запрограммировать такие игры как «Угадай число», «Понг», «Память», «21» и, наконец, «Астероиды».