0,0
рейтинг
16 января 2015 в 12:55

Разработка → Обзор некоторых MOOC Coursera по компьютерным наукам из песочницы

Скорее всего, если вы зашли на Хабр и читаете эту статью, то хоть раз в жизни да слышали про MOOC-курсы.

Но если все же не слышали, то MOOC (по-русски принято произносить «мук») означает «Massive Open Online Course» — массовый открытый онлайн-курс. Это настоящий феномен в образовании XXI века. Газета «New York Times» назвала даже 2012 год «годом MOOC» в связи с появлением на рынке дистанционного образования 3-х «китов» — Coursera, Udacity и EdX. MOOC-ам посвящено множество статей, кто-то видит в них будущее образования, кто-то, наоборот, угрозу. Пытаются также предсказать «традиционную» и «дистанционную» составляющии обучения будущего.




Однако в этой статье я не буду обсуждать перспективы развития дистанционного образования, а расскажу про свой опыт знакомства с курсами на платформе Coursera. Эти курсы будут полезны студентам, изучающим прикладную математику и информатику, в особенности анализ данных. Многое из того, что мне дали эти курсы, как я потом понял — это знания, которыми должен обладать любой уважающий себя исследователь данных (так я предпочитаю переводить профессию Data Scientist).

Я привожу не только описание курса, но и примерные трудозатраты и субъективную оценку сложности по 10-балльной шкале.

  1. Машинное обучение (Machine Learning, Stanford University). 4-5 ч/нед. Сложность: 7.
    Просто блестящий курс, образец. За 10 недель участники своими руками разрабатывают программы для фильтрации спама, сжатия изображений, распознавания рукописных цифр и рекомендации фильмов. Рабочий язык — Octave, по сути тот же Matlab, только бесплатный.



  2. Анализ данных (Data Analysis, Johns Hopkins University). 6-7 ч/нед. Сложность: 8.
    В этом курсе реализованы рецензируемые (peer-reviewed) домашние проекты. Пишешь не только код для решения задачи, но и полноценную статью. Такие же участники, как и ты, «вслепую» оценивают. Считаю, это полезно для развития навыков изложения мысли на английском и доходчивого представления результатов исследования. Очень интересный проект по предсказанию поведения человека (сидение, лежание, бег и т.д.) на основе показаний акселерометра и гироскопа в мобильном телефоне.
    Сейчас помимо этого интенсивного курса Университет Джона Хопкинса предлагает также целую специализацию из 9 курсов по анализу данных. Рабочий язык — R.
  3. Статистика (Statistics One, Princeton). 3-4 ч/нед. Сложность: 5.
    Один из самых популярных курсов на Coursera. Все объясняется очень доступно. Минусы — не выдаются сертификаты (хотя, конечно, знания важнее), немало глюков в системе проверки тестов. Рабочий язык — R.
  4. Алгоритмы: Построение и анализ, часть 1 (Algorithms: Design and Analysis, part 1, Stanford). 8-10 ч/нед. Сложность: 9.
    Must-Know. Рассматриваются алгоритмы сортировки, анализа графовых структур, вопросы сложности алгоритмов, парадигмы при создании алгоритмов и много другого. Самые сложные задания из всех курсов, которые я проходил. Среди прочего надо было запрограммировать на любом языке алгоритмы минимального разреза в графе и поиска сильно связанных компонент, а также алгоритм Дейкстры поиска кратчайшего пути во взвешенном графе. Рабочий язык — любой.



  5. Анализ социальных сетей (Social Network Analysis, University of Michigan). 3-4 ч/нед. Сложность: 5 (если без доп. заданий).
    Рассматриваются базовые свойства соцсетей, их виды, а также задачи, в которых естественно возникают соцсети, например, предсказание распространения инфекции или диффузии. Неожиданный пример — сеть ингридиентов блюд, которая помогает найти кластеры схожих рецептов и взаимозаменяемые продукты. Демонстрируются средства анализа соцсетей Gephi и Netlogo.


  6. Введение в язык R для анализа данных (Computing for Data Analysis, Johns Hopkins University). 3-4 ч/нед. Сложность: 3.
    Очень простой курс, не может рассматриваться как самостоятельный. Скорее, вводный для курса «Анализ данных», и то для людей без навыка программирования (если такие вообще читают Хабр).
  7. Введение в язык Python (Rice University) 1-2 ч/нед. Сложность: 3.
    Занимательный курс для людей без навыка программирования. Вероятно, кредо его создателей — «Каждый уважающий себя программист должен поиграть в свой собственный арканоид». Курс имеет смысл проходить с 12-летним сыном. Даются основы языка Python, по ходу курса надо запрограммировать такие игры как «Угадай число», «Понг», «Память», «21» и, наконец, «Астероиды».


Юрий Кашницкий @yorko
карма
38,2
рейтинг 0,0
Data Scientist
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (21)

  • +13
    Не пойму, в чем смысл вашей подборки? Вы считаете, что на хабре никто не знает о существовании Coursera?
    • +7
      Я знаю, что все знают про Coursera — я просто делюсь своим опытом. Это как с автомобилями. Все знают про Мазду 3. Но при этом почитать про ее тест-драйв, понять, какова она деле — полезно. Может простимулировать самому записаться на тест-драйв.
      • +1
        Все что вы пишете (за исключением субъективной сложности) более подробно написано в описании курса.
        • 0
          Не спорю. Но до описания курса как-то надо дойти, и этого описания может быть слишком много (опустим, что на английском) для начинающего, для того, кто выбирает среди кучи курсов.
          Проведу простую аналогию: я сам неоднократно слышал про Kaggle, хотел бы поучаствовать, но пока еще руки не дошли. И вроде сами соревнования хорошо описаны на сайте, но все же чтобы выбрать, я почитаю про реальный опыт команд, истории побед, какие-то подсказки. В-общем, считаю истории реальных людей важным дополнением к описанию соревнований на самом Kaggle. Так же и с MOOC-ами.
    • +3
      Более того, те хабралюди, которые особо внимательного читают Хабр, знают об этом репозитории.
      • +2
        Можете считать, что я на ХабраХабр только по нужде хожу, но не знал «об этом репозитории».
        Большое спасибо!

        PS: если в Вашем комментарии скрыт тэг иронии или сарказма, то подскажите где найти репозиторий со свобоным временем для этих курсов? ;)
  • +5
    Спасибо за подборку курсов! Включите, пожалуйста, Cryptography I.
    • –5
      Не включаю, потому что не проходил. Хотя я учился в летней школе по криптографии и хотел пройти этот курс. Но не сказал бы, что это must-know для исследователя данных.
  • +6
    А как же курс алгоритмов от Седжвика? Сложность можно сразу 10 ставить, сильно интереснее Стенфордского
    www.coursera.org/course/algs4partI
    www.coursera.org/course/algs4partII
    • 0
      Да, я начинал курс Седжвика. Он очень крутой, согласен. Для программиста (особенно Java) очень полезен. Но я его не закончил, поэтому и не включил. Я потом добавлю список курсов, которые начинал и хотел бы пройти. Там он обязательно будет. Как и Algorithms: Design and Analysis, part 2
  • 0
    Устаревшая информация,
    Computing for Data Analysis и Data Analysis от John Hopkins уже год как не ведутся, а трансформировались и встроились в специализацию Data Science от того же университета.
    • 0
      Да, специализацию Data Science я упомянул в описании курса Data Analysis. «Computing for Data Analysis» почти идентичен курсу «R Programming» специализации, а «Data Analysis» в принципе еще можно в watchlist добавить, так что не факт, что он больше не будет проводиться. Мне он понравился намного больше, чем курсы специализации. «Data Analysis» намного интенсивней, и задания интересные. Правда, в «Practical Machine Learning» проект очень похож. Но в целом видно, что Coursera хочет больше денег зарабатывать. Первый курс серии — «Data Analysist's Toolbox» ну совсем ни о чем — про Github и markdown можно за пару дней рассказать, а они на месяц растянули.
  • +1
    • 0
      Вот еще аналогичный сервис — www.eclass.cc/
    • 0
      Спасибо! Полезные поисковики.
      • +1
        На class-central помимо поиска есть и аккаунты с расписанием, и отзывы о курсах, и оценка их пользователями. Machine Learning, к примеру: www.class-central.com/mooc/835/coursera-machine-learning
    • 0
      coursetalk.com также можно использовать для поиска курсов — всегда смотрю на нем рейтинг.
  • 0
    Машинное обучение — действительно интересный курс. Это один из курсов, с которого и началась Coursera, ведет его сооснователь компании Andrew Ng.
    Ни до, ни даже после этого курса я не встречал таких интересных и полезных практических заданий. И система проверки этих заданий очень крутая: пишешь код, отсылаешь его на сервер, там проверяется результат выполнения. Если результат совпадает с ожидаемым, получаешь зачет.
    Единственный курс, материалом из которого (кодом) я воспользовался в реальной жизни, хотя моя область деятельности довольно далека от машинного обучения.

    В общем по статье — очень ограниченная выборка курсов для обзора «по компьютерным наукам». Совет всем — ищите в первоисточниках.
    • 0
      То что выборка ограничена — не поспоришь. Описал те курсы, которые сам прошел. Да, добавил в название «некоторых». А насчет первоисточников: если бы у них были подобные обзорные статьи курсов по темам, то может, и можно было бы удовлетвориться одними только первоисточниками, и то не факт.
  • +2
    Один из крутейших курсов, что я встречал на курсере — это Programming languages Дэна Гроссмана. Курс начинается с SML и Emacs, что уже намекает на градус дальнейших приключений, потом идет Racket и Ruby. Весь этот зоопарк языков — не ради изучения самих языков, они лишь служат полигоном для демонстраций различных концепций. Всё это весьма интересно, и я бы смело рекомендовал даже программистам с опытом.

    Список тем курса
    Topics (most of which may not mean anything to you until you take the course):

    Syntax vs. semantics vs. idioms vs. libraries vs. tools
    ML basics (bindings, conditionals, records, functions)
    Recursive functions and recursive types
    Benefits of no mutation
    Algebraic datatypes, pattern matching
    Tail recursion
    First-class functions and function closures
    Lexical scope
    Currying
    Syntactic sugar
    Equivalence and effects
    Parametric polymorphism and container types
    Type inference
    Abstract types and modules
    Racket basics
    Dynamic vs. static typing
    Laziness, streams, and memoization
    Implementing languages, especially higher-order functions
    Macros
    Eval
    Ruby basics
    Object-oriented programming is dynamic dispatch
    Pure object-orientation
    Implementing dynamic dispatch
    Multiple inheritance, interfaces, and mixins
    OOP vs. functional decomposition and extensibility
    Subtyping for records, functions, and objects
    Subtyping
    Class-based subtyping
    Subtyping vs. parametric polymorphism; bounded polymorphism
    • 0
      Согласен. Потрясающий курс. Настоятельно рекомендуется всем. Правда, практически все свободное время уходило на домашки.

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