27 апреля 2012 г.

Design and Analysis of Algorithms I: результаты

На этой неделе закончилась первая часть онлайн курса Design and Analysis of Algorithms университета Стэнфорда, доступная через платформу Coursera. В среду я нашел время для финального экзамена (потратил два из трех возможных часов, все же попытка только одна), сдал на 29,5 из 30 (ботан!), оставил фидбэк организаторам и теперь готов рассказать как это было :)

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

Итак, весь курс занял 5 недель плюс еще одна, в течении которой можно было сдать финальный экзамен. Ведущий курса - преподаватель Стэнфорда Tim Roughgarden. Учебный процесс достаточно простой:

  • каждую неделю появляется порция видеолекций общей продолжительностью в среднем два часа (их можно скачать либо смотреть онлайн), некоторые видео - опциональные, т.е. в заданиях не будет по ним вопросов
  • лекции могут содержать в себе простые вопросы для студентов, для поддержания интерактивности - ответы на них ни на что не влияют, но помогают погрузиться в тему
  • домашнее задание делится на две части: теоретическую и практическую
  • теоретическая часть - набор из 5 вопросов по материалам лекций, оценивался в максимум 8 баллов, представлен в виде теста с вариантами ответов (возможно несколько правильных), вопросы были как чисто теоретические так и требующие некоторых вычислений на бумажке, две попытки
  • практическая часть - оцениваемый в 6 баллов programming assignment, который можно выполнить с помощью любой технологии; скачиваем файл с входными данными и обратно представляем ответ в требуемом формате, пять попыток
  • по домашнему заданию были дедлайны - две недели со времени публикации задания или к концу курса, но лишь за половину возможных баллов
  • результирующая оценка курса = 40% теоретических задач + 30% практических + 30% финальный экзамен = максимум 100 баллов; если набрал больше 70 - получаешь сертификат об успешном окончании курса (я набрал 92,5 :-Р)
Далее, о содержании курса и несколько примеров из теоретических домашних заданий - прекрасная возможность проверить не заржавели ли знания у вас в голове :). Оставляйте ответы в комментах, правильные появятся через несколько дней. Практические задания можно посмотреть на гитхабе: https://github.com/ddudnik/algo-class-assignments. В начале каждого файла решения есть полное описание задачи, а в папке resources можно найти все входные данные. Код приведен на Ruby, для первых двух недель есть и на Javа для самопроверки. Я решил не терять замечательной возможности не только изучить материал курса, но и заодно немного изучить Ruby :-)

Итак, чему удалось научиться?