22 октября 2012 г.



Learning in progress

Я долго пропадал на просторах интернетов. Дело в том, что в последние несколько месяцев я плотно "подсел" на занимательную штуку под названием MOOC. И время было потрачено не зря, черт возьми! Что есть MOOC? Massive open online course. Это случилось аккурат после окончания самого первого моего курса - по разработке и анализу алгоритмов. Я был надолго потерян для такой бесцельной траты свободного времени, как написание новых заметок в этот блог и даже записался в community Teaching Assistant на одном из курсов :-) Однако, пришло время подвести промежуточные итоги и немного рассказать о пройденных мной курсах.

В хронологическом порядке.

1. Design of Computer Programs, Programming Principles
Курс на Udacity

Вообще, данный курс предназначен скорее для новичков в мире программирования, для тех, кто лишь недавно закончил что-нибудь вроде Computer Science 101. Т.е. уже не является совсем чайником, но в то же время все еще далек от профессиональной разработки ПО. Зачем я на него записался? Ладно, признаюсь: я чайник хотел попробовать Python, пускай и в лабораторных условиях. Это причина номер раз. Была еще одна - курс вел Peter Norvig, крутейший дядька IT индустрии, протыкавший перфокарты, когда многие из нас еще были на стадии спецификаций и абстрактных юзер стори своих родителей.

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


2. Compilers 
Курс на Coursera

Представлен Stanford University, преподаватель Alex Aiken. Я не раз слышал мнение от более опытных коллег, что знание внутренней кухни языков программирования из разряда must have. Теперь я готов присоединится к их числу. Серьезно.

Это был, пожалуй, самый сложный и самый длинный (10 недель) из пройденных мной курсов. По началу мне очень хотелось его бросить. Сейчас я очень рад, что смог себя переубедить. Такого количества инсайтов от программирования я, наверное, не испытывал никогда.

Много лекционного материала, довольно сложные опросы в виде тестов, очень необычная система вывода доказательств для выполнения домашних заданий, а также programming project - поэтапное создание компилятора для языка Cool. (языка, имеющего больше компиляторов, нежели программ на этом языке) Последнее, к сожалению, оказалось мне не под силу ввиду ограничения по времени, однако все равно давало право на получение сертификата.

Были рассмотрены все этапы работы классического компилятора, способы их реализации, а также некоторые сопредельные области: Lexical Analysis, Finite Automata, Parsing (top-down and bottom-up), Semantic Analysis and Type Checking, Code Generation, Runtime Organization, Operational Semantics, Local and Global Optimization, Garbage Collection. А упомянутая выше система вывода доказательств позволила на своей шкуре пройти процесс в роли лексического анализатора, парсера, системы типов, сборщика мусора и всех остальных "участников" процесса.

Если вы программист - обязательно пройдите этот или подобный курс. Или, SICP вам в помощь :-)

3. Software Engineering for SaaS
Был пройден мной на Coursera, однако в данный момент переехал на платформу edX. Это тот самый курс, на который я записался волонтером как community Teaching Assistant для модерации форума и посильной помощи тепершним "студентам".

Данный курс, опять же, рассчитан скорее на начинающих разработчиков. Я записался лишь по одной единственной причине - Ruby и Ruby on Rails. Именно этот язык и фреймворк использовались для выполнения домашних заданий.

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

В целом - курс интересный, хотя имеет определенные недостатки, в том числе связанные с новой для него платформой edX. Платформа не без изъянов, но в целом достаточно мощная и сможет потягаться с Coursera, ведь за ней стоят довольно серезьные организации типа MIT и Harvard University. Кроме того, существуют планы по выкладыванию всего проекта в open-source, не знаю как вы, а я уже готов присоединиться к сообществу.

4. Human-Computer Interaction
Курс на Coursera

Всегда интересовался взаимодействием пользователя с программным обеспечением. Да не простым, а эффективным! Если вам нравяться такие книги как "Психбольница в руках пациентов" Алана Купера, то этот курс - для вас.

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

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

5. Algorithms, part 1
Курс на Coursera

Отличный курс по алгоритмам и структурам данных. Лично мне он понравился больше, чем курс профессора Тима Раукгх...как-его-там...гардена (no offence, просто фамиля сложная) из Стэнфорда. Естественно, темы лекций и домашних заданий пересекались: от алгоритмов сортировки никуда не деться. Но это, пожалуй, даже нельзя отнести к минусам. Ибо: во-первых, курс вел Robert Sedgewick, известный человек в области Computer Science; во-вторых, домашние задания были сконструированы таким образом, чтобы нужно было непосредственно использовать тот или иной алгоритм с помощью карандаша и бумаги для получения ответов; в-третьих, больше внимания уделено таким любопытнейшим структурам данных как деревья (red-black binary tree, k-d tree etc.)

Единственный минус курса (хотя лично мне он не доставил неудобств) - необходимость выполения домашних заданий с помощью Java, тогда как альтернативный курс позволял использовть любой язык. В остальном - must have для разработчиков ПО.

Совсем скоро стартует вторая часть курса.

6. Functional Programming in Scala (in progress)
Курс на Coursera

Этим курсом я занят в данный момент. Как можно понять из названия, мой главный интерес тут - функциональное программирование и язык Scala как приятное к этому дополнение. Заметьте, курс опять ведет довольно известный в своей области профессионал - Martin Odersky, один из создателей языка Scala.

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

Пускай курс еще не закончился, но я уже могу с уверенностью сказать, что очень хочу связать свою программисткую жизнь с языком Scala. Иногда мне кажется, что я не могу объяснить это рационально. А потом: higher-order functions, case classes, pattern matching .... эх! Хороший курс, рекомендую.


Вот и все. Такая получилась хронология событий с апреля по октябрь. Learning in progress...






Понравилось сообщение - подпишитесь на блог Подписка на блогFollow grodnosoft on Twitter




Читайте также:


Комментов: 0

Отправить комментарий