Курс на Stepik
Обложка курса «Scala для дата-инженеров» на Stepik
800 ₽

Scala для дата-инженеров ★ 5.000

Открыть на
STEPIK.ORG

Практический курс по Scala 2.13 для дата-инженеров: от установки окружения и базового синтаксиса до коллекций, ООП, функционального программирования, обработки ошибок, sbt, тестирования и итогового мини-ETL проекта.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Scala для дата-инженеров»Учеников на курсе 63
Сертификаты, выданные на курсе «Scala для дата-инженеров»Сертификатов выдано 0
Отзывы о курсе «Scala для дата-инженеров»Отзывов получено 2
Рейтинг курса «Scala для дата-инженеров»Рейтинг курса 5.000
Уроки в курсе «Scala для дата-инженеров»Количество уроков 118
Тесты в курсе «Scala для дата-инженеров»Количество квизов 586
Время прохождения курса «Scala для дата-инженеров»Время прохождения курса —
Стоимость курса «Scala для дата-инженеров»Стоимость курса 800 ₽ —
Обновления курса «Scala для дата-инженеров»Обновления курса — —
Дата публикации курса «Scala для дата-инженеров»Дата публикации курса — ———
Последнее обновление курса «Scala для дата-инженеров»Последнее обновление — ———
Сложность easy — ———

Содержание курса

Разделы в курсе «Scala для дата-инженеров» 17 разделов Уроки в курсе «Scala для дата-инженеров» 118 уроков Тесты в курсе «Scala для дата-инженеров» 586 тестов Время прохождения курса «Scala для дата-инженеров» 3 ч. Последнее обновление курса «Scala для дата-инженеров» обн. 14 июля 2026

Модуль 1. Введение: зачем дата-инженеру Scala и среда разработки

8 уроков
1. О курсе: как проходить обучение и канал «Логово Дата-Инженера» ↗
2. Почему именно Scala для дата-инженерии ↗
3. Как устроена JVM и при чём здесь Scala. Байт-код и JDK ↗
4. Установка JDK, sbt и Coursier. Проверка окружения ↗
5. Настройка IDE: IntelliJ IDEA и плагин Scala (и альтернатива… ↗
6. REPL: интерактивная консоль Scala для экспериментов ↗
7. Первая программа: создаём и запускаем sbt-проект ↗
8. Как читать ошибки компилятора. Цикл правка — компиляция — запуск ↗

Модуль 2. Базовые типы и значения

8 уроков
1. Значения val и переменные var. Почему неизменяемость по… ↗
2. Базовые типы: Int, Long, Double, Boolean, Char и их литералы ↗
3. Арифметические операции, приоритеты и переполнение чисел ↗
4. Строки String и интерполяция s, f, raw ↗
5. Всё есть выражение: if-выражение и блоки фигурных скобок ↗
6. Типы Unit, Nothing и иерархия Any, AnyVal, AnyRef ↗
7. Вывод типов: когда тип указывать явно, а когда нет ↗
8. Преобразование типов и связанные с ним ловушки ↗

Модуль 3. Управляющие конструкции

6 уроков
1. Условные выражения if/else, операторы сравнения и логические… ↗
2. Цикл while и когда он действительно оправдан ↗
3. Цикл for и диапазоны Range ↗
4. Цикл for с фильтрами и несколькими генераторами ↗
5. Конструкция for-yield: строим коллекции ↗
6. Конструкция match: первое знакомство ↗

Модуль 4. Функции и методы

10 уроков
1. Методы def: параметры, тело и возвращаемое значение ↗
2. Функции как значения. Функциональные типы и стрелка => ↗
3. Анонимные функции и сокращённый синтаксис с подчёркиванием ↗
4. Функции высшего порядка: передаём поведение как аргумент ↗
5. Значения по умолчанию и именованные аргументы ↗
6. Параметры переменной длины (varargs) ↗
7. Каррирование и частичное применение функций ↗
8. Параметры по имени (by-name) и отложенные вычисления ↗
9. Рекурсия и хвостовая рекурсия с аннотацией @tailrec ↗
10. Вложенные функции и замыкания ↗

Модуль 5. Коллекции: фундамент

7 уроков
1. Обзор иерархии коллекций. Неизменяемые и изменяемые коллекции ↗
2. Список List: устройство из ячеек и базовые операции ↗
3. Vector, Array и ArraySeq: что и когда выбирать ↗
4. Множества Set и словари Map ↗
5. Кортежи Tuple и их роль в обработке данных ↗
6. Диапазоны Range и ленивые последовательности LazyList ↗
7. Тип Option как коллекция из нуля или одного элемента ↗

Модуль 6. Функциональные операции над коллекциями

10 уроков
1. Метод map и перебор foreach ↗
2. Отбор элементов: filter, filterNot и collect ↗
3. Метод flatMap: разворачиваем вложенность ↗
4. Свёртки fold, foldLeft, foldRight и reduce ↗
5. Группировка groupBy и groupMapReduce ↗
6. Сортировка коллекций: sortBy, sortWith, sorted, maxBy/minBy ↗
7. Соединение и нарезка: zip, zipWithIndex, sliding, grouped ↗
8. Отрезаем и делим: take, drop, span, partition, distinct ↗
9. Преобразования между коллекциями: toMap, toSet, toList ↗
10. Ленивые вычисления через view и производительность цепочек ↗

Модуль 7. Объектно-ориентированное программирование

11 уроков
1. Классы: поля, конструктор и методы ↗
2. Вспомогательные конструкторы и значения полей по умолчанию ↗
3. Объекты-синглтоны object и точка входа в программу ↗
4. Объекты-компаньоны и метод apply как фабрика ↗
5. Case-классы: что компилятор генерирует автоматически ↗
6. Равенство, hashCode и метод copy у case-классов ↗
7. Трейты trait: интерфейсы с реализацией ↗
8. Композиция трейтов и линеаризация (ромбовидное наследование) ↗
9. Наследование классов: override, super, абстрактные члены ↗
10. Модификаторы доступа: private, protected, private[package] ↗
11. Запечатанные иерархии sealed ↗

Модуль 8. Паттерн-матчинг и алгебраические типы

7 уроков
1. Match глубоко: литералы, переменные и wildcard ↗
2. Сопоставление с case-классами и деконструкция ↗
3. Сопоставление списков и последовательностей ↗
4. Стражи guards, связывание через @ и альтернативы | ↗
5. Экстракторы: метод unapply и собственные шаблоны ↗
6. Алгебраические типы данных: sealed trait плюс case-классы ↗
7. Моделируем предметную область данных через ADT ↗

Модуль 9. Отсутствие значений и обработка ошибок

7 уроков
1. Проблема null и тип Option: Some и None ↗
2. Работаем с Option: map, getOrElse, fold, for-comprehension ↗
3. Исключения в Scala: try, catch, finally ↗
4. Тип Try: Success и Failure как обычное значение ↗
5. Тип Either: Left и Right для ошибок с контекстом ↗
6. Композиция ошибок через for-comprehension над Either и Try ↗
7. Паттерны обработки ошибок в конвейерах обработки данных ↗

Модуль 10. Дженерики и система типов

5 уроков
1. Параметризованные классы и методы (дженерики) ↗
2. Ограничения типов: верхние и нижние границы ↗
3. Вариантность: ковариантность и контравариантность ↗
4. Почему коллекции ковариантны, а функции контравариантны по входу ↗
5. Члены-типы и абстрактные типы ↗

Модуль 11. Implicits и классы типов — ключ к Spark

6 уроков
1. Идея неявных параметров implicit и using. Передача контекста ↗
2. Неявные значения и алгоритм их поиска компилятором ↗
3. Классы типов (type classes): идея и реализация ↗
4. Расширения через implicit class и extension. Pimp my library ↗
5. Контекстные границы [T: TypeClass] ↗
6. Неявные преобразования и где они прячутся в Spark ↗

Модуль 12. Функциональное программирование глубже

6 уроков
1. Чистые функции, побочные эффекты и ссылочная прозрачность ↗
2. Неизменяемость на практике: обновление данных через copy ↗
3. Композиция функций: andThen и compose ↗
4. For-comprehension как универсальный механизм ↗
5. Что такое монада простыми словами: контракт map и flatMap ↗
6. Лень в Scala: lazy val, by-name и LazyList — резюме ↗

Модуль 13. Конкурентность и асинхронность

6 уроков
1. Потоки JVM в двух словах. Зачем дата-инженеру асинхронность ↗
2. Future: запуск асинхронных вычислений и ExecutionContext ↗
3. Композиция Future: map, flatMap, for и обработка ошибок ↗
4. Несколько Future параллельно: Future.sequence и traverse ↗
5. Параллельные коллекции .par и их подводные камни ↗
6. Неизменяемость как способ избежать состояний гонки ↗

Модуль 14. Ввод-вывод и работа с форматами данных

6 уроков
1. Чтение и запись файлов: scala.io.Source и java.nio ↗
2. Управление ресурсами: Using и try-with-resources ↗
3. Дата и время: пакет java.time ↗
4. Разбор CSV: вручную и с помощью библиотеки ↗
5. JSON в Scala: парсинг и кодирование (circe/json4s) ↗
6. Регулярные выражения в Scala ↗

Модуль 15. Сборка, зависимости и тестирование

7 уроков
1. sbt глубоко: build.sbt, настройки и задачи ↗
2. Зависимости и репозитории. Оператор %% и версии Scala ↗
3. Многопроектные сборки и структура реального проекта ↗
4. sbt-assembly: толстый jar для spark-submit ↗
5. Тестирование с ScalaTest: стили спецификаций и матчеры ↗
6. Property-based тестирование с ScalaCheck ↗
7. Логирование: slf4j, logback и конфигурация ↗

Модуль 16. Scala 3: взгляд в будущее

4 урока
1. Scala 2 против Scala 3: совместимость и причины перехода ↗
2. Новый синтаксис: значимые отступы, given и using вместо implicit ↗
3. enum, методы-расширения и определения верхнего уровня ↗
4. Прочие новшества: union-типы, opaque-типы, кратко ↗

Модуль 17. Итоговый проект: мини-ETL на чистой Scala

4 урока
1. Постановка задачи: ETL-пайплайн без Spark ↗
2. Проектируем доменную модель и этапы пайплайна ↗
3. Реализация: чтение, трансформация, запись и тесты ↗
4. Итоги курса и мост к Apache Spark ↗