1 line
20 KiB
JSON
1 line
20 KiB
JSON
{"componentChunkName":"component---src-components-templates-course-template-js","path":"/ru/pages/kotlin","result":{"data":{"course":{"html":"<p><strong>По четвергам, в 17.05 в 432ГК. Первое занятие 20 февраля.</strong></p>\n<p>Запись лекций 2019 года доступна <a href=\"https://www.youtube.com/playlist?list=PL4_hYwCyhAvZzRpbK4iTy9S6_OWZNEiVk\">тут</a>.</p>\n<h2>Цель курса</h2>\n<p>По мере развития физики (и науки вообще), компьютерные методы с каждым годом занимают все большее важное место в повседневной работе ученого. При проведении эксперимента компьютерные методы и инструменты используются на всех стадия работы: планировании эксперимента, подготовке установке, сборе данных, их обработке и публикации. В такой ситуации оказывается, что качество используемых программ начинает играть важную роль. Кроме того, возникает потребность в специалистах, которые разбираются и в науке и в программировании и занимаются разработкой и совершенствованием программных инструментов. </p>\n<p>Большинство студентов (и ученых) в той или иной мере знакомы с базовым инструментарием программиста, например с написанием простейших программ на языке Python. Для серьезной научной разработки этого не достаточно, поэтому курс нацелен на более продвинутое понимание аппаратной базы, структуры программы и современных инструментов разработки.</p>\n<p>В качестве основного будет использовать язык программирования <code>Kotlin</code>, появившийся совсем недавно и успевший завоевать большую долю рынка. Kotlin обладает рядом существенных преимуществ в качестве начального языка для продвинутого научного программирования:</p>\n<ul>\n<li>Строгая типизация, четко построенная система типов.</li>\n<li>Высокая производительность.</li>\n<li>Автоматическое управление памятью.</li>\n<li>Полная совместимость с огромным количеством библиотек на Java.</li>\n<li>Лучший инструментарий.</li>\n<li>Обширное сообщество.</li>\n<li>Возможность коммерческого применения.</li>\n</ul>\n<h2>Лектор</h2>\n<p><a href=\"https://www.researchgate.net/profile/Alexander_Nozik\">Александр Нозик</a> - физик-экспериментатор, специалист по анализу данных в\nфизическом эксперименте и научному программному обеспечению. Старший научный сотрудник ИЯИ РАН, заместитель заведующего\nлабораторией методов ядерно-физических экспериментов МФТИ.</p>\n<p>Опыт разработки научного программного обеспечения (главным образом на Java) - 8 лет. Опыт работы на Kotlin - больше двух лет.</p>\n<h2>Формат курса</h2>\n<p>В 2020 году курс проходит при участии JetBrains и при поддержке JetBrains Research. Наиболее активные студенты получат возможность участвовать в летних стажировках в JetBrains. Также для студентов старших курсов есть возможность проходить НИР в Лаборатории методов ядерно-физических экспериментов МФТИ (участник JetBrains Research) и в московском офисе JetBrains.</p>\n<p>В этом курсе мы будем учиться работать на языке Котлин и применять его для решения научных задач. Сделаем упор на практические аспекты и примеры, так что для его понимания не нужны никакие дополнительные знания. Для практических примеров будет использоваться среда разработки <a href=\"https://www.jetbrains.com/idea/\">IntelliJ IDEA Community Edition</a>.</p>\n<p>Обсуждение всех вопросов, связанных с курсом, будет происходить в телеграм группах <a href=\"https://t.me/mipt_npm\">@mipt-npm</a> (научная составляющая)\nи <a href=\"https://t.me/joinchat/EpV1201A_i0rTOCxHHnxXQ\">Kotlin на физтехе</a> (вопросы, касающиеся языка Kotlin).</p>\n<p>Всем желающим участвовать желательно заполнить <a href=\"https://docs.google.com/forms/d/e/1FAIpQLSeNZT8B90pT6fM9oABHFbrtv6pKfoYKfO-ANAjLlgWynMnh_g/viewform\">форму</a>.</p>\n<h2>Содержание курса</h2>\n<ol>\n<li>\n<p><strong>От жесткого к мягкому</strong></p>\n<ol>\n<li>Программа как набор инструкций. Эволюция программ.</li>\n<li>Структура памяти. Segmentation fault.</li>\n<li>Парадигмы программирования. Генеалогия языков.</li>\n<li>Виртуальные машины, байт-код.</li>\n<li>Компиляция и оптимизации.</li>\n<li>Статическая и динамическая линковка. Библиотеки.</li>\n<li>Структура программы. Точки входа.</li>\n</ol>\n</li>\n<li>\n<p><strong>Инструменты современного программиста</strong></p>\n<ol>\n<li>Системы автоматической сборки.</li>\n<li>Системы контроля версий.</li>\n<li>Интегрированные среды разработки.</li>\n</ol>\n</li>\n<li>\n<p><strong>Язык Kotlin</strong></p>\n<ol>\n<li>Переменные, классы и объекты.</li>\n<li>Control flow. Процедурный и функциональный подход.</li>\n<li>Замыкания.</li>\n<li>Структуры данных и операции над ними.</li>\n<li>Свойства и делегаты.</li>\n<li>Параметрические типы.</li>\n<li>Расширения.</li>\n<li>Боксинг.</li>\n<li>Мультиплатформные проекты</li>\n</ol>\n</li>\n<li>\n<p><strong>Архитектура программы</strong></p>\n<ol>\n<li>Абстракции и интерфейсы.</li>\n<li>Основы коллективной разработки при помощи современных инструментов.</li>\n<li>Идеология объектного программирования. Разделение поведений.</li>\n<li>Идеология функционального программирования.</li>\n</ol>\n</li>\n<li>\n<p><strong>Научное программирование</strong></p>\n<ol>\n<li>Основы численных методов. Понятие о численной точности. Сложность алгоритмов.</li>\n<li>Численное дифференцирование и интегрирование.</li>\n<li>Генераторы случайных чисел и Монте-Карло моделирование.</li>\n<li>Высокопроизводительные параллельные и конкурентные вычисления.</li>\n<li>Проблема ввода-вывода и основные методы ее решения.</li>\n<li>Системы сбора данных. Протоколы обмена данными.</li>\n<li>Основы работы с большими данными.</li>\n<li>Поточная обработка данных.</li>\n</ol>\n</li>\n</ol>\n<h2>Отчетность</h2>\n<p>Зачет проходит в форме презентации по материалам индивидуального проекта. Также предусмотрена промеждуточная отчетность в виде сдачи заданий.</p>\n<h2>Рекомендуемая литература</h2>\n<ul>\n<li><a href=\"https://kotlinlang.org/docs/reference/\">Официальная документация на английском языке</a></li>\n<li><a href=\"https://kotlinlang.ru/\">Перевод на русский</a></li>\n<li><a href=\"https://dmkpress.com/catalog/computer/programming/java/978-5-97060-497-7/\">Kotlin в действии</a></li>\n</ul>","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":"<ul><li>Лаборатория была создана на базе МФТИ, что позволяет привлекать большое количество заинтересованных лиц из числа студентов.</li><li>Благодаря совмещению научной работы с образовательным процессом мы обеспечиваем преемственность научного опыта.</li><li>Структура нашей лаборатории позволяет принимать участие в экспериментах мирового уровня даже студентам младших курсов.</li><li>Мы применяем самые современные методы в работе на физических экспериментах.</li></ul><p />","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}}}} |