Введение в идиоматический Котлин весна 2025

Материал из Public ATP Wiki
Перейти к: навигация, поиск

Общий сведения

  • Начало курса: 15 февраля
  • Срок обучения: 4 месяца, 2 раза в неделю

Общие сведения

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

Руководитель курса

Александр Нозик

  • Директор Центра Научного Программирования МФТИ,
  • Google Developer Expert по Kotlin
  • (ex) руководитель направления в JetBrains Research.
  • Специалист по разработке на JVM платформах, архитектуре научного программного обеспечения и анализу данных

План курса

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

  • Программа как набор инструкций. Эволюция программ.
  • Структура памяти. Segmentation fault.
  • Парадигмы программирования. Генеалогия языков.
  • Виртуальные машины, байт-код.
  • Компиляция и оптимизации.
  • Статическая и динамическая линковка. Библиотеки.
  • Структура программы. Точки входа.

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

  • Системы автоматической сборки.
  • Системы контроля версий.
  • Интегрированные среды разработки.

Язык Kotlin

  • Переменные, классы и объекты.
  • Control flow. Процедурный и функциональный подход.
  • Замыкания.
  • Структуры данных и операции над ними.
  • Свойства и делегаты.
  • Параметрические типы.
  • Расширения.
  • Боксинг.
  • Мультиплатформные проекты

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

  • Абстракции и интерфейсы.
  • Основы коллективной разработки при помощи современных инструментов.
  • Идеология объектного программирования. Разделение поведений.
  • Идеология функционального программирования.

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

  • Основы численных методов. Понятие о численной точности. Сложность алгоритмов.
  • Численное дифференцирование и интегрирование.
  • Генераторы случайных чисел и Монте-Карло моделирование.
  • Высокопроизводительные параллельные и конкурентные вычисления.
  • Проблема ввода-вывода и основные методы ее решения.
  • Системы сбора данных. Протоколы обмена данными.
  • Основы работы с большими данными.
  • Поточная обработка данных.