Этой осенью я закончил курс на Coursera «Functional Programming Principles in Scala». Этот курс — часть специализации из 5 курсов «Functional Programming in Scala». Это шестинедельное введение в функциональное программирование и Scala.

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

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

  • функции высшего порядка;
  • абстрактные типы (traits) и классы;
  • сопоставление с образцом;
  • работа со списками и другими коллекциями в Scala.

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

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

И в заключение: если вы решите после этого курса, что Scala не для вас, то пройдите следующий курс в специализации.