...

пятница, 11 июля 2014 г.

Я буду учиться в Computer Science Center

Всё, дождался!

Меня взяли учиться в Computer Science Center. Чуть больше месяца я провел в напряженном состоянии ожидания, каждый день с надеждой просматривая почту. И вчера я наконец получил заветное письмо. Чертовски радостная весть и очень нужная.


Про CSC я узнал довольно давно, пару лет назад точно. Тогда еще мои мысли были тесно связаны с Академическим Университетом, и я даже попытался поступить туда в магистратуру, но мимо. Мыслей поступить в центр почему-то у меня тогда не возникло. Ну да ладно.

В этом году я созрел. Причем довольно рано (как мне казалось): набор должны были открыть в апреле, а я начал обдумывать это дело где-то в феврале. Посмотрев по диагонали примеры вступительных заданий и посчитав, что месяца мне вполне хватит на подготовку — забыл про это всё и сконцентировался на подаче заявки на участие в GSoC 2014. Туда не попал и тут же вспомнил про CSC. Вспомнил, как оказалось, несколько позновато.



Когда я зашел на сайт Школы Анализа Данных компании Яндекс и более подробно ознакомился с примерами задач, я понял, что, наверное, снова в пролете.


Почему сайт ШАД Яндекса? Дело в том, что в Computer Science Center есть три направления обучения: Computer Science (современная информатика), Data Mining (анализ данных), Software Engineering (разработка программного обеспечения). Направление Data Mining можно рассматривать как Санкт-Петербургское отделение Школы анализа данных Яндекса. Поэтому логично было предположить, что примеры заданий приблизительно совпадают. Ну и на тот момент меня серьезно заинтересовало направление, связанное с анализом данных, поэтому я был ориентирован на соответствующее отделение, а значит и, косвенно, на ШАД.


Ну так вот. Не могу сказать, что я тупенький и в математике не в зуб ногой, просто надо понимать мою ситуацию. Так как я работаю php-программистом (специфику работы понимаете, да?), к математике я практически не возвращался за всё время, прошедшее с момента окончания университета; простейшие элементы дискретной математики не в счет. Поэтому, когда я увидел довольно непривычные, на тот момент, задачи на подстановки, интегралы и кое-что из теории вероятности, я немного расстроился. Это если мягко сказать.


От плачевного и никому не интересного конца ситуацию спасло случайное посещение официального сайта Computer Science Center. Там, среди описания процесса поступления и примеров задач с вступительного экзамена, было еще упоминание об онлайн-курсе по алгоритмам. Вот оно! На сайте говорилось, что в случае успешного прохождения курса, меня позовут на очное собеседование. Без письменного экзамена. Курс будет считаться успешно пройденным, если студент нарешает задач на, кажется, 82 балла. Или что-то около того. Не надо быть сверхумным, чтобы понять, что это шанс, причем очень хороший. И я за него ухватился.


К слову сказать, здесь я тоже немного опоздал. Курс открылся где-то 1-го апреля, я про него узнал, когда уже было число 10-е. Ну и ладно. Я просто стал делать всё немного быстрее и собранее. На руку сыграло еще то, что в последнее время я плотно с алгоритмами общался.


Скажу немного по поводу курса. Мне понравилось. Напоминает курс от Tim Roughgarden на Coursera.org по алгоритмам, но, что очень круто, на русском языке и вместо Тима курс читает Александр Куликов. И, надо сказать, отлично читает — всё предельно ясно и удобоваримо. По поводу расписания курса: тут довольно стандартная схема — смотришь видео, потом отвечаешь на вопросы, теоретические и практические, и выполняешь задания. К сожалению, курс является закрытым и пройти его можно только после подачи заявки на поступление.


Задания также доставили удовольствие — в меру сложные и довольно интересные. Что меня вналаче бесило, так это система тестирования. Поясню: в задаче вам дается тестовый набор данных, для первичной отладки. Вы проверяете работу вашего алгоритма на этом наборе и затем отправляете на полную проверку ваш код. Если какой-то тест не проходит, вам выдается номер failed теста и некое пояснение. Понятно, что никакого упоминания о данных, на которых отвалился алгоритм (обычная ситуация для сайтов типа topcoder.com), не было — это-то и раздражало. Но, на самом деле, бесился я из-за этого только потому, что было мало времени. С другой стороны, это очень крутая штука — вам приходится полностью осмыслить свой алгоритм, понять что и где работает не так, чтобы пройти эти тесты. Я сталкивался с таким поведением не то, чтобы очень часто, но всё же оказии случались.


Был еще один не очень приятный момент, связанный с тем, что задания я выполнял на Python. На некоторых задачах, где требовался большой объем вычислений, Python не справлялся и тесты не проходили по времени. По первости я пытался оптимизировать работу программы как мог. Потом стал забивать и просто переписывал код на C++. К слову, задачи были довольно стандартные для курса по алгоритмам. Например, реализовать сортировку или обход графа в глубину. Были по-настоящему сложные задания, типа, реализовать алгоритм Карацубы. Тут меня реально поперло и потратил довольно много времени на реализацию и оптимизацию этого алгоритма. Правда уже после того, как я его реализовал, я увидел, что сабмитить решения можно только на Java или C++, но тут силы и желание меня подвели, так что я оставил его выполненным на Python.


Было несколько моментов, когда я готов был сдаться. Это такие моменты, когда я уже вдоль и поперек прошелся по алгоритму, но так и не понял, почему он фейлится. Такое очень напрягает и расстраивает.


Стоит упомянуть, что курс расположен на платформе для обучения Stepic.org, где помимо него еще куча интересных направлений для изучения. Взять хотя бы Python for Programmers или Learn You a Haskell. В общем, большое спасибо Александру Куликову и Сергею Поромову, команде Stepic.org и коллективу JetBrains за подготовку этого познавательного курса, оказавшимся для меня еще и спасительным.


Так вот, курс я всё-таки закончил. Набрал нужное количество баллов, написал об этом кураторам CSC и в ответ получил уведомление, что всё нормально, скоро меня позовут на очную встречу.


Вот здесь я струхнул. Потому что логично предположил, что на очной-то встрече меня обязательно спросят что-нибудь из линейной алгебры или теории вероятности. Ну что ж, айда садиться за книжки. В тот момент я проклинал себя за, что так поздно спохватился насчет подготовки. По-хорошему, надо всё это делать сильно заранее. Но ничего поделать уже было нельзя… Так что Кострикин, Кудрявцев, Гнеденко — ням-ням.


Не буду врать, сильно подготовиться у меня не получилось. И когда мне назначили время очной встречи, я старался заставить себя поверить в чудо. Приятной неожиданностью собеседования оказалось то, что общался я с самим Александром Куликовым. Кроме него, на встрече еще присутствовал Андрей Иванов, COO компании JetBrains и руководитель направления Software Engineering в CSC. Впечатление на меня они произвели серьезное и сильное; после такого, знаете, хочется продолжать общаться и узнавать от людей что-то новое, опираясь на их опыт и мудрость.


Мои опасения по поводу вопросов по ЛА и ТВ оправдались, хоть и не в таком объеме. Всего несколько вопросов (за что я безумно благодарен), на которые я с горем пополам ответил :) Ключевым моментом собеседования стал этап, когда мне нужно было доказать свою мотивацию учиться. Как объяснил Александр, довольно много поступивших в CSC, но уже закончивших ВУЗы, не доучиваются и бросают учебу. По разным причинам: семья, нехватка времени, потеря мотивации.


Я постарался быть максимально искренним и просто рассказал свою историю. Хочется верить, что это помогло.


Дальше был месяц ожидания. Каждый день — проверка почты с надеждой, что вот сегодня я его получу, это заветное письмо. Вчера так и случилось и в сентябре я начну учиться в Computer Science Center, чему безумно рад.


Напоследок пару советов:



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

  2. Не бойтесь. Ваша мотивация учиться имеет вес. Я не говорю, что если вы придете на собеседование и скажите: «Я хочу!», то вас сразу возьмут. Нет, конечно. Но если у вас получится доказать интервьюерам, что для вас это по-настоящему важно, то ваши шансы однозначно увеличатся.

  3. Если вы сомневаетесь, пытаться или нет — я рекомендую попробовать. Это нереально крутая возможность поднять свой уровень, пообщаться и поработать с настоящими профессионалами своего дела. Кроме того, это отличный шанс для тех, кто облизывается на магистратуру Академического университета, но не имеет достаточного объема свободного времени, чтобы там учиться.




Дерзайте!

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

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