Введение в идиоматический Котлин весна 2025
Общий сведения
- Начало курса: 15 февраля
- Срок обучения: 4 месяца, 2 раза в неделю
Общие сведения
На курсе разобраны основные особенности языка Kotlin, а также основы численных методов и решение практических численных и научных задач на Kotlin. Существенное внимание уделено подходам к проектированию научных библиотек и приложений, асинхронному программированию, а также методам повышения производительности вычислений.
Руководитель курса
Александр Нозик
- Директор Центра Научного Программирования МФТИ,
- Google Developer Expert по Kotlin
- (ex) руководитель направления в JetBrains Research.
- Специалист по разработке на JVM платформах, архитектуре научного программного обеспечения и анализу данных
План курса
От жесткого к мягкому
- Программа как набор инструкций. Эволюция программ.
- Структура памяти. Segmentation fault.
- Парадигмы программирования. Генеалогия языков.
- Виртуальные машины, байт-код.
- Компиляция и оптимизации.
- Статическая и динамическая линковка. Библиотеки.
- Структура программы. Точки входа.
Инструменты современного программиста
- Системы автоматической сборки.
- Системы контроля версий.
- Интегрированные среды разработки.
Язык Kotlin
- Переменные, классы и объекты.
- Control flow. Процедурный и функциональный подход.
- Замыкания.
- Структуры данных и операции над ними.
- Свойства и делегаты.
- Параметрические типы.
- Расширения.
- Боксинг.
- Мультиплатформные проекты
Архитектура программы
- Абстракции и интерфейсы.
- Основы коллективной разработки при помощи современных инструментов.
- Идеология объектного программирования. Разделение поведений.
- Идеология функционального программирования.
Научное программирование
- Основы численных методов. Понятие о численной точности. Сложность алгоритмов.
- Численное дифференцирование и интегрирование.
- Генераторы случайных чисел и Монте-Карло моделирование.
- Высокопроизводительные параллельные и конкурентные вычисления.
- Проблема ввода-вывода и основные методы ее решения.
- Системы сбора данных. Протоколы обмена данными.
- Основы работы с большими данными.
- Поточная обработка данных.