- PVSM.RU - https://www.pvsm.ru -
Всё, дождался!
Меня взяли учиться в Computer Science Center [1]. Чуть больше месяца я провел в напряженном состоянии ожидания, каждый день с надеждой просматривая почту. И вчера я наконец получил заветное письмо. Чертовски радостная весть и очень нужная.
Про CSC я узнал довольно давно, пару лет назад точно. Тогда еще мои мысли были тесно связаны с Академическим Университетом [2], и я даже попытался поступить туда в магистратуру, но мимо. Мыслей поступить в центр почему-то у меня тогда не возникло. Ну да ладно.
В этом году я созрел. Причем довольно рано (как мне казалось): набор должны были открыть в апреле, а я начал обдумывать это дело где-то в феврале. Посмотрев по диагонали примеры вступительных заданий и посчитав, что месяца мне вполне хватит на подготовку — забыл про это всё и сконцентировался на подаче заявки на участие в GSoC 2014. Туда не попал и тут же вспомнил про CSC. Вспомнил, как оказалось, несколько позновато.
Когда я зашел на сайт Школы Анализа Данных компании Яндекс [3] и более подробно ознакомился с примерами задач, я понял, что, наверное, снова в пролете.
Почему сайт ШАД Яндекса? Дело в том, что в Computer Science Center есть три направления обучения: Computer Science [4] (современная информатика), Data Mining [5] (анализ данных), Software Engineering [6] (разработка программного обеспечения). Направление Data Mining можно рассматривать как Санкт-Петербургское отделение Школы анализа данных Яндекса [3]. Поэтому логично было предположить, что примеры заданий приблизительно совпадают. Ну и на тот момент меня серьезно заинтересовало направление, связанное с анализом данных, поэтому я был ориентирован на соответствующее отделение, а значит и, косвенно, на ШАД.
Ну так вот. Не могу сказать, что я тупенький и в математике не в зуб ногой, просто надо понимать мою ситуацию. Так как я работаю php-программистом (специфику работы понимаете, да?), к математике я практически не возвращался за всё время, прошедшее с момента окончания университета; простейшие элементы дискретной математики не в счет. Поэтому, когда я увидел довольно непривычные, на тот момент, задачи на подстановки, интегралы и кое-что из теории вероятности, я немного расстроился. Это если мягко сказать.
От плачевного и никому не интересного конца ситуацию спасло случайное посещение официального сайта Computer Science Center [1]. Там, среди описания процесса поступления и примеров задач с вступительного экзамена, было еще упоминание об онлайн-курсе по алгоритмам. Вот оно! На сайте говорилось, что в случае успешного прохождения курса, меня позовут на очное собеседование. Без письменного экзамена. Курс будет считаться успешно пройденным, если студент нарешает задач на, кажется, 82 балла. Или что-то около того. Не надо быть сверхумным, чтобы понять, что это шанс, причем очень хороший. И я за него ухватился.
К слову сказать, здесь я тоже немного опоздал. Курс открылся где-то 1-го апреля, я про него узнал, когда уже было число 10-е. Ну и ладно. Я просто стал делать всё немного быстрее и собранее. На руку сыграло еще то, что в последнее время я плотно с алгоритмами общался.
Скажу немного по поводу курса. Мне понравилось. Напоминает курс от Tim Roughgarden на Coursera.org по алгоритмам [7], но, что очень круто, на русском языке и вместо Тима курс читает Александр Куликов [8]. И, надо сказать, отлично читает — всё предельно ясно и удобоваримо. По поводу расписания курса: тут довольно стандартная схема — смотришь видео, потом отвечаешь на вопросы, теоретические и практические, и выполняешь задания. К сожалению, курс является закрытым и пройти его можно только после подачи заявки на поступление.
Задания также доставили удовольствие — в меру сложные и довольно интересные. Что меня вналаче бесило, так это система тестирования. Поясню: в задаче вам дается тестовый набор данных, для первичной отладки. Вы проверяете работу вашего алгоритма на этом наборе и затем отправляете на полную проверку ваш код. Если какой-то тест не проходит, вам выдается номер failed теста и некое пояснение. Понятно, что никакого упоминания о данных, на которых отвалился алгоритм (обычная ситуация для сайтов типа topcoder.com [9]), не было — это-то и раздражало. Но, на самом деле, бесился я из-за этого только потому, что было мало времени. С другой стороны, это очень крутая штука — вам приходится полностью осмыслить свой алгоритм, понять что и где работает не так, чтобы пройти эти тесты. Я сталкивался с таким поведением не то, чтобы очень часто, но всё же оказии случались.
Был еще один не очень приятный момент, связанный с тем, что задания я выполнял на Python. На некоторых задачах, где требовался большой объем вычислений, Python не справлялся и тесты не проходили по времени. По первости я пытался оптимизировать работу программы как мог. Потом стал забивать и просто переписывал код на C++. К слову, задачи были довольно стандартные для курса по алгоритмам. Например, реализовать сортировку или обход графа в глубину. Были по-настоящему сложные задания, типа, реализовать алгоритм Карацубы. Тут меня реально поперло и потратил довольно много времени на реализацию и оптимизацию этого алгоритма. Правда уже после того, как я его реализовал, я увидел, что сабмитить решения можно только на Java или C++, но тут силы и желание меня подвели, так что я оставил его выполненным на Python.
Было несколько моментов, когда я готов был сдаться. Это такие моменты, когда я уже вдоль и поперек прошелся по алгоритму, но так и не понял, почему он фейлится. Такое очень напрягает и расстраивает.
Стоит упомянуть, что курс расположен на платформе для обучения Stepic.org [10], где помимо него еще куча интересных направлений для изучения. Взять хотя бы Python for Programmers [11] или Learn You a Haskell [12]. В общем, большое спасибо Александру Куликову и Сергею Поромову, команде Stepic.org [10] и коллективу JetBrains за подготовку этого познавательного курса, оказавшимся для меня еще и спасительным.
Так вот, курс я всё-таки закончил. Набрал нужное количество баллов, написал об этом кураторам CSC и в ответ получил уведомление, что всё нормально, скоро меня позовут на очную встречу.
Вот здесь я струхнул. Потому что логично предположил, что на очной-то встрече меня обязательно спросят что-нибудь из линейной алгебры или теории вероятности. Ну что ж, айда садиться за книжки. В тот момент я проклинал себя за, что так поздно спохватился насчет подготовки. По-хорошему, надо всё это делать сильно заранее. Но ничего поделать уже было нельзя… Так что Кострикин, Кудрявцев, Гнеденко — ням-ням.
Не буду врать, сильно подготовиться у меня не получилось. И когда мне назначили время очной встречи, я старался заставить себя поверить в чудо. Приятной неожиданностью собеседования оказалось то, что общался я с самим Александром Куликовым. Кроме него, на встрече еще присутствовал Андрей Иванов, COO компании JetBrains и руководитель направления Software Engineering в CSC. Впечатление на меня они произвели серьезное и сильное; после такого, знаете, хочется продолжать общаться и узнавать от людей что-то новое, опираясь на их опыт и мудрость.
Мои опасения по поводу вопросов по ЛА и ТВ оправдались, хоть и не в таком объеме. Всего несколько вопросов (за что я безумно благодарен), на которые я с горем пополам ответил :) Ключевым моментом собеседования стал этап, когда мне нужно было доказать свою мотивацию учиться. Как объяснил Александр, довольно много поступивших в CSC, но уже закончивших ВУЗы, не доучиваются и бросают учебу. По разным причинам: семья, нехватка времени, потеря мотивации.
Я постарался быть максимально искренним и просто рассказал свою историю. Хочется верить, что это помогло.
Дальше был месяц ожидания. Каждый день — проверка почты с надеждой, что вот сегодня я его получу, это заветное письмо. Вчера так и случилось и в сентябре я начну учиться в Computer Science Center, чему безумно рад.
Напоследок пару советов:
Дерзайте!
Автор: andymitrich
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/algoritmy/64726
Ссылки в тексте:
[1] Computer Science Center: http://compscicenter.ru/
[2] Академическим Университетом: http://www.spbau.ru/
[3] сайт Школы Анализа Данных компании Яндекс: http://shad.yandex.ru/
[4] Computer Science: http://compscicenter.ru/program/cs
[5] Data Mining: http://compscicenter.ru/program/dm
[6] Software Engineering: http://compscicenter.ru/program/se
[7] курс от Tim Roughgarden на Coursera.org по алгоритмам: https://www.coursera.org/course/algo
[8] Александр Куликов: http://compscicenter.ru/teachers/kulikov
[9] topcoder.com: http://topcoder.com/
[10] Stepic.org: http://stepic.org/
[11] Python for Programmers: https://stepic.org/course/Python-for-Programmers-10
[12] Learn You a Haskell: https://stepic.org/course/Learn-You-a-Haskell-11
[13] Источник: http://habrahabr.ru/post/229541/
Нажмите здесь для печати.