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

Почему

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

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

Когда я впервые увидел объявление о программе OMSCS, я был очень заинтригован. Хотя у меня были некоторые опасения по поводу предполагаемой рыночной стоимости онлайн-сертификатов, я быстро понял, что это не имеет отношения к моим реальным образовательным потребностям. Учитывая низкую стоимость программы, мне нужно было обосновывать не чисто экономическую отдачу, а потенциальный образовательный результат с учетом моего затраченного времени. Для меня это было легким решением. Я подал заявку на вторую когорту, был принят и начал тот осенний семестр.

Первые впечатления

Моим первым уроком было машинное обучение, которое проводили Чарльз Исбелл и Майкл Литтманн. Этот класс познакомил меня с общей формулой логистики класса OMSCS. «Среда обучения» состоит из:

  • Udacity, за проведение видеолекций и викторин.
  • Piazza, программное обеспечение для доски объявлений для обсуждения в классе
  • T-Square, внутренний инструмент GA Tech, содержащий ресурсы класса и отправку заданий.

Мои первые впечатления от лекций, прочитанных через Udacity, были очень положительными. Как человек с нарушением слуха, я ценил возможность приостанавливать, перематывать и пересматривать лекции так часто, как это необходимо. Встроенные викторины также помогли мне увлечься лекцией.

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

Часы работы офиса, важная часть процесса обучения в системе высшего образования, очевидно, сильно отличаются, когда они проводятся онлайн. В рамках машинного обучения использовались видеовстречи Google в прямом эфире, а технический специалист отвечал на письменные вопросы. Хотя это позволяло легко перемещаться по рабочим часам после этого, это затрудняет задание уточняющих вопросов, сохраняя последовательность разговора. Тем не менее, мы очень ценили усилия, направленные на то, чтобы сделать какое-то рабочее время доступным, даже если есть проблемы с масштабированием.

Экзамены по машинному обучению в основном состояли из двух экзаменов и нескольких проектов. Большинство МООК (к которым относится OMSCS, несмотря на то, что они не открыты и не являются массовыми) часто не соответствуют предоставленным оценкам. Часто это простые викторины с несколькими вариантами ответов, которые легко пройти методом проб и ошибок. Я был очень рад видеть, что оценки машинного обучения никоим образом не были легковесными. Проекты были очень значительными, требовали тщательной интерпретации требований и большого количества кропотливой работы, которую нужно было завершить. Эти проекты отнимали много времени, что дало классу машинного обучения заслуженную репутацию тяжелого курса. Хотя некоторые домашние задания позже в программе будут в некоторой степени подвергаться машинной оценке, все эти проекты оценивались вручную, хотя, возможно, с более слабой обратной связью, чем я хотел бы в идеале.

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

В целом же ML был отличным первым занятием, которое дало мне сильную теоретическую базу и познакомило меня с механикой типичного курса OMSCS.

Боковые каналы

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

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

Хотя на площади Пьяцца проводится большая часть дискуссий в классе, она не подходит для совместной работы в реальном времени. Для этой цели существует группа Hipchat (а позже и Slack), позволяющая студентам быстро общаться друг с другом и отвечать на вопросы, формировать учебные группы или участвовать в общем чате «охладитель воды». Я лично многое получил от групп Hipchat / Slack и надеюсь, что они продолжат развиваться по мере роста программы.

Кормушка печали

После успешного завершения машинного обучения я был рад пройти на весну два курса: компьютерное зрение (CV) и вычислимость, сложность и алгоритмы. CV был совершенно новым классом для семестра, обычно это красный флаг с точки зрения рабочей нагрузки из-за изгибов в реализации класса, но поскольку эта тема меня очень интересует, я решил сначала погрузиться в голову. CCA - это базовый класс программы, с заведомо сложным материалом, особенно для людей без очень прочного CS или математического образования (например, я).

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

Я так развлекался с резюме, что CCA быстро начал казаться рутиной. Не помогло и то, что терминология и математические обозначения, используемые в классе, казались мне совершенно незнакомыми. Пробившись через несколько первых наборов задач, я понял, что недооценил класс. Яростно работая между назначениями резюме, я работал, чтобы понять дискретную математику и формальные доказательства, требуемые классом. Каждая задача в домашнем задании требовала достижения определенного момента «ага!», На достижение которого могло уйти неопределенное количество времени. Тем не менее, я настаивал.

После первого промежуточного экзамена CCA я понял, что у меня проблемы. Из-за плохой оценки теста мне нужно внести изменения. Сначала я попытался понять причину, по которой я пропустил каждый балл на экзамене. Работая с отзывами ТА, я смог обнаружить большинство своих логических ошибок. Однако была одна проблема, связанная с сведением проблемы к проблеме NP Complete, по которой я не мог обнаружить свою логическую ошибку. После нескольких разговоров с ТА, когда казалось, что мы просто разговариваем друг с другом, мне пришлось отказаться от понимания того, в чем я ошибся, ради продвижения вперед. Это было ужасно деморализующим образом, и в тот момент мне больше всего не хватало «настоящих» одноклассников поблизости, чтобы не ложиться спать допоздна и решать сложные проблемы, как я испытал на старших классах. Я подумывала нанять репетитора, чтобы помочь, но репетиторов по этому предмету найти сложно.

В конце концов, я хорошо закончил с резюме, но не так хорошо с CCA. После невероятно загруженного и напряженного семестра я надеялся, что на лето у меня будет немного легче.

Круизный режим

Я исполнила свое желание. Основанный на знаниях AI был моим летним уроком, интересным, если не полностью строгим, знакомством с когнитивными концепциями искусственного интеллекта. Этим классом руководил Дэвид Джойнер, инструктор программы, имеющий явную страсть к процессу разработки и администрирования класса. Все аспекты класса работали как часы, что было очень здорово.

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

Весна (сейчас 2016 г.) - это процесс разработки программного обеспечения (SDP) и искусственный интеллект (AI). ИИ, пожалуй, мой лучший выбор для лучшего класса в программе. Лекции дают хорошую базу по основам, не боясь запачкать руки математикой. Программные проекты впечатляли своей глубиной. Большинство из них предлагало своего рода «вызов», где вы могли соревноваться со своими одноклассниками. Одним из примеров этого был агент, играющий в игру. Вы можете ввести своего агента в конкурс и посмотреть, превзойдет ли он ваших одноклассников. Из этого я снова увидел, насколько умелыми были многие из моих одноклассников, и некоторые впечатляющие цифры были нанесены на табло. Я чему-то научился из каждого упражнения в этом классе, и я чувствую, что оно значительно улучшило не только мои знания об ИИ, но и о байесовской статистике и методах поиска по графам.

SDP был немного более простым, поскольку представлял собой базовый обзор методов разработки программного обеспечения, начиная от сбора требований, планирования, управления проектами, тестирования и контроля версий. Самым большим оцениваемым компонентом была пара групповых проектов. В то время как у меня были отличные члены группы, групповые проекты с произвольно распределенными группами по своей сути сложны. Я действительно научился на этом курсе (в основном об Android), но это был далеко не тот опыт, который открывал разум, как ИИ.

Конец?

После летнего перерыва (столь необходимого перерыва) я только начинаю свой последний семестр в программе, который я планирую использовать: данные и визуальная аналитика (DVA) и Введение в информатику здравоохранения. Если все пойдет хорошо, я закончу учебу в декабре.

Находясь так близко к концу, я размышляю о ценности программы. Без сомнения, я более знающий разработчик, чем был, когда начинал программу. Я углубился в суровые концепции глубже, чем когда-либо, благодаря самообучению. Я также установил некоторые связи с сокурсниками, но не настолько глубокими, как во время учебы в бакалавриате. Узнал ли я столько же, сколько получил бы по традиционной программе на территории кампуса, основанной на дипломной работе? Учитывая частичный характер программы и отсутствие проекта типа дипломной работы, я предполагаю, что у меня нет той глубины знаний, которую я получил бы, идя по этому пути. Тем не менее, я все же многому научился, при этом имея возможность работать полный рабочий день. Я также думаю, что я узнал столько же или больше, чем я мог бы получить из программы курсов на территории кампуса, благодаря способности настраивать среду обучения в соответствии со своими потребностями.

OMSCS - это много работы, много тяжелых ночей и выходных, но, так как я близок к концу и оглядываясь назад, я невероятно благодарен за опыт и возможности, которые мне дала программа.

Дэвид Уилсон - инженер-программист, живущий в Денвере, штат Колорадо. Помимо занятий в Колорадо, таких как катание на лыжах, велосипеде и скалолазание, он пишет на http://davidwilson.me/ по различным темам, связанным с программным обеспечением.