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

Компания Образовательные проекты JetBrains временно не ведёт блог на Хабре

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

Computer Science Center открыл приём заявок на новый учебный год

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

До 10 апреля продолжается набор на вечерние курсы по математике и программированию в CS центре. Computer Science Center — это совместный проект Школы анализа данных Яндекса, JetBrains и Computer Science клуба при ПОМИ РАН. Курсы проходят очно в Санкт-Петербурге и Новосибирске, жители других городов могут заниматься дистанционно. Обучение в Computer Science Center бесплатное.

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

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

Как провести лето с пользой: стажировки в JetBrains 2021

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

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

Скоро конкурс на летние стажировки в JetBrains. Рассказываем, как они устроены и как на них попасть.

24 марта проведем вебинар и ответим на все вопросы. 

29 марта начинается конкурс по адресу internship.jetbrains.com.

Присоединяйтесь!

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии4

Полезные материалы для разработчика

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

Существует много полезных инструментов, которые помогают автоматизировать рутинную работу и тем самым облегчить жизнь разработчика. 

Выпускнику и преподавателю Computer Science Center, Равилю Галееву, пришла идея собрать такие инструменты и технологии в один курс и познакомить студентов с ними. За пример такого курса были взяты The Missing Semester of Your CS Education от MITSoftware Carpentry и cs50.

В этом посте мы собрали видеолекции курса «Практический минимум» и материалы к занятиям. Благодарим Равиля за подборку! 

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

Из студентов в преподаватели: интервью с выпускниками магистерской программы JetBrains + ИТМО. Часть 2

Время на прочтение8 мин
Количество просмотров2.2K
Продолжаем знакомить вас с выпускниками магистратуры JetBrains и ИТМО «Разработка программного обеспечения», которые по завершении обучения пополнили преподавательский состав программы. Во второй части интервью ребята рассказывают подробнее о своих задачах, подходах к преподаванию и дают советы абитуриентам. Первая часть интервью.


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

Model Checking для тестирования многопоточности? С Lincheck — легко

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

Привет! Сегодня мы будем говорить про многопоточность и расскажем про инструмент  Lincheck – один из ключевых проектов  Лаборатории параллельных вычислений в JetBrains Research. Если в двух словах, то это фреймворк для тестирования многопоточных структур данных под JVM, предоставляющий возможность декларативного написания тестов. Что это значит? Как правило, при написании тестов мы пишем саму логику тестирования. С Lincheck-ом же все иначе – вместо указания того, как тестировать, вы объявляете операции, которые необходимо проверить, критерий корректности (например, линеаризуемость) и возможные ограничения (например, "single-consumer" для очередей) – то есть указываете что тестировать. А дальше Lincheck уже сам со всем разберется.  В этом посте мы сделаем краткий обзор Lincheck-а и расскажем про режим model checking, который мы недавно зарелизили и который уже спас нам десятки часов отладки ошибок в алгоритмах.

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

Видео курсов Computer Science клуба

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

Computer Science клуб — это открытые лекции по компьютерным наукам в Санкт-Петербургском отделении Математического института РАН. Филиалы CS клуба действуют в Новосибирске и Казани. В связи с эпидемией все лекции осеннего семестра проходили онлайн и были доступные всем желающим вне зависимости от их местонахождения. Видеозаписи этих курсов выложены на сайт клуба и в канал на ютубе.

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

Открытые материалы: курс по вычислительной нейронауке

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

В осеннем семестре 2020 года команда лаборатории Нейробиологии и физиологии развития прочитала курс «Вычислительные Нейронауки» для студентов партнерских магистратур ВШЭ и ИТМО, а также для заинтересованных вольнослушателей. Курс проводится в рамках образовательных программ JetBrains c 2019 года. В этом году, в отличие от прошлого, формат обучения был, естественно, дистанционный –– лекции и семинары проводились в виде видеоконференций. В ходе курса студентам был предложен базовый материал для изучения и обсуждения в аудитории, материалы для самостоятельного, более глубокого погружения, интересные практические задания по моделированию нейронов и биологических нейронных сетей. 

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

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

Жадные гипотезы в задаче о кратчайшей надстроке

Время на прочтение7 мин
Количество просмотров2K
В задаче о надстроке по входному набору строк требуется найти кратчайшую строку, которая содержит каждую из них в качестве подстроки. Данная задача возникает в разных приложениях, например, в сборке генома или сжатии данных. Эта задача NP-трудная, поэтому рассчитывать на эффективный алгоритм поиска точного решения не приходится.

Максим Николаев — аспирант ПОМИ РАН, преподаватель Computer Science Center и СПбГУ, учитель математики в лицее №533 в Санкт-Петербурге. В 2019 году он окончил CS центр по направлению Современная информатика. В статье ниже Максим рассказывает о своей исследовательской работе во время обучения по поиску приближенных решений задачи о надстроке.


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

Из студентов в преподаватели: интервью с выпускниками магистерской программы JetBrains + ИТМО. Часть первая

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

Преподавательский состав магистерской программы JetBrains и ИТМО «Разработка программного обеспечения» на четверть (!) состоит из выпускников этой же программы. Пожалуй, это хороший повод для гордости. Мы решили сделать большое интервью с ребятами. Возможно, их истории помогут кому-то решиться начать преподавательскую карьеру, а кому-то — поступить к нам на программу.

В первой части наши выпускники и преподаватели –– Владислав Танков, Дмитрий Новожилов, Дмитрий Халанский, Алексей Зубаков, Артем Хорошев, Александр Садовников, Владислав Кораблинов и Роман Голышев — рассказывают о выборе магистратуры, впечатлениях от обучения и отличиях от других программ.

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии0

Исследование возможных заимствований и нарушений условий лицензирования в Java-коде на GitHub

Время на прочтение19 мин
Количество просмотров3.9K
Меня зовут Ярослав Голубев, я работаю в JetBrains Research, в лаборатории методов машинного обучения в программной инженерии. Некоторые мои коллеги уже писали здесь о своих проектах (например, о подсказках для онлайн-курсов). Общая цель нашей группы — сделать работу программистов проще, удобнее и эффективнее, используя данные о том, что и как люди программируют. Однако процесс создания программных продуктов состоит не только из написания кода — есть еще документация, комментарии, рабочие обсуждения и многое другое — и со всем этим людям тоже можно и нужно помогать.

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

Любая помощь людям начинается с исследования сложившейся ситуации — во-первых, сбор данных необходим для возможности дальнейшей автоматизации, а во-вторых, их анализ позволит нам узнать, что именно люди делают не так. В этой статье я опишу именно такое исследование: познакомлю вас с основными видами лицензий ПО (а также несколькими редкими, но примечательными), расскажу об анализе кода и поиске заимствований в большом объеме данных и дам советы о том, как правильно обращаться с лицензиями в коде и не допускать распространенных ошибок.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии5

Семинары лаборатории языковых инструментов JetBrains Research

Время на прочтение8 мин
Количество просмотров1.6K
Лаборатория языковых инструментов — совместная инициатива JetBrains и математико-механического факультета СПбГУ.

Сотрудники лаборатории исследуют:

  • формализацию и верификацию семантики языков программирования в контексте слабых моделей памяти;
  • логическое и реляционное программирование;
  • теорию формальных языков и ее применения;
  • метапрограммирование, специализацию и частичные вычисления;
  • формальную верификацию и применение SMT-решателей.

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


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

Создай мозг с нуля: математические модели в нейробиологии

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

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

Нейробиология — это наука, изучающая структуру, функционирование и развитие нервной системы человека и животных. Brain science — более узкая дисциплина, посвященная головному мозгу человека. Нейробиология охватывает разные уровни организации — от молекулярного до системного, плавно переходя в молекулярную биологию и биохимию с одной стороны и в нейропсихологию (наука на стыке с психологией) с другой.Некоторые люди, как и в незапамятные времена, продолжают утверждать, что понять работу мозга невозможно, или же отрицают, что мозг порождает наш разум и сознание и т. д. Несмотря на все это, …

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

Слабые модели памяти: буферизации записи на x86

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

Об авторе


Антон Подкопаев является постдоком в MPI-SWS, руководителем группы слабых моделей памяти в лаборатории языковых инструментов JetBrains Research и преподавателем Computer Science Center.

Еще в 1979 году Лесли Лампорт в статье «How to make a multiprocessor computer that correctly executes multiprocess programs» ввел, как следует из названия, идеализированную семантику многопоточности — модель последовательной консистентности (sequential consistency, SC). Согласно данной модели, любой результат исполнения многопоточной программы может быть получен как последовательное исполнение некоторого чередования инструкций потоков этой программы. (Предполагается, что чередование сохраняет порядок между инструкциями, относящимися к одному потоку.)

Рассмотрим следующую программу SB:



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


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

Курсы Computer Science клуба теперь онлайн

Время на прочтение2 мин
Количество просмотров3.5K
В связи с эпидемией COVID-19 курсы Computer Science клуба теперь проходят онлайн. В весеннем семестре мы успели провести два оффлайн-курса: «Вероятностные алгоритмы» (И. А. Михайлин, UCSD) и «Классическая теория кодирования и новые приложения» (В. Скачек, университет Тарту). Оба курса доступны в записи, а остальные курсы пришлось отменить.

Вместо отменённых курсов мы организовали несколько открытых онлайн-лекций:

  1. «Генераторы „случайных чисел“: теория и практика» (А. Шень, LIRMM, Монпелье)
  2. «SANNS: Scaling Up Secure Approximate k-Nearest Neighbors Search» (И. Разенштейн, Microsoft Research),
  3. «Машинное обучение и приватность данных» (И. Миронов, Facebook AI),
  4. «Решётки и упаковки шаров» (В. Клепцын, CNRS, Университет Ренна).

Теперь я расскажу о том, какие крутые курсы проходят в этом семестре.

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

Разбор вступительного теста этого года в корпоративную магистратуру JetBrains на базе Университета ИТМО

Время на прочтение10 мин
Количество просмотров11K
Вступительное испытание на корпоративную магистерскую программу JetBrains на базе Университете ИТМО начинается с онлайн-теста. Летом мы опубликовали разбор нескольких математических задач из теста 2019 года, а сегодня представляем разбор одного из вариантов прошедшего набора.

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

Реализация расширения Active Patterns для языка OCaml

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

О проекте


Весной 2020 года в рамках весенней практики в Computer Science Center я занимался разработкой новой конструкции для языка программирования OCaml под чутким руководством Дмитрия Косарева.

Почему OCaml


OCaml – это одна из самых успешных и развитых реализаций синкретизма промышленного программирования (отсюда мультипарадигмальность, мультиплатформенность, очень быстрый компилятор, высокая производительность генерируемого кода) и математики (отсюда state-of-the-art система типов с мощной реализацией вывода типов, выразительность и расширяемость языка, близость к математической нотации и семантике).

При этом сообщество языка очень избирательно и не спеша добавляет в язык только крайне востребованные конструкции при условии, что те не привносят ограничений в существующий язык. Поэтому ядро языка очень маленькое и интуитивное, и OCaml с удовольствием используют как промышленные разработчики, так и, скажем, математики с кафедры высшей алгебры и теории чисел СПбГУ.

Для более глубокого погружения в тему предлагаю взглянуть на статьи OCaml for the masses и Why OCaml.

Сейчас ведется работа по реализации для OCaml multicore-системы вкупе с алгебраическими эффектами, что одновременно позволит поднять общую производительность языка и устранить существующие ограничения системы типов, связанные с тем, что язык допускает нечистые вычисления.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Опыт оптимизации вычислений через динамическую генерацию байт-кода JVM

Время на прочтение6 мин
Количество просмотров2.1K
В своем небольшом проекте по моделированию случайных величин я столкнулся с проблемой низкой производительности вычисления математических выражений, вводимых пользователем, и долго искал разные способы ее решения: попробовал написать интерпретатор на С++ в надежде, что он будет быстрым, сочинил свой байт-код. Наиболее удачной идеей оказалась генерация классов JVM и их загрузка во время выполнения.

Узнав про KMath, я решил обобщить эту оптимизацию для множества математических структур и операторов, определенных на них.

KMath — это библиотека для математики и компьютерной алгебры, активно использующая контекстно-ориентированное программирование в Kotlin. В KMath разделены математические сущности (числа, векторы, матрицы) и операции над ними — они поставляются отдельным объектом, алгеброй, соответствующей типу операндов, Algebra<T>.

import scientifik.kmath.operations.*

ComplexField {
   (i pow 2) + Complex(1.0, 3.0)
}

Таким образом, после написания генератора байт-кода, с учетом оптимизаций JVM можно получить быстрые расчеты для любого математического объекта — достаточно определить операции над ними на Kotlin.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Курс “Введение в информационный поиск” и немного истории

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

Меня зовут Павел Браславский, я научный сотрудник JetBrains Research и доцент Питерской Вышки.


Осенью прошлого года я после большого перерыва прочитал курс “Введение в информационный поиск”, на этот раз — для студентов академических программ JetBrains в Питерской Вышке и ИТМО. Comeback получил продолжение — зимой я прочитал мини-курс с обзором моделей информационного поиска и подходов к оценке для сотрудников Tinkoff, а весной — обзорную лекцию про информационный поиск в рамках курса по обработке естественного языка. В этой статье я кратко расскажу о курсе и его “исторических предпосылках”.


image

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

Простой путь к Serverless-вычислениям

Время на прочтение7 мин
Количество просмотров3.2K
Сами по себе Serverless-вычисления (в прямом переводе «бессерверные») получили широкую известность в 2014 году после анонса AWS Lambda — одной из первых Serverless-платформ. С того момента популярность Serverless-подхода лишь растёт, а вот развитие инструментария, увы, не поспевает.

Меня зовут Владислав Танков, в 2018–2020 годах я учился в корпоративной магистратуре JetBrains в ИТМО, а с 2017 года я работаю в компании JetBrains.

Летом 2018 года на хакатоне JetBrains я и нескольких моих коллег попытались сделать инструмент для языка Kotlin, упрощающий создание Serverless-приложений путем анализа кода приложения.

После хакатона, уже в рамках научной работы в корпоративной магистратуре JetBrains, я решил продолжить развитие этого проекта. Инструмент за два года существенно расширился и оброс функциональностью, но сохранил свое название — Kotless, или Kotlin Serverless Framework.
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Positive-Unlabeled learning and where to find it

Время на прочтение8 мин
Количество просмотров5.5K
Привет! В этой статье я начну рассказ про Positive-Unlabeled (PU) learning. Расскажу, что это за область машинного обучения и в каких задачах она применяется. В конце будет немного про наше применение PU  learning для поиска коррупции в аукционах государственных закупок.


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