Курс на 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