Курсы ШАДа

 

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

Осенний семестр

Весенний семестр
  • Алгоритмы во внешней памяти

    В данном курсе будет дан обзор текущего состояния в области вычислений с учётом иерархической структуры памяти. Мы рассмотрим базовые примитивы и структуры данных, поговорим о некоторых стандартных приёмах и подзадачах. Подробно будут рассмотрены алгоритмы на графах во внешней памяти. Будет затронута тема кеширования и cache-oblivious алгоритмов.

       

    Также мы рассмотрим модель streaming-вычислений, в которой данные на вход поступают итеративно и их количество таково, что сохранить их в оперативной памяти или на диске не представляется возможным.

    Программа:

    1. Модель вычислений во внешней памяти.
    2. Сортировка во внешней памяти.
    3. Архитектура компьютера в разрезе RAM и дисков, устройства API записи/чтения в OS, кэши операционной системы.
    4. Задача List Ranking.
    5. Техника Time Forward Processing.
    6. Структуры данных для задач на подотрезках и на деревьях.
    7. Куча во внешней памяти.
    8. Буфферизированные деревья.
    9. Хэш-таблицы во внешней памяти.
    10. Геометрические задачи во внешней памяти.
    11. DFS/BFS во внешней памяти.
    12. Поиск связных компонент во внешней памяти.
    13. Техника Parallel Sliding Window.
    14. Архитектура кеша, понятие cache-aware и cache-oblivious алгоритмов.
    15. Cache-oblivious бинарный поиск.
    16. Van Emde Boas layout.
    17. Cache Oblivious Lookahead Array.
    18. QuickHeap.
    19. Модель streaming-алгоритмов.
    20. Алгоритмы Misra-Gries и Count-Min Sketch.
    21. BJKST-скетч.
    22. Построение нижних оценок сложноси на streaming-алгортмы.
    23. Q-digest.
    24. Резервуарное сэмплирование на потоке и на окне в потоке.
    25. Locality-sensitive hashing.
  • Алгоритмы и структуры данных, часть 1

    Курс даёт базовые знания в области алгоритмов и структур данных. Они очень важны для понимания работы библиотек, алгоритмов и языков программирования. Курс состоит из трёх частей.

       

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

     

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

    Программа:

    1. Сложность и модели вычислений.
    2. Анализ учётных стоимостей.
    3. Алгоритмы Merge-Sort и Quick-Sort.
    4. Порядковые статистики.
    5. Хеширование.
    6. Деревья поиска.
    7. Система непересекающихся множеств.
    8. Задачи RMQ и LCA.
    9. Структуры данных для геометрического поиска.
    10. Задача о динамической связности в ненаправленном графе.
  • Архитектура компьютера и операционные системы

    При разработке высоконагруженных систем невозможно не обращать внимание на то, в каком окружении работает код. В компаниях типа Яндекса это, как правило, многочисленные серверы с несколькими многоядерными x86 процессорами под операционной системой Linux. Знание того, как работает процессор и операционная система, позволяет понять некоторые особенности работы реального кода.

       

    В курсе будет разобрана работа ядра миниатюрной UNIX-подобной операционной системы — xv6. Начнём с того как работает процессор и язык ассемблера, далее разберём управление процессами, памятью, работу в мультипроцессорной среде.   

    Программа:

    1. UNIX и программирование на языке С: командная строка, управление процессами, каналы, сигналы. Реализация оболочки командной строки.
    2. Ассемблер x86: арифметика, переходы, условия и вызовы функций. Стек, перемещение вверх по стеку.
    3. Линковка программ и формат ELF. Динамическая линковка.
    4. Понятие контекста и потока исполнения. Реализация легковесных потоков.
    5. Вытесняющая многозадачность: поддержка со стороны процессора x86 и реализация процессов в ядре UNIX.
    6. Многоядерная архитектура: когерентность кешей и модели памяти. Примитивы синхронизации в многопоточных программах.
    7. Планирование процессов на одном ядре и на многих ядрах.
    8. Внешняя память: жёсткие диски и твердотельные накопители. Принципы работы файловых систем.
    9. Виртуализация: аппаратная и программная. Двоичная трансляция.   
  • Байесовские методы в машинном обучении

    Изучение дисциплины «Байесовские методы машинного обучения» нацелено на освоение т.н. байесовского подхода к теории вероятностей как одного из последовательных способов математических рассуждений в условиях неопределённости.

       

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

    Программа:

    1. Байесовский подход к теории вероятностей, примеры байесовских рассуждений.
    2. Аналитический байесовский вывод, сопряжённые распределения, экспоненциальный класс распределений.
    3. Задача выбора модели по Байесу, принцип наибольшей обоснованности, примеры выбора вероятностной модели.
    4. Метод релевантных векторов для задачи регрессии, автоматическое определение значимости. Матричные вычисления.
    5. Метод релевантных векторов для задачи классификации, приближение Лапласа.
    6. Обучение при скрытых переменных, ЕМ-алгоритм в общем виде, байесовская модель метода главных компонент.
    7. Вариационный подход для приближённого байесовского вывода.
    8. Методы Монте-Карло с марковскими цепями (MCMC).
    9. Гибридный метод Монте-Карло с марковскими цепями и его масштабируемые обобщения. Динамика Ланжевена для сэмплирования и оптимизации.
    10. Модель LDA для тематического моделирования.
    11. Гауссовские процессы для регрессии и классификации.
  • Введение в лингвистику

    Курс "рассчитан на тех, кто не учился лингвистике, но хочет узнать о разнообразии и устройстве языков мира и о том, что в них доступно для автоматической обработки, а что нет. В рамках курса предусматривается решение различных лингвистических задач (самодостаточных и не только).  

    Программа:

    1. Истоки и задачи лингвистики.
    2. Язык как система. Происхождение языка. Генетическая классификация языков. 
    3. Языки и диалекты.
    4. Обзор языков мира.
    5. Грамматическое и лексическое значение.
    6. Фонетика и фонология.
    7. Морфемика. Словоизменение и словообразование.
    8. Морфология. Грамматические средства языка. Типологическая классификация языков.
    9. Историческая морфология: опрощение, переразложение, гиперкоррекция, усечение, удлинение.
    10. Согласование. Синтаксис.
    11. Язык и мышление. Гипотеза лингвистической относительности. Наивная и научная картина мира.
    12. Значение слова. Аналитические толкования. Метаязык. Многозначные слова.
    13. Словари: история и современность.
  • Введение в функциональный анализ

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

    Программа:

    1. Метрические и нормированные пространства.
    2. Свойства полных метрических пространств: теорема о сжимающих отображениях, теорема о вложенных шарах.
    3. Гильбертовы пространства.
    4. Введение в теорию меры и интеграл Лебега.
    5. Пространства Соболева.
    6. Базисы в нормированных пространствах. Ортонормированные базисы в гильбертовых пространствах.
    7. Линейные ограниченные операторы в нормированных пространствах.
    8. Линейные непрерывные функционалы. Сопряжённые пространства.
    9. Сопряжённые операторы, самосопряжённые и нормальные операторы. Ортогональные проекторы.
    10. Теорема Хана—Банаха для нормированных сепарабельных пространств.
    11. Введение в спектральную теорию линейных ограниченных операторов в банаховом пространстве.
    12. Компактные множества в метрических пространствах. Компактные операторы.
    13. Интегральные операторы. Теорема Гильберта-Шмидта и теория Фредгольма.
    14. Преобразование Фурье.
  • Выпуклый анализ и оптимизация

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

    Программа:

    1. Выпуклые множества.
    2. Выпуклые функции.
    3. Условия оптимальности и двойственность.
    4. Введение в методы оптимизации. Иллюстрация на примере градиентного спуска. 
    5. Нижние оценки и оптимальные методы. Быстрый градиентный спуск.
    6. Проксимальный градиентный спуск.
    7. Техника сглаживания. 
    8. Метод модифицированной функции Лагранжа. ADMM. 
    9. Метод зеркального спуска.
    10. Метод штрафных функций. Барьерный метод.
    11. Метод Ньютона и квазиньютоновские методы.
    12. Метод внутренней точки.
    13. Рандомизированные методы оптимизации и их связь с стохастической оптимизацией.
    14. Онлайн оптимизация и методы онлайн-оптимизации.
    15. Робастная оптимизация и стохастическая-оптимизация.
  • Глубинное зрение и графика

    Курс посвящён современным нейросетевым методам в компьютерном зрении и в компьютерной графике.  

    Программа:

    1. Intro, recap of Neural network basics, optimization, backprop, biological networks.
    2. Images, linear filtering, convolutional networks, batchnorms, augmentations.
    3. ConvNet architectures and how to find them, transfer learning.
    4. Dense prediction: semantic segmentation, superresolution/image synthesis, perceptual losses.
    5. Non-convolutional architectures: vision transformers, mixers, FFT convolutions.
    6. Visualizing and understanding deep architectures, adversarial examples.
    7. Object detection, instance/panoptic segmentation.
    8. Representation learning: face recognition, verification tasks, self-supervised learning, few-shot learning, image captioning, CLIP.
    9. Latent models (generative latent optimization, autoencoders, DALL-E, flow models).
    10. Generative adversarial networks.
    11. Shape and motion estimation: spatial transformers, optical flow, stereo, monodepth, point cloud generation, implicit and semi-implicit shape representations.
    12. New view synthesis: multi-plane images, neural radiance fields, mesh-based and point-based representations for NVS, neural renderers. 
  • Компьютерное зрение

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

       

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

    Программа:

    1. Цифровое изображение и тональная коррекция.
    2. Обработка изображений.
    3. Совмещение изображений.
    4. Классификация и поиск по изображениям.
    5. Свёрточные нейросети для классификации изображений.
    6. Трансформеры.
    7. Детекторы объектов.
    8. Семантическая сегментация.
    9. Перенос стиля и синтез изображений.
    10. Обучение представлений без учителя.
  • Математика для Data Science

    Адаптационный курс по математике для поступивших по альтернативному треку.   

    Программа: 

    1. Системы линейных уравнений и матрицы.
    2. Определители и спектр, полиномиальное исчисление от матриц.
    3. Векторные пространства, координаты, ранги.
    4. Линейные отображения и операторы.
    5. Билинейные формы и скалярные произведения.
    6. Операторы в евклидовом пространстве и SVD.
    7. Пределы и производные.
    8. Условная оптимизация и интегралы.
    9. Вероятностное пространство.
    10. Случайные величины.
    11. Случайные векторы и независимость.
    12. Условные математические ожидания и свёртка распределений.
    13. Характеристические функции. Основная модель математической статистики.
    14. Элементы математической статистики.    
  • Машинное обучение, часть 1

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

    Программа:

    1. Матричные дифференцирования.
    2. Введение в математическую статистику.
    3. Задачи машинного обучения. Метрики качества.
    4. Линейные модели классификации и регрессии.
    5. Вероятностные модели. Обобщённая линейная модель.
    6. Введение в полносвязные нейронные сети. Обратное распространение ошибки.
    7. Решающие деревья.
    8. Ансамбли алгоритмов. Бэггинг. Случайный лес.
    9. Градиентный бустинг.
    10. Метрические методы.
    11. Генеративные модели классификации.
    12. Понижение размерности. SVD. TSNE.  
  • Обучение языку C++, часть 1

    С++ — мощный язык с богатым наследием. Тем, кто только ступил на путь освоения этого языка, очень просто заблудиться в изобилии техник и приёмов, созданных за последние 30 лет.

         

    Курс посвящён современному подмножеству языка — Modern C++ (стандарты 11, 14 и 17). Много внимания уделяется инструментам и библиотекам, которые не являются частью языка, но без которых не получится построить большой и сложный проект.  

    Программа:

    1. Введение. Функции, переменные, типы. Операторы и выражения. Компиляция, заголовочные файлы. Указатели и ссылки. Параметры и возвращаемые значения функций. Арифметика указателей.
    2. Структуры и классы. ООП, конструкторы, деструкторы, операторы. Инкапсуляция.
    3. Шаблоны и STL. Контейнеры, алгоритмы, итераторы. Функторы и лямбды.
    4. Динамическое управление памятью. Умные указатели. RAII.
    5. Наследование. Виртуальные функции, абстрактные классы. Исключения.
    6. Паттерны проектирования.
    7. Расположение объектов в памяти, выравнивание.
    8. Отладка, GDB, coredumps.
    9. Строки. Кодировки и регулярные выражения.
    10. Move-семантика. rvalue-ссылки, variadic templates, perfect forwarding.
  • Основы стохастики. Стохастические модели

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

          

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

    Программа: 

    1. Классическое определение вероятности. Вероятностная модель эксперимента с конечным числом исходов. Классические вероятностные задачи на подсчёт случайных шансов.
    2. Условные вероятности. Независимость. Условное математическое ожидание.
    3. Дискретные случайные величины и их характеристики. 
    4. Схема Бернулли. Неравенство Чебышева, следствия. Закон больших чисел Бернулли. Предельные теоремы (локальная, Муавра-Лапласа, Пуассона).
    5. Случайное блуждание. Вероятности разорения и средняя продолжительность при игре с бросанием монеты. Принцип отражения. Закон арксинуса.
    6. Мартингалы. Определение. Примеры мартингалов. Определение момента остановки. Тождества Вальда.
    7. Дискретные марковские цепи. Эргодическая теорема. 
    8. Вероятностная модель эксперимента с бесконечным числом событий. Аксиоматика Колмогорова. Разные виды сходимости случайных величин. 
    9. Слабая сходимость вероятностных мер. Метод характеристических функций в доказательстве предельных теорем.
    10. Гауссовские, стационарные и марковские случайные процессы, случайные функции с ортогональными и независимыми приращениями. Винеровский процесс.   
  • Распределённые системы

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

    Программа: 

    1. Модель распределённой системы.
    2. Время и високосные секунды.
    3. Репликация и линеаризуемость. Линеаризуемый регистр, алгоритм ABD.
    4. State Machine Replication, Atomic Broadcast, Consensus.
    5. Impossibility of Consensus.
    6. Single-Decree Paxos / Локальное хранилище: LSM, снимки состояния.
    7. Multi-Paxos / Google File System.
    8. RAFT / Дизайн KV хранилища, Google BigTable.
    9. Paxos Made Live.
    10. Формальные методы, TLA+.
    11. Транзакции, Two-Phase Locking, Snapshot Isolation.
    12. Распределённые транзакции: Spanner, Calvin.
    13. PBFT / CRDT.
    14. Bitcoin.
    15. MapReduce.    
  • Сбор и разметка данных для машинного обучения

    Курс направлен на овладение навыками работы с данными для машинного обучения. Эти навыки включают в себя дизайн конвейера сбора и обработки данных, его оптимизацию под разнообразные ограничения (бюджет, качество работы модели и проч.), автоматизацию этих процессов, оценку качества работы модели и её улучшение. Всё это — интегральная часть ML/AI-решений и задачи, с которыми инженеры сталкиваются в повседневной работе.

       

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

    Программа: 

    1. Введение. Работа с данными в машинном обучении.
    2. Общая концепция краудсорсинга. Декомпозиция задачи.
    3. Проектирование интерфейсов и инструкций для краудсорсинговых проектов.
    4. Контроль качества. Этапы и инструменты.
    5. Автоматизация конвейера по сбору данных.
    6. Проектная работа: сбор данных для обучения модели с целевым качеством.
    7. Подходы к оптимизации бюджета.
    8. Агрегация полученных результатов: категориальная разметка, попарная разметка, агрегация сложных ответов.
    9. Human-in-the-loop и другие подходы к оптимизации процессов разметки.
    10. Проектная работа: сбор данных для обучения модели с целевым качеством и ограничением по бюджету.
    11. Оценка качества работы модели.
    12. Сбор данных для дообучения.
    13. Проектная работа: сбор данных для обучения и поддержания качества модели в условиях меняющегося мира.
    14. Кейс-стади: работа с данными в Поиске, Алисе, Переводчике, Беспилотных технологиях, тестировании и других продуктах.

       

  • Современное системное программирование на Rust

    Rust — это молодой системный язык программирования, спроектированный с учётом богатой истории C и С++. За языком уже сейчас стоят большие игроки ИТ-индустрии: в Rust Foundation входят Google, Amazon, Microsoft, Facebook и Huawei — эти компании спонсируют развитие языка и принимают активное участие в его развитии.

      

    В рамках курса мы рассмотрим все ключевые аспекты языка: ownership, borrow checking, fearless concurrency, процедурные макросы, сетевое программирование, async и unsafe. Будет много практики: 2–4 задания каждую неделю, а также 3 больших проекта (3–4 недели каждый), в которых нужно будет написать работающее приложение на 700–800 строк кода (или даже больше).  

       

    Курс рекомендуется всем, кто уже имеет опыт программирования на других языках (желательно — на С++) и хочет познакомиться с Rust. 

    Программа:

    1. Основы языка: переменные, ветвления, циклы, функции.
    2. Кортежи, структуры и enums. Pattern matching.
    3. Стандартные контейнеры и их применение.
    4. Владение объектами, время жизни и borrow checker.
    5. Generics и traits. Статическое и динамическое связывание.
    6. Обработка ошибок.
    7. Модули, библиотеки и модель компиляции. Тестирование.
    8. Умные указатели и interior mutability.
    9. Функциональные аспекты языка: итераторы и замыкания.
    10. Макросы и кодогенерация.
    11. Fearless concurrency: написание конкурентного кода на Rust.
    12. Сетевое программирование.
    13. Unsafe rust, FFI.
    14. Введение в async и stackless корутины.    
  • Стойкость криптографических систем

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

        

    Программа курса строится не вокруг как можно большего количества аббревиатур (SHA1, MD5, AES и т.п.), а через изучение фундаментальных криптографических идей, лежащих в основе как самих схем, так и требований, которые к ним предъявляются. Освещаются основные идеи, лежащие в основе современного криптографического анализа, и принципы построения надёжной криптографической инфраструктуры.   

    Программа:

    1. Современная криптография: задачи, принципы, подходы. 
    2. Блочные шифры.
    3. Конфиденциальность.
    4. Режимы работы блочных шифров.
    5. Хэш-функции.
    6. Целостность.
    7. Протоколы обеспечения защищенного обмена сообщениями.
    8. Криптографические ключи: генерация и нагрузка.

       

  • Теория игр

    В математике игрой называется стратегическое взаимодействие сторон: например людей, животных, фирм или стран. Теория игр пытается предсказать исход подобного взаимодействия. Её задача — найти стратегию, которая позволит игроку достичь наилучшего результата, учитывая, что исход игры зависит не только от действий самого игрока, но и от действий его оппонентов. Основной подход к решению игр предложил американский математик Джон Нэш, получивший в 1994 году Нобелевскую премию по экономике.  

          

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

    Программа:

    1. Введение в теорию игр.

    2. Игры в развёрнутой форме.

    3. Игры в нормальной форме.

    4. Игры с одновременными ходами.

    5. Наилучший ответ.

    6. Равновесие Нэша в чистых и смешанных стратегиях.

    7. Игры с нулевой суммой.

    8. Динамические игры.

    9. Многопериодные игры с наблюдаемыми действиями.

    10. Игры с неполной информацией.

    11. Эксперимент. Ultimatum Bargaining Game (Guth et al. 1982).

    12. Введение в теорию аукционов.

    13. Мэтчинг или теория паросочетаний (Matching theory) — бонусная лекция про женитьбу.   

  • Теория информации

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

    Программа: 

    1. Информация по Хартли. 
    2. Применения информационного подхода для решения задач о взвешиваниях.
    3. Применения информационного подхода в коммуникационной сложности: метод прямоугольников.
    4. Распределения вероятностей на буквах данного алфавита. Однозначные и префиксные бинарные коды букв данного алфавита. Средняя длина кода одной буквы.
    5. Определение энтропии Шеннона и её связь со средней длиной оптимального префиксного кода. Код Шеннона-Фано.
    6. Неравенство Крафта-Макмиллана и нижняя оценка средней длины любого однозначного кода.
    7. Условная энтропия Шеннона и её свойства.
    8. Независимость и энтропия. Коммутативность информации.
    9. Информационные неравенства. Близкие случайные величины и неравенство Фано.
    10. Классификаторы и их информативность.
    11. PAC learning.  
  • Язык Python

    Курс читают специалисты разных направлений и рассказывают о методах работы с Python через призму своего опыта. Лекции максимально нацелены на практическую пользу и строятся на примерах из рабочих процессов.   

        

    Все что мы рассказываем полезно в дальнейшей работе. Мы не рассказываем о том, что знает полтора человека и усложняет жизнь. Мы рассказываем не только на тривиальных примерах, но и на примерах из рабочих процессов.   

    Программа: 

    1. Простые типы, структуры данных, функции и управляющие конструкции.
    2. Numpy, pandas, визуализация.
    3. Неймспейсы, замыкания декораторы.
    4. Введение в bytecode.
    5. Классы, Datetime.
    6. Модули, пакеты, импорт, setup.
    7. Исключения, контекстные менеджеры.
    8. Итераторы. Генераторы; MapReduce и Streaming.
    9. Typing.
    10. Threading, multiprocessing, Корутины, async/await.
    11. Web, Http, Api, базы данных, ORM.
    12. Паттерны проектирования, Метаклассы, дескрипторы.
    13. Протобуфы, флетбуфы, биндинги.
    14. Ускорение вычислений. Утечки памяти.
  • Data Warehousing

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

       

    Безусловно, за 12 недель невозможно рассмотреть все тонкости и аспекты, поэтому основной акцент будет на универсальных знаниях, которые приносят пользу независимо от конкретных технологий.  

    Программа: 

    1. SQL.
    2. CLI+Hadoop, доступ к кластеру, Scala base.
    3. Захват данных с источника. Spark STG -> RAW.
    4. ETL-платформы на базе Airflow. ETL + RAW -> ODS + Airflow.
    5. Продвинутый Spark.
    6. Классические хранилища, DV, AM. Проектирование.
    7. MPP системы и GP в частности.
    8. ODS->GP->DDS -> CDM.
    9. Витрины, заказчик витрин, отчеты, взгляд со стороны BI. Визуализация в Tableau.
    10. DQ, SLA, monitoring.
    11. Управление, развитие, DWH.
  • Natural Language Processing

    NLP (Natural Language Processing) — это одно из направлений изучения ИИ, которое занимается компьютерной обработкой сырых данных на естественном языке. Курс охватывает основные задачи в NLP и рассказывает о том, какие статистические подходы получают новую жизнь и новую интерпретацию в нейросетях, а какие постепенно отмирают.  

         

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

    Программа: 

    1. Эмбеддинги слов.
    2. Классификация текстов.
    3. Языковые модели.
    4. Seq2seq и механизм внимания.
    5. Transfer Learning.
    6. Доменная адаптация.
    7. Машинный перевод.
    8. Сжатие моделей.
    9. Извлечение отношений.
    10. Суммаризация текстов.
    11. Диалоговые системы.
  • 3D компьютерное зрение

    Курс знакомит с современными методами трёхмерного анализа сцены, включающими в себя работу с обычной камерой и со специализированными сенсорами вроде лидара. Вы научитесь реконструировать трёхмерную структуру сцены по нескольким изображениям разными методами, в том числе современным NERF, и работать с облаками точек.   

    Программа: 

    1. Введение в 3D зрение. Модель камеры. Калибровка камеры.
    2. Многовидовая геометрия. Гомография. Фундаментальная матрица и её оценка. Триангуляция точек Эпиполярная геометрия.
    3. Разреженная многовидовая реконструкция. SfM (Structure from Motion) и SLAM (Simultaneous Localization and Mapping).
    4. Оценка карты глубины по одному и двум кадрам. 3D сенсоры.
    5. Многовидовая реконструкция. NERF.
    6. 3D детекция, сегментация, реконструкция.
  • Алгоритмы и структуры данных, часть 2

    Продолжение курса Алгоритмы и структуры данных. Лекции покрывают стандартные и продвинутые темы: алгоритмы на строках, конечные автоматы, контекстно-свободные грамматики, задачи о максимальном потоке, персистентность, быстрое преобразование Фурье (FFT), многопоточность и сжатие информации.  

           

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

    Программа: 

    1. Обход в ширину. Обход в глубину.
    2. 2-разрезы.
    3. Поиск кратчайших путей.
    4. Минимальные остовные деревья.
    5. Поиск подстрок.
    6. Суффиксные деревья.
    7. Суффиксные массивы.
    8. Длиннейшие общие подстроки. Приближённый поиск подстрок. 
  • Базы данных

    Современные веб-приложения строятся поверх СУБД. Они позволяют разработчикам не думать о том, как хранить и искать данные, обеспечить конкурентный доступ большому числу пользователей одновременно и оптимально использовать ресурсы железа. Все эти сложности скрыты за простым интерфейсом языка запросов, как правило, диалекта SQL. Тем не менее при построении высоконагруженных систем необходимо понимать, как работает СУБД и почему выполнение запросов занимает определённое время.  

         

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

         

    В Яндексе есть несколько команд, занимающихся разработкой СУБД: Postgres, ClickHouse, YDB и YT.   

    Программа: 

    1. Интерфейсы современных баз данных: реляционные, ключ-значение, документные, графовые. Реляционная алгебра и язык SQL.
    2. Работа с диском в классических реляционных СУБД: страницы, пул страниц, вытеснение из пула.
    3. Выполнение SQL запросов: разбор выражения, планирование, исполнение. Интерпретация и кодогенерация с помощью LLVM.
    4. Индексы в реляционных СУБД: типы индексов, способы хранения, использование в запросах.
    5. Транзакции: аббревеатура ACID, уровни изоляции, реализация транзакций через блокировки и MVCC.
    6. Восстановление при аварии: журнал, чекпойнты, алгоритм ARIES.
    7. Хранение данных методом Log-Structured Merge Tree.
    8. Поколоночные СУБД: преимущества, особенности, алгоритмы сжатия данных.
    9. Распределённые СУБД: шардирование, транзакции, выполнение запросов.
    10. СУБД, распологающиеся в основной памяти. Структуры данных для индексов в памяти.   
  • Введение в современную прикладную криптографию

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

         

    Курс также охватывает проблемы доверия к открытым ключам, инфраструктуру открытых ключей PKI и методы защищённого хранения закрытых ключей. Заключительные лекции посвящены новым направлениям в криптографии, таким как квантовая криптография и блокчейн.    

    Программа: 

    1. Базовые понятия асимметричной криптографии и криптографических протоколов. 
    2. Алгебраические и алгоритмические основы. 
    3. Базовые трудные задачи и методы их решения. 
    4. Шифрование с открытым ключом. 
    5. Электронная подпись. 
    6. PKI. 
    7. AKE-протоколы. 
    8. PAKE-протоколы. 
    9. Протокол TLS.   
  • Генеративные модели

    Курс охватывает современные архитектуры генеративных моделей и алгоритмы их обучения. На лекциях освещаются и анализируются основные подходы к генеративным моделям, а на семинарах разбираются примеры генерации изображений, текстов и других объектов с помощью вариационных автокодировщиков (VAE), генеративно-состязательных сетей (GAN), авторегрессионных моделей, нормализующих потоков и других подходов.

    Курс Высшей школы экономики по генеративным моделям проводит команда преподавателей из лаборатории LAMBDA ФКН НИУ ВШЭ.

  • Дополнительные главы теории игр и дизайн механизмов

    Продолжение курса теории игр, охватывающее отдельные ветки теории игр, том числе теорию социального выбора и теорему Эрроу, которая доказывает, что демократия невозможна. Вы изучите игры с сигнализированием на примере образования и узнаете, что сильным студентам нужно вкладываться больше, чтобы подать рынку верный сигнал, а также научитесь применять теоретико-игровой аппарат к анализу конфликтов и сотрудничества. За результаты в этой области Роберт Ауман и Томас Шеллинг в 2005 году получили Нобелевскую премию.  

        

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

    Программа: 

    1. Теория социального выбора. Теорема Мэя.
    2. Теория социального выбора (продолжение). Теорема Эрроу.
    3. Игры с сигнализированием.
    4. Кооперативная теория игр.
    5. Теория конфликтов.
    6. Введение в теорию аукционов.
    7. Аукцион I и II цены. Равновесия, сравнение прибыли аукциониста.
    8. Теорема об эквивалентности дохода (RE). Решение разных аукционов через RE.
    9. Risk-averse покупатели. Ограничение по бюджету. Асимметрия.
    10. Введение в теорию механизмов. Прямые механизмы. Совместимые со стимулами механизмы.
    11. Оптимальный механизм. Эффективный механизм (VCG). Position auction (на примере статьи Varian).
    12. Position auction (по статье Эдельман/Островский/Шварц). Сговоры в аукционах. Зависимые ценности.  
  • Комбинаторная оптимизация

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

        

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

        

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

        

    Для прохождения курса потребуются базовые знания линейной алгебре, знание основных терминов теории графов, а также алгоритмическая подготовка на уровне базового курса по алгоритмам и структурам данных.   

    Программа:

    1. Примеры комбинаторных задач, понятие сильной и слабой двойственности.

    2. Полиэдры и политопы, понятие вершины, понятие целочисленности полиэдра, тотальная унимодулярность.

    3. Построение двойственных линейных программ, теорема о сильной двойственности, условия дополняющей нежесткости.

    4. Прямо-двойственные методы построения решений для комбинаторных задач.

    5. Ослабленные условия дополняющей нежесткости и применения прямо-двойственного метода к задаче о покрытии множества.

    6. Алгоритм Эдмондса для поиска максимального паросочетания в недвудольном графе. Минимаксная формула Татта-Бержа.

    7. Применения прямо-двойственного метода для построения алгоритма решения задачи о паросочетании минимальной стоимости в недвудольном графе.

    8. Тотальная двойственная целочисленность и её связь с целочисленностью полиэдра программы.

    9. Задачи о цепях и антицепях в частично упорядоченных множествах.

    10. Матроиды, их свойства, понятие субмодулярности.

    11. Пересечение матроидов и оптимизация по пересечению матроидов.

    12. Метод эллипсоидов для полиномиального решения задачи линейного программирования.

    13. Симплекс-метод для решения задачи линейного программирования, примеры его применения с помощью пакета GLPK.

    14. Метод ветвей и отсечений для решения целочисленных линейных программ.

    15. Задача о рюкзаке, псевдополиномиальные и приближенные алгоритмы для её решения.

    16. Метод ветвей и границ для точного решения задач комбинаторной оптимизации, применение к задаче о рюкзаке.

    17. Метод локального поиска в применении к комбинаторным задачам.

  • Машинное обучение, часть 2

    Продолжение курса знакомит с различными областями и приложениями современного машинного обучения, в том числе с основами глубинного обучения, рекомендательными системами, временными рядами, обучением с подкреплением.   

    Программа: 

    1. Основы глубинного обучения.
    2. Свёрточные нейросети.
    3. Рекуррентные нейросети.
    4. Механизм внимания и трансформеры.
    5. Графовые нейронные сети.
    6. Модели с латентными переменными и ЕМ-алгоритм.
    7. Кластеризация.
    8. Ранжирование.
    9. Рекомендательные системы.
    10. Временные ряды.
    11. Обучение с подкреплением.
  • Нейробайесовские методы

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

    Программа: 

    1. Стохастический вариационный вывод. Применение SVI на примере масштабируемых тематических моделей.
    2. Дважды стохастический вариационный вывод. Дисперсия стохастических градиентов в примерах.
    3. Байесовские нейронные сети. Локальная репараметризация.
    4. Вариационный автокодировщик, нормализующие потоки для вариационного вывода. Репараметризация, оценки с выборкой по значимости (IWAE).
    5. Методы снижения дисперсии в моделях со скрытыми переменными. Методы снижения дисперсии в моделях со скрытыми переменными.
    6. Оценка отношения плотностей распределений, применение на примере \alpha-GAN. f-GAN.
    7. Deep Markov chain Monte Carlo (MCMC).
  • Обучение с подкреплением

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

    Программа: 

    1. Задачи обучения с подкреплением; Марковский процесс принятия решения.
    2. Уравнение Беллмана; Value-based RL.
    3. Обучение без модели среды; «off-policy» и «on-policy» методы.
    4. Обучение с подкреплением с аппроксимацией: улучшения для стабильности.
    5. Обучение на основе оптимизации политики.
    6. Продвинутое обучение на основе оптимизации политики.
    7. Последовательные данные в обучении с подкреплением.
    8. Distributional RL.
    9. Imitation Learning .
    10. Непрерывное управление.
  • Обучение языку C++, часть 2

    С++ — мощный язык с богатым наследием. Тем, кто только ступил на путь освоения этого языка, очень просто заблудиться в изобилии техник и приёмов, созданных за последние 30 лет.

       

    Курс учит «Modern C++» — современному подмножеству языка (стандарты 11, 14 и 17). Много внимания уделяется инструментам и библиотекам — вещам которые не являются частью языка, но без которых не получится построить большой и сложный проект.   

    Программа:

    1. Потоки. Мьютексы, guard-ы, data race. RW-lock, дедлоки, TSAN.
    2. Условная синхронизация, condition variable.
    3. Модель памяти и атомарные переменные. Барьеры.
    4. Реализация примитивов синхронизации на linux. Futex. Hazard pointer.
    5. Метапрограммирование шаблонов. SFINAE. constexpr. Концепты.
    6. Сетевое программирование.
    7. Алгоритмы работы санитайзеров (asan, msan, tsan).
    8. Архитектура компилятора, clang, llvm.
    9. Производительность. Устройство RAM. Микроархитектура процессора. perf.
  • Операторы Ходжа и основы топологического анализа данных

    Курс посвящён топологическим и алгебраическим идеям, на которых основан топологический анализ данных. Он охватывает такие понятия, как симплициальный комплекс, фильтрация комплексов и устойчивые симплициальные гомологии.  

        

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

    Программа:

    1. Что такое топология, и какие приложения у топологической интуиции?
    2. Устойчивые гомологии и диаграммы устойчивости.
    3. Вычисление диаграмм устойчивости и расстояний между ними.
    4. В сторону фрактальных методов.
    5. Ядерные и векторные представления диаграмм устойчивости.
    6. Теория Ходжа.
    7. Лапласиан Ходжа.
    8. Теория Ходжа — связь с топологией.
    9. «Каскад собственных векторов».
    10. Последние достижения в топологическом анализе данных.
    11. Дифференцируемость отображения устойчивых гомологий. Топологический автокодировщик.   
  • Основы статистики в машинном обучении

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

       

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

    Программа:

    1. Оценка параметров.
    2. Проверка гипотез. Линейная регрессия.
    3. Линейная регрессия.
    4. Непараметрическое оценивание.
    5. Нелинейные регрессионные модели.
    6. Байесовский подход к регрессии.
    7. Методы планирования экспериментов.
    8. Методы снижения размерности.
    9. Оценка чувствительности модели.
    10. Примеры индустриальных приложений.   
  • Рекомендательные системы

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

    1. Введение, общая постановка задачи, основные концепции.
    2. Методы на основе матричных факторизаций.
    3. Нейросетевые и content-based рекомендации.
    4. Обучение ранжированию и оценка качества рекомендаций.
    5. Приёмы для применения в продакшене.
    6. Case study.
  • Речевые технологии

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

       

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

    Программа

    1. Речь и её представления, используемые в задачах синтеза и распознавания.
    2. Распознавание речи. Генеративные и дискриминативные state-space модели. Улучшение распознавания речи с помощью языковых моделей. Encoder-Decoder архитектуры с механизмом внимания.
    3. Синтез речи. Акустические модели с авторегрессионной и параллельной генерацией. Стабильность и контролируемость синтеза речи. Моделирование интонации. Вычислительная эффективность синтеза речи.
    4. Вокодеры. Баланс между вычислительной эффективностью и качеством звука.   
  • Теория и практика восстановления закономерностей из эмпирических данных

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

       

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

       

    По ходу изложения курса будем останавливаться на вопросах обоснования популярных методов, например, «ядерный трюк», Ridge и LASSO регрессии.  

    Программа

    1. Прямые и обратные задачи интерпретации данных.

    2. Статистическая постановка задачи регуляризации. Гребневая и LASSO регрессии.

    3. МНК с регуляризацией второго порядка.

    4. Универсальное правило классификации и проблема влияния объёма выборки на качество классификации.

    5. Средний и эмпирический риски.

    6. Индекс системы решающих правил на заданной выборке.

    7. Равномерная сходимость частот к вероятностям.

    8. Достаточное условие равномерной сходимости частот к вероятностям.

    9. Необходимые и достаточные условия равномерной сходимости эмпирического риска к среднему риску.

    10. Метод структурной минимизации риска для выбора структуры зависимости по эмпирическим данным.

    11. Практическая задача — поиск групп сопутствующих заболевании, статистически связанных со смертностью от рака.

    12. Оценка качества восстановления зависимости методом cross-validation и с использованием радемахеровской сложности.

    13. Оценка зависимости между случайными величинами через взаимную информацию.

    14. Непараметрическая оценка взаимной информации через минимизацию квадратичного функционала.

    15. Метод конформных предикторов.

  • Эффективные системы глубинного обучения

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

    Программа:

    1. Введение в курс.
    2. Краткое повторение основ глубинного обучения и операционных систем.
    3. Data-parallel training. Семейство алгоритмов All-Reduce.
    4. Model-parallel training.
    5. Профилирование кода на GPU. Оптимизация обучения для конкретных доменов.
    6. Основы создания сетевых сервисов на Python.
    7. Трансформация обученных моделей в сервисы и оптимизация их выполнения программными средствами: inference-серверы, выполнение в браузере и на устройстве.
    8. Оптимизация выполнения нейросетей архитектурными средствами: квантизация, дистилляция, сжатие.
    9. Отслеживание экспериментов, версионирование моделей и данных.
    10. Тестирование, отладка, мониторинг и поддержка DL-систем. 
  • Язык Go

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

        

    Курс охватывает следующие темы: стандартную библиотеку, инструменты языка (профайлер, race-детектор, пакетный менеджер и т. д.) и concurrency. Основной упор сделан на практическом применении и решении конкретных задач.  

     Программа:

    1. Введение. Философия дизайна.

    2. Базовые конструкции языка.

    3. Методы.

    4. Горутины и каналы.

    5. Продвинутое тестирование.

    6. Concurrency with shared memory.

    7. Package context.

    8. Работа с базами данных.

    9. Reflection.

    10. Ввод-вывод.

    11. Архитектура GC.

    12. Go tooling.

    13. Полезные библиотеки.  

  • Concurrency

    Курс посвящён конкурентным системам и задачам в самом широком понимании. Он охватывает темы от уровня конкуренции ядер процессора за запись в одну ячейку памяти до распределённых систем, которые хотят отказоустойчиво и согласованно реплицировать своё состояние между несколькими серверами.   

    Программа: 

    1. Intro / Механика потоков или Кооперативные файберы.
    2. Взаимное исключение.
    3. Thread Pool, Coroutines, IO.
    4. Модели памяти, часть I.
    5. Модели памяти, часть II (слабые модели памяти).
    6. Futures & Promises.
    7. Неблокирующая синхронизация (lock-free).
    8. Thread Sanitizer.
    9. Go Scheduler.
    10. Stackless Coroutines.
    11. Unified Executors.
    12. Lock-Free Channel + Select, Multi-Cas.
    13. Structured Concurrency.
    14. Сила атомарных операций, число консенсуса.
  • ML Research Practice

    Курс представляет собой работу над командными исследовательскими проектам в области машинного обучения.  

     

  • ML/Backend Engineering Practice

    Курс представляет собой проектную работу по разработке ML‑проектов в командах.  

     

  • Self-Driving Cars

    Курс посвящён технологии беспилотного транспорта и включает следующие темы: компоненты беспилотного автомобиля, задачи, которые возникают в процессе создания этих компонент и методы их решения.   

    Программа: 

    1. Area overview + basic localization.
    2. Lidar-based Localization and HD maps.
    3. Perception.
    4. Prediction.
    5. Motion Planning & Control.
    6. Behavior Planning.