Как стать автором
Обновить

Компания Питерская Вышка временно не ведёт блог на Хабре

Сначала показывать

Стажировки в Google: Цюрих, Лондон и Кремниевая долина

Время на прочтение17 мин
Количество просмотров33K
Три года подряд я проводила лето на стажировках в компании Google: сначала в Цюрихе, затем в Лондоне и, наконец, в Саннивейл (город в штате Калифорния, США). В этом посте я поделюсь тем, как подавать заявки и проходить собеседования, какими проектами я занималась и чем стажировки в Европе отличались от США. А еще расскажу, чем Цюрих понравился мне больше Кремниевой долины, где лучше обеды и вечеринки и почему я пока решила остаться в России.



Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии37

Как я научила робота бегать по видео с YouTube

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

Смоделировать все возможные движения человека и описать все сценарии поведения — достаточно сложная задача. Если мы научимся понимать, как человек двигается, и сможем воспроизводить его движения «по образу и подобию» — это сильно облегчит внедрение роботов во многие области. Как раз для того, чтобы роботы учились повторять и анализировать движения сами, и применяется машинное обучение.


Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии14

Как мы добавили поддержку языка Frege в IDEA. Часть 1

Время на прочтение14 мин
Количество просмотров6.4K

В этом посте мы расскажем, как реализовывали плагин для поддержки функционального языка Frege в IntelliJ IDEA. Если вам интересно, как IDE от JetBrains работают внутри, или вы хотите поконтрибьютить в языковые плагины (а может даже написать свой!), эта статья для вас. Мы пройдемся по этапам создания языкового плагина для IDEA, расскажем, с какими трудностями столкнулись, и как подружили этот язык с JVM-миром.

Читать далее
Всего голосов 35: ↑35 и ↓0+35
Комментарии9

Абстрактные 3D-фракталы всех сортов на C++

Время на прочтение6 мин
Количество просмотров13K

Привет, Хабр!

Под фракталами понимают фигуры, особенность которых — подобие самим себе. В рамках курсовой работы по C++ мы написали приложение, шустро отрисовывающее 3D-фракталы и позволяющее их вращать, приближать-отдалять, изменять параметры, записывать видео и не только. В этой статье расскажем, как шла разработка, с какими задачами в ходе неё мы сталкивались и как их решали.

Читать далее
Всего голосов 34: ↑34 и ↓0+34
Комментарии7

Анализатор C++ на первом курсе: миф, иллюзия или выдумка?

Время на прочтение13 мин
Количество просмотров10K
Для программистов настали тяжёлые времена. Хотя Утечка Памяти была уничтожена valgrind-ом, оставшиеся силы UB преследовали программистов по всей галактике.

Избегая встречи с грозными знаковыми переполнениями, группа борцов за свободу, ведомая Кириллом Бриллиантовым, Глебом Соловьевым и Денисом Лочмелисом, обустроила новый секретный репозиторий.

Тёмная владычица UB неинициализированная переменная, одержимая желанием сломать все программы галактики, разослала тысячи раздражающих ошибок в самые далекие уголки космоса…


Мы — трое студентов бакалавриата «Прикладная математика и информатика» в Питерской Вышке. В качестве учебного проекта во втором полугодии мы решили написать UB-tester — анализатор кода на С++.


Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии23

Как попасть на стажировку в Google

Время на прочтение9 мин
Количество просмотров60K

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


В первой статье я расскажу, как успешно пройти все этапы собеседований и попасть на стажировку в Google.


Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии18

Красиво? Очень! Как мы написали приложение для визуализации аттракторов

Время на прочтение8 мин
Количество просмотров11K
Странные аттракторы — это области, которые часто возникают в различных физических системах. Можно сказать, что это область притяжения, к которой стремятся траектории из некоторой окрестности. В отличие от каких-нибудь предельных циклов или от точки равновесия в затухающих колебаниях, они не периодичны. В таких системах проявляется эффект бабочки: минимальные отклонения исходных положений экспоненциально растут со временем.

Некоторые аттракторы завораживают своей красотой даже на статических картинках. Мы захотели сделать приложение, которое сможет визуализировать большинство аттракторов в динамике, в 3D и без лагов.


Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии11

Отладка алгоритмов на графах — теперь с картинками

Время на прочтение11 мин
Количество просмотров11K
Представим типичную ситуацию на первом курсе: вы прочитали про алгоритм Диница, реализовали, а он не заработал, и вы не знаете, почему. Стандартное решение — это начать отлаживать по шагам, каждый раз рисуя текущее состояние графа на листочке, но это жутко неудобно. Я попробовала исправить положение в рамках семестрового проекта по Software Engineering, а в посте расскажу, как у меня в итоге получился плагин для Visual Studio. Скачать можно тут, исходный код и документацию можно посмотреть тут. Вот скриншот графа, который получился для алгоритма Диница.

Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии6

Как решать NP-трудные задачи с помощью параметризованных алгоритмов

Время на прочтение11 мин
Количество просмотров17K
Научно-исследовательская работа, пожалуй, самая интересная часть нашего обучения. Идея в том, чтобы ещё в университете попробовать себя в выбранном направлении. Например, студенты с направлений Software Engineering и Machine Learning часто идут делать НИРы в компании (в основном, JetBrains или Яндекс, но не только).

В этом посте я расскажу о своём проекте по направлению Computer Science. В рамках работы я изучил и реализовал на практике подходы к решению одной из самых известных NP-трудных задач: задаче о вершинном покрытии.

Сейчас очень быстро развивается интересный подход к NP-трудным задачам — параметризованные алгоритмы. Я постараюсь ввести вас в курс дела, рассказать несколько простых параметризованных алгоритмов и описать один мощный метод, который очень мне помог. Свой результаты я представил на соревновании PACE Challenge: по итогам открытых тестов мое решение занимает третье место, а окончательные результаты будут известны 1 июля.


Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии22

Как мы в Питерской Вышке учим Software Engineering

Время на прочтение12 мин
Количество просмотров15K

В предыдущих постах мы рассказывали, что наши студенты делают на стажировках: научных (например, в JetBrains Research) и промышленных. В этом посте хотим поделиться, как мы учим промышленному программированию.



Кратко: за четыре курса бывший школьник пробует десяток-другой технологий и языков, постоянно пишет и удаляет много кода, проходит code review от более опытных товарищей (не всегда с первой попытки), углубляется в какую-то тему и в итоге защищает содержательный диплом. Всё это проходит прямо в университете и даёт диплом гособразца. А летом можно либо отдохнуть, либо постажироваться в России в JetBrains, Яндексе и JetBrains Research (если хочется больше науки) или съездить за рубеж (Google, Facebook и другие). Теперь поподробнее.

Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии2

Как учиться с помощью машинного обучения у экспертов в Dota 2

Время на прочтение6 мин
Количество просмотров14K

В предыдущей статье от Питерской Вышки мы показывали, как при помощи машинного обучения можно искать баги в программном коде. В этом посте расскажем о том, как мы вместе с JetBrains Research пытаемся использовать один из самых интересных, современных и быстроразвивающихся разделов машинного обучения — обучение с подкреплением — как в реальных практических задачах, так и на модельных примерах.


Всего голосов 31: ↑27 и ↓4+23
Комментарии4

Одежда умная, но мы умнее: как мы делали футболку с контролем осанки

Время на прочтение10 мин
Количество просмотров5.3K
Всем привет! Во втором семестре все первокурсники программы «Прикладная математика и информатика» в Питерской Вышке делают командные проекты по С++. Мы занимались разработкой умной футболки.

О том, что это такое и что мы успели сделать за время работы над проектом, читайте в этой статье.

Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии5

Написать игровой движок на первом курсе: легко! (ну почти)

Время на прочтение8 мин
Количество просмотров25K
Привет! Меня зовут Глеб Марьин, я учусь на первом курсе бакалавриата «Прикладная математика и информатика» в Питерской Вышке. Во втором семестре все первокурсники нашей программы делают командные проекты по С++. Мы с моими партнерами по команде решили написать игровой движок. 

О том, что у нас получается, читайте под катом.

Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии26

Реляционное программирование: боль, интерес и снова боль

Время на прочтение14 мин
Количество просмотров9.6K
В предыдущем посте мы подробно рассказывали, чему учим студентов на направлении «Промышленное программирование». Для тех, чья сфера интересов лежит в более теоретической области, например, привлекают новые парадигмы программирования или абстрактная математика, используемая в теоретических исследованиях по программированию, существует другая специализация — «Языки программирования».

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

Что такое реляционное программирование? Обычно мы запускаем функцию с аргументами и получаем результат. А в реляционном случае можно делать наоборот: зафиксировать результат и один аргумент, а второй аргумент получить. Главное — правильно написать код и запастись терпением или хорошим кластером.


Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии10

Приложение для аудиозвонков с регулировкой звука, как в реальной жизни

Время на прочтение9 мин
Количество просмотров5.6K

Распространенная в пандемию ситуация: общаетесь с друзьями или коллегами по Zoom, несколько человек начинают говорить одновременно и… разобрать хоть что-то не представляется возможным. Эта проблема натолкнула нас на идею написать свое приложение для аудиозвонков, где громкость регулируется весьма необычным образом. У каждого пользователя есть свой аватар — кружок на плоскости, который управляется перетаскиванием. Чем ближе аватары пользователей на экране, тем громче они друг друга слышат. Работает ли это? В целом да. Рассказываем, что у нас получилось.

Читать далее
Всего голосов 23: ↑22 и ↓1+21
Комментарии27

4 угла хорошо, а 6 лучше: гексагональные шахматы в консоли и с ботом

Время на прочтение11 мин
Количество просмотров6.4K
Привет!

Мы учимся на первом курсе бакалавриата «Прикладная математика и информатика» в Питерской Вышке. Во время работы над семестровым командным проектом по С++ мы решили написать компьютерную версию Интеллектора с ботом — шахматную игру на гексагональной доске с особыми фигурами.

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


Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии17

GSoC 2019: Проверка графов на двудольность и трансформеры монад

Время на прочтение7 мин
Количество просмотров4.4K
Прошлым летом я участвовал в Google Summer of Code — программе для студентов от компании Google. Ежегодно организаторы отбирают несколько Open Source-проектов, в том числе от таких известных организаций, как Boost.org и The Linux Foundation. Для работы над этими проектами Google приглашает студентов со всего мира. 

Как участник Google Summer of Code 2019 я делал проект в рамках библиотеки Alga с организацией Haskell.org, занимающейся развитием языка Хаскелль — одного из самых известных функциональных языков программирования. Alga — библиотека, представляющая типобезопасное представление для графов в Хаскелле. Она используется, например, в semantic — библиотеке компании Github, строящей по коду семантические деревья, графы вызовов и зависимостей и умеющей их сравнивать. Мой проект состоял в добавлении туда типобезопасного представления для двудольных графов и алгоритмов для этого представления. 

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


Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии2

ZuriHac: практикуемся в функциональном программировании

Время на прочтение7 мин
Количество просмотров4.3K
В июне этого года в небольшом швейцарском городке Рапперсвиле уже в десятый раз прошло мероприятие под названием ZuriHac. В этот раз на нём собрались более пятисот любителей Хаскелля, от новичков до отцов-основателей языка. Хотя организаторы называют это мероприятие хакатоном, всё же оно не является конференцией или хакатоном в классическом смысле. Его формат отличается от традиционных программистских. Мы узнали про ZuriHac по счастливой случайности, поучаствовали в нем, а теперь считаем своим долгом рассказать о необычной находке!



Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии0

Машинное обучение для поиска ошибок в коде: как я стажировался в JetBrains Research

Время на прочтение7 мин
Количество просмотров6K
Недавно мы рассказывали о том, как попасть на стажировку в Google. Помимо Google наши студенты пробуют свои силы в JetBrains, Яндекс, Acronis и других компаниях.

В этой статье я поделюсь своим опытом прохождения стажировки в JetBrains Research, расскажу о задачах, которые там решают, и подробнее остановлюсь на том, как при помощи машинного обучения можно искать баги в программном коде.


Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии8

Какие реальные математические задачи возникают при разработке вакцин от COVID-19

Время на прочтение16 мин
Количество просмотров6.5K
В обновленном на прошлой неделе списке Всемирной организации здравоохранения числится уже 131 проект разработки вакцин, призванных сформировать иммунный ответ к вирусу SARS-CoV-2 — причине заболевания COVID-19. Среди них есть два проекта от нашего партнера — российской биофармацевтической компании BIOCAD. Попадание в этот список — не только вопрос престижа, но и возможность включиться в рабочие группы разработчиков вакцин по всему миру, обсуждающих без лишних глаз вопросы клеточных и животных моделей, на которых можно было бы протестировать те или иные вакцины. Тем не менее за пределы таких специализированных групп информация о том,  как именно разрабатываются вакцины, проникает крайне скупо.

В СМИ активно раскручиваются обсуждения клинических исследований, производства и будущего применения вакцин, тогда как «ранние» разработчики, скорее, отмахивались от излишней публичности. Теперь же вся часть по дизайну и сборке кандидатов завершена, мы затаились в ожидании результатов с животных моделей и получения разрешений на людях. Так что можно выделить немного времени для того, чтоб рассказать какие задачи возникают внутри.

Поскольку Habr — ресурс в первую очередь околоайтишный, а в современной фармацевтике активно применяются методы биоинформатики и вычислительной биологии, мы остановимся именно на «сухих» математических задачах. На самом деле эти задачи выбраны еще и потому, что в следующем году НИУ ВШЭ — Санкт-Петербург и BIOCAD открывают свою магистратуру по вычислительной биологии, но об этом в самом конце. В первую же очередь разберемся, что, собственно, нужно было сделать.


Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии8