{"componentChunkName":"component---src-components-templates-course-template-js","path":"/ru/pages/kotlin","result":{"data":{"course":{"html":"

По четвергам, в 17.05 в 432ГК. Первое занятие 20 февраля.

\n

Запись лекций 2019 года доступна тут.

\n

Цель курса

\n

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

\n

Большинство студентов (и ученых) в той или иной мере знакомы с базовым инструментарием программиста, например с написанием простейших программ на языке Python. Для серьезной научной разработки этого не достаточно, поэтому курс нацелен на более продвинутое понимание аппаратной базы, структуры программы и современных инструментов разработки.

\n

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

\n\n

Лектор

\n

Александр Нозик - физик-экспериментатор, специалист по анализу данных в\nфизическом эксперименте и научному программному обеспечению. Старший научный сотрудник ИЯИ РАН, заместитель заведующего\nлабораторией методов ядерно-физических экспериментов МФТИ.

\n

Опыт разработки научного программного обеспечения (главным образом на Java) - 8 лет. Опыт работы на Kotlin - больше двух лет.

\n

Формат курса

\n

В 2020 году курс проходит при участии JetBrains и при поддержке JetBrains Research. Наиболее активные студенты получат возможность участвовать в летних стажировках в JetBrains. Также для студентов старших курсов есть возможность проходить НИР в Лаборатории методов ядерно-физических экспериментов МФТИ (участник JetBrains Research) и в московском офисе JetBrains.

\n

В этом курсе мы будем учиться работать на языке Котлин и применять его для решения научных задач. Сделаем упор на практические аспекты и примеры, так что для его понимания не нужны никакие дополнительные знания. Для практических примеров будет использоваться среда разработки IntelliJ IDEA Community Edition.

\n

Обсуждение всех вопросов, связанных с курсом, будет происходить в телеграм группах @mipt-npm (научная составляющая)\nи Kotlin на физтехе (вопросы, касающиеся языка Kotlin).

\n

Всем желающим участвовать желательно заполнить форму.

\n

Содержание курса

\n
    \n
  1. \n

    От жесткого к мягкому

    \n
      \n
    1. Программа как набор инструкций. Эволюция программ.
    2. \n
    3. Структура памяти. Segmentation fault.
    4. \n
    5. Парадигмы программирования. Генеалогия языков.
    6. \n
    7. Виртуальные машины, байт-код.
    8. \n
    9. Компиляция и оптимизации.
    10. \n
    11. Статическая и динамическая линковка. Библиотеки.
    12. \n
    13. Структура программы. Точки входа.
    14. \n
    \n
  2. \n
  3. \n

    Инструменты современного программиста

    \n
      \n
    1. Системы автоматической сборки.
    2. \n
    3. Системы контроля версий.
    4. \n
    5. Интегрированные среды разработки.
    6. \n
    \n
  4. \n
  5. \n

    Язык Kotlin

    \n
      \n
    1. Переменные, классы и объекты.
    2. \n
    3. Control flow. Процедурный и функциональный подход.
    4. \n
    5. Замыкания.
    6. \n
    7. Структуры данных и операции над ними.
    8. \n
    9. Свойства и делегаты.
    10. \n
    11. Параметрические типы.
    12. \n
    13. Расширения.
    14. \n
    15. Боксинг.
    16. \n
    17. Мультиплатформные проекты
    18. \n
    \n
  6. \n
  7. \n

    Архитектура программы

    \n
      \n
    1. Абстракции и интерфейсы.
    2. \n
    3. Основы коллективной разработки при помощи современных инструментов.
    4. \n
    5. Идеология объектного программирования. Разделение поведений.
    6. \n
    7. Идеология функционального программирования.
    8. \n
    \n
  8. \n
  9. \n

    Научное программирование

    \n
      \n
    1. Основы численных методов. Понятие о численной точности. Сложность алгоритмов.
    2. \n
    3. Численное дифференцирование и интегрирование.
    4. \n
    5. Генераторы случайных чисел и Монте-Карло моделирование.
    6. \n
    7. Высокопроизводительные параллельные и конкурентные вычисления.
    8. \n
    9. Проблема ввода-вывода и основные методы ее решения.
    10. \n
    11. Системы сбора данных. Протоколы обмена данными.
    12. \n
    13. Основы работы с большими данными.
    14. \n
    15. Поточная обработка данных.
    16. \n
    \n
  10. \n
\n

Отчетность

\n

Зачет проходит в форме презентации по материалам индивидуального проекта. Также предусмотрена промеждуточная отчетность в виде сдачи заданий.

\n

Рекомендуемая литература

\n","frontmatter":{"title":"Введение в научное программирование на языке Kotlin","shortTitle":"Научное программирование","path":"/pages/kotlin","parent":"education","slug":"/ru/pages/kotlin"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"intl":{"language":"ru","languages":["ru","en"],"messages":{"title":"NPM Group","language":"ru","description":"Лаборатория методов ядерной физики","header.news":"Новости","header.group":"Группа","header.projects":"Проекты","header.partners":"Партнёры","notfound.header":"404: НЕ НАЙДЕНО","notfound.description":"Вы перешли по несуществующему пути","jumbotron.labintro":"Лаборатория методов ядерно-физических экспериментов","jumbotron.lead":"Особенности нашего подхода к решению научных задач сегодняшнего времени: ","jumbotron.list":"

","jumbotron.about":"О нашей лаборатории","more.nuclear_title":"Ядерная физика","more.nuclear_body":"Лаборатория принимает участие в нескольких международных экспериментах в области физики частиц, таких как эксперимент по безнейтринному двойному бета-распаду GERDA, эксперимент по поиску массы нейтрино Троицк ню-масс и так далее.","more.nuclear_more":"Подробнее »","more.education_title":"Образование","more.education_body":"В задачи лаборатории входит разработка новых образовательных программ по физике и методике проведения физического эксперимента, а также совершенствование существующей методической и информационной базы в МФТИ и академических институтах.","more.education_more":"Подробнее »","more.software_title":"Компьютерные методы","more.software_body":"Одним из основных направлений деятельности является разработка вычислительных методов и открытого программного обеспечения для использования в образовании и научной деятельности.","more.software_more":"Подробнее »","more.news":"Последние новости","about.title":"Группа методики ядерно-физического эксперимента","about.descr":"Группа была создана в 2015 году на базе кафедры общей физики МФТИ, нескольких лабораторий ИЯИ РАН и при поддержке лаборатории физики высоких энергий МФТИ. Цель создания - разработка методов для проведения и анализа данных экспериментов в области физики частиц и ядерной физики. Помимо этого участники группы занимаются внедрением современных информационных технологий в экспериментальную физику и образование.","about.pubs.title":"Публикации","about.pubs.available1":"Публикации группы доступны на ","about.pubs.available2":"отдельной странице","about.contacts.title":"Контактная информация","about.contacts.mail":"Электронный адрес: ","about.contacts.telegram":"Телеграм канал: ","partners.mipt.title_fund":"Кафедра общей физики МФТИ","partners.mipt.description_fund":"Кафедра общей физики является основной точкой соприкосновения для ученых и преподавателей с одной стороны и студентов с другой стороны. Тесное сотрудничество с кафдерой является залогом постоянного притока молодых сотрудников, а также постоянного самосовершенствования членов группы, работающих со студентами.","partners.mipt.title_energy":"Лаборатория физики высоких энергий МФТИ","partners.mipt.description_energy":"Тесное сотрудничество с лабораторией физики высоких энергий позволяет осуществлять прямой контакт между образованием и научным сообществом, не выходя за рамки МФТИ.","partners.jb.description":"Лаборатория активно сотрудничает с компанией JetBrains во внедрении языка Kotlin в научном программировании, преподавании Kotlin и разработке библиотек на Kotlin.","partners.jbr.description":"Группа разработки программного обеспечения входит в международное научное объединение JetBrains Research.","partners.ras.title_exp":"Отдел экспериментальной физики ИЯИ РАН","partners.ras.description_exp":"Ведется очень плотное сотруднничество с ОЭФ ИЯИ РАН в рамках коллабораций Troitsk nu-mass и KATRIN, а также в плане подготовки квалифицированных кадров для работы на эксперименте NICA и в других ускорительных экспериментах. В рамках сотрудничества реализуются как научные так и образовательные задачи.","partners.ras.title_beam":"Лаборатория пучка ИЯИ РАН","partners.ras.description_beam":"Лаборатория пучка линейного ускорителя ИЯИ РАН отвечает за проводку и диагностику пучка ускорителя, а также ведет разработки систем диагностики пучка, используемых по всему миру. Группа ведет несколько совместных образовательных проектов с этой лабораторией.","partners.ras.title_education":"Научно-образовательный центр ИЯИ РАН","partners.ras.description_education":"Часть студентов, участвующих в группе обучается в научно-образовательном центре ИЯИ РАН.","partners.ras.title_iki":"ИКИ РАН","partners.ras.description_iki":"Группа участвует в математическом моделировании электрических разрядов в атмосфере.","physics.bc_title":"Физика","physics.title":"Ядерная физика","physics.description":"Традиционно к ядерной физике относят не только исследования, связанные со структурой атомного ядра и ядерными реакциями, но и всю физику элементарных частиц, а также отчасти некоторые разделы астрофизики и космологии. В настоящее время усилия нашей группы сосредоточены в области так называемых неускорительных экспериментов в физике элементарных частиц.","education.bc_title":"Образование","education.title":"Образование","education.description":"Образовательные проекты в побласти ядерной физики и методов проведения и анализа результатов физического эксперимента являются одним из ключевых направлений деятельности группы.","education.course1":"Подробная информация доступна на ","education.course2":"странице курса","math.bc_title":"Математика","math.title":"Математические методы","math.description":"Математическое моделирование физических процессов и математические методы анализа данных являются неотъемлимой частью современной экспериментальной физики. Постоянно возникает потребность как в совершенствовании существующих методов, так и в разработке принципиально новых подходов.","software.bc_title":"Программное обеспечение","software.title":"Научное программное обеспечение","software.description":"Современные эксперименты в физике частиц немыслимы без специального программного обеспечения, которое требуется как на этапе проведения эксперимента и сбора данных, так и при обработке результатов. Разработка научного программного обеспечения является дополнительным, но существенным направлением работы группы.","quarks":"Физика"},"routed":true,"originalPath":"/pages/kotlin","redirect":true}}}}