GrabDuck

Курсы Computer Science клуба, весна 2017

:


Computer Science клуб вот уже 10 лет проводит открытые курсы по компьютерным наукам. Большинство лекций стараниями Лекториума записаны на видео и лежат в открытом доступе. В этом семестре выложены уже три новых курса, которые до этого не читались в клубе: «Программирование с зависимыми типами на языке Idris», «Вычисления на GPU. Основные подходы, архитектура, оптимизации», «Методы и системы обработки больших данных».

Программирование с зависимыми типами на языке Idris



Лектор: Виталий Николаевич Брагилевский, сотрудник института математики, механики и компьютерных наук Южного федерального университета (Ростов-на-Дону), член комитета по стандартизации языка Haskell 2020.

Аннотация
Idris — чистый тотальный функциональный язык программирования общего назначения с Haskell-подобным синтаксисом и поддержкой зависимых типов. Система типов подобна системе типов языка Agda. Язык поддерживает средства автоматического доказательства, сравнимые с Coq,
включая поддержку тактик, однако фокусируется не на них, а позиционируется как язык программирования общего назначения. Цели его создания: «достаточная» производительность, простота управления побочными эффектами и средства реализации встраиваемых предметно-ориентированных языков.

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

Материалы и видео курса.

Вычисления на GPU. Основные подходы, архитектура, оптимизации



Лектор: Алексей Александрович Ивахненко, ведущий специалист по архитектуре GPU и оптимизации в Applied Parallel Computing LLC.

Аннотация
Этот курс лекций освещает основные способы разработки программного обеспечения, использующего графические процессоры (GPU) NVIDIA в параллельных вычислениях. Включает в себя обзор библиотек линейной алгебры, преобразования Фурье, генерации случайных чисел. Рассмотрен процесс быстрой разработки с помощью STL-подобной библиотеки Thrust.

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

Заключительная лекция представляет пример взаимодействия с популярным стандартом компьютерной графики OpenGL на примере численного решения стационарного уравнения Пуассона.

Материалы и видео курса.

Методы и системы обработки больших данных



Лектор: Иван Витальевич Пузыревский, преподаватель Школы анализа данных и факультета компьютерных наук Высшей школы экономики, в Яндексе руководит одной из групп разработки платформы для распределённого хранения и обработки данных YT.

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

В лекционной части курса рассматриваются такие технологии как HDFS, Hadoop MapReduce, HBase, Cassandra, Spark, Kafka, Spark Streaming, Storm. Последовательность рассказа повторяет историю появления и развития данных технологий обработки данных. В начале мы познакомимся с HDFS и MapReduce, разберем основные архитектурные решения и ограничения в применимости данных систем (в том числе с учетом десятилетнего опыта эксплуатации). Следом разберем задачу хранения данных по ключу, познакомимся с различными трейд-оффами в построении систем типа «ключ-значение» на примере HBase & Cassandra. Постепенно перейдем к изучению устройства Spark, современной системе кластерной обработки данных. Узнаем принципиальные отличия в пакетной и потоковой обработке данных, изучим Kafka — шину для доставки данных с минимальными задержками — и Storm вместе с Spark Streaming — системами потоковых вычислений. В дополнение разберем сопроводительные технологии (типа ZooKeeper, Hive), которые порой упрощают жизнь при разработке приложений.

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

Материалы и видео курса.

Другие курсы этого семестра


На прошлой неделе завершился курс «Коммуникационная сложность», скоро появится видео. На этих выходных начался курс «Экспандеры и их применения». В апреле ожидается курс «Машинный перевод», в мае — курс «Избранные главы теории потоков», а в начале июня миникурс «Modern algorithms for parallel, streaming and query-based data processing». Кроме этого в течение всего семестра проводится Семинар по сложности булевых функций

Мы в Академическом университете поощряем студентов, которые посещают лекции Computer Science клуба — мы позволяем засчитывать курсы клуба (для этого, конечно, нужно сдать экзамен).

Если вам интересны лекции клуба и вы живёте в Петербурге или Казани (в Казани действует филиал клуба) — подписывайтесь на обновления в социальных сетях или на email-рассылку (ссылки есть на нашем сайте) и приходите на лекции!

Вторая часть.