layout |
---|
default |
Темы курса:
- Основы функционального программирования. Разберем принципы работы с неизменяемыми и персистентными структурами данных и устройство этих структур. Принципы моделирования данных - case-классы, алгебраические типы и pattern matching.
- Рассмотрим более сложные техники функционального программирования: ленивые вычисления; часто используемые абстракции, такие как функтор, аппликатив и монада.
- Научим использовать неявные значения и преобразования - будем создавать тайпклассы, а потом рассмотрим другие применения этого механизма. В качестве примера поговорим о том, как работать с JSON и как обрабатывать ошибки парсинга.
- Расскажем о многопоточности - сначала разберем инструменты, которые нам дает виртуальная машина Java. Потом перейдем к высокоуровневым примитивам - поговорим о разных подходах к написанию конкурентного и параллельного кода. Подробно рассмотрим устройство Future/Promise, а потом перейдем к акторам Akka.
- Изучим базовые примитивы функционального программирования из библиотеки Cats. Многопоточность и управление эффектами Cats Effect.
- Расскажем об устройстве ввода вывода, о том, как построены асинхронные клиенты к веб-сервисам и базам данных, и о том, как совмещать ввод-вывод и асинхронный код.
- Расскажем о том, как организовывать асинхронную обработку потоков данных на примере библиотеки Akka Streams.
- Покажем как разрабатывать веб-сервисы с использованием Akka HTTP
Курс будет состоять из лекций, семинаров и домашних заданий. На семинаре будем совместно решать задачи по пройденной на лекции теме.
- Орг вопросы.
- Семинар: 3 марта
- Семинар: Орг вопросы. Проверяем звук в Discord. Проверка IDEA Code With Me (ведущий - Максим)
- Видео: Ставим JDK и Intellij IDEA
- Введение в Scala. Case классы и pattern matching.
- Лекция: 9 марта. Семинар 16 марта.
- Видео: Часть 1. Введение в Scala
- Видео: Часть 2. Case-классы и pattern matching
- Видео: Домашнее задание
- Слайды: Введение в Scala. Case классы и pattern matching.
- Слайды домашнего задания: Часть 1. Домашнее задание.
- Семинар: Создаем первый проект. Юнит тесты на Specs2 и ScalaCheck. (ведущий - Саша)
- Семинар: Стартовый проект и слайды. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson1
- Иммутабельность и базовые структуры данных. Работа со списками.
- Лекция: 16 марта. Семинар: 23 марта.
- Видео: Работа со списками
- Видео: Домашнее задание
- Слайды: Работа со списками
- Слайды домашнего задания: Часть 2. Домашнее задание.
- Семинар: Измеряем скорость операций над коллекциями при помощи JMH. (ведущий - Никита)
- Семинар: Стартовый проект и README. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson2
- Vector. Ленивые вычисления. LazyList и View. Монады.
- Лекция: 23 марта. Семинар: 30 марта.
- Видео: Часть 1. Vector, Map и View.
- Видео: Часть 2. Ленивые вычисления и монады.
- Слайды: Vector. Ленивые вычисления. LazyList и View. Монады.
- Семинар: Решаем задачи с использованием LazyList. (ведущий - Роман)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson3
- Implicit значения и преобразования. Тайпклассы. Чтение и запись JSON в play-json.
- Лекция: 30 марта. Семинар: 6 апреля.
- Видео: Часть 1. Implicit значения и преобразования. Тайпклассы.
- Видео: Часть 2. Тайпклассы и работа с JSON. Обзор play-json
- Видео: Стартуем большой проект (домашнее задание)
- Слайды: Implicit значения и преобразования. Тайпклассы. Чтение и запись JSON в play-json
- Семинар: Практика по использованию play-json. (ведущие - Саша и Наташа)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson4
- Слайды домашнего задания: Пишем классификатор
- Базовые примитивы многопоточности.
- Лекция: 6 апреля. Семинар: 13 апреля.
- Видео: Часть 1. Введение в многопоточное и асинхронное программирование.
- Видео: Часть 2. Future и Promise
- Слайды: Базовые примитивы многопоточности
- Семинар: Практика по использованию Future/Promise. Планировщик. (ведущий - Роман)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson5
- Cats и Circe.
- Лекция: 13 апреля. Семинар: 21 апреля (Внимание! семинар перенесен на четверг!).
- Видео: Cats и Circe.
- Видео: Классификатор часть 2 (домашнее задание).
- Слайды: Cats и Circe
- Семинар: Практика по извлечению данных JSON/HTML и валидации. (ведущий - Никита)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson6
- Слайды домашнего задания: Классификатор: морфология и диагностика
- Архитектура обработки запросов. HTTP Протокол. REST и Akka HTTP.
- Лекция: 20 апреля. Семинар: 27 апреля.
- Видео: Часть 1. Архитектура обработки запросов. Протокол HTTP.
- Видео: Часть 2. REST и Akka HTTP.
- Видео: Сервис классификации (домашнее задание)
- Слайды: Часть 1. Архитектура обработки запросов. Протокол HTTP.
- Слайды: Часть 2. REST и Akka HTTP.
- Слайды домашнего задания: Сервис классификации.
- Семинар: Практика по Akka Http. (ведущий - Марат)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson7
- Акторы Akka, часть 1.
- Лекция: 27 апреля. Семинар: 4 мая.
- Видео: Часть 1. Акторы Akka
- Видео: Часть 2. Акторы и Future. Таймеры. Исключения
- Слайды: Акторы Akka
- Семинар: Практика использования акторов Akka. (ведущий - Саша)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson7
- Акторы Akka, часть 2.
- Лекция: 4 мая. Семинар: 16 мая (Внимание! Семинар перенесен на понедельник 16 мая)
- Видео: Акторы Akka: отказоустойчивость и гарантии. Back pressure. Роутеры
- Видео: Классификация сообщений Telegram чата (домашнее задание)
- Слайды: Акторы Akka: отказоустойчивость и гарантии. Back pressure. Роутеры
- Слайды домашнего задания: Классификация сообщений Telegram чата
- Семинар: Akka Patterns. (ведущая - Наташа)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson9
- Akka Streams и реактивные потоки.
- Видео: Часть 1. Реактивные потоки и введение в Akka Streams
- Видео: Часть 2. Обзор операторов Akka Streams
- Слайды: Akka Streams и реактивные потоки
- Лекция: 11 мая. Семинар: 18 мая.
- Семинар: Akka Streams. (ведущая - Наташа)
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson10
- Cats Effect и Http4s.
- Лекция: 18 мая. Семинар: 25 мая.
- Видео: Cats Effect и Http4s
- Слайды: Cats Effect и Http4s
- Семинар: Практика по Cats Effect и http4s (ведущий - Никита).
- Семинар: Стартовый проект. Сохраненная копия: https://github.com/maxcom/scala-course-2022/tree/gh-pages/seminar/lesson11
- Подведение итогов.
- Семинар: 8 июня (Внимание! Перенос на 8 июня).
Начинаем после 3-й лекции.
- Денис Баженов: Наивный байесовский классификатор (сохраненная копия сайта)
- Корпус коротких текстов для настройки классификатора. При использовании корпуса, просьба ссылаться на следующую работу: Автоматическое построение и анализ корпуса коротких текстов (постов микроблогов) для задачи разработки и тренировки тонового классификатора