Если в программировании вы 0 и хотите начать правильно вникать в программирование, то начните с классики - Structure and Interpretation of Computer Programs (SICP), эта книга закладывает хорошие основы, а так же познакомит вас с функциональным программированием:
книга:
web.mit.edu/alexmv/6.037/sicp.pdf
вспомогательный сайт для самостоятельного изучения книги:
https://mitpress.mit.edu/sicp
sicp.sergeykhenkin.com/sicp-exercise-solutions
перевод книги (не в курсе на счет качества)
newstar.rinet.ru/~goga/sicp/sicp.pdf
видео лекций по книге:
ocw.mit.edu/courses/electrical-engineering-and-com...Конкретно по Scala:
С точки зрения Scala, на мой взгляд самый оптимальный вариант это пройти курсы по Scala на coursera.org. Но ниже будут примеры и ссылки и других источников для иучения программирования на Scala..
Интерактивные курсы
cousera.org:
Специализация по Scala - один из фундаментальных источников знаний о программировании на Scala. В составе - видео лекции, доп. материалы, вопросы на закрепление, задания на программирование, форум для вопросов и обсуждения (все опционально). В принципе можно вместо SICP сразу начинать со специализации на coursera.org, в частности первый курс в специализации как раз таки проектировался Мартином в стиле SICP (по крайней мере до создания специализации программа курса и задания были в духе SICP).
https://www.coursera.org/specializations/scala
Ссылки на курсы из специализации по отдельности (для бесплатной регистрации):
1.
Functional Programming in Scala
2.
Functional Program Design in Scala
3.
Parallel programming
4.
Big Data Analysis with Scala and Spark
Курс стоящий немного в стороне, о
reactive programming на scala:
Принципы реактивного программирования
---
Интерактивные упажнения по Scala от 47 Degrees (на данный момент 6 курсов
std lib,
cats,
shapeless,
doobie,
scalacheck,
FP in Scala)
https://www.scala-exercises.org
www.scalakoans.org - небольшие уроки для изучения
---
Big data university (с уклоном в Data Science и Big Data):
Introduction to ScalaScala for Data ScienceSpark Overview for Scala Analytics
------------------------------------------
Если вас больше интересует не интерактивный стиль обучения, а вдумчивое чтение, то можно посоветовать следующие книги:
Книги:
На русском,к сожалению, есть только одна книга:
Scala для нетерпеливых
но для новичка в программировании она скорее всего не подойдет.
также в 2016 вышла обновленная версия книги от Martin Odersky, Lex Spoon и Bill Venners, которая покрывает все вопросы связанные со Scala (859 стр), в том числе все нововведения на текущий момент (вплоть до Scala 2.12). Эту книгу можно также читать если вы новичок в программировании. Это наверно самый фундаментальный источник для изучения Scala:
Programming in Scala, Third Edition
После ознакомления с основами Scala для углубления именно функциональных аспектов программирования на Scala можно прочитать замечательную книгу от Paul Chiusano и Rúnar Bjarnason:
Functional Programming in Scala
Для изучения практических основ проектирования современных приложений с использованием возможностей Scala и ее экосистемы, с применением функциональной парадигмы, рекомендую отличную книгу от Debasish Ghosh
Functional and Reactive Domain Modeling
Вообще по Scala и различным инструментам из экосистемы Scala сейчас много разных книг, так что при желании можно найти подходящую по уровню и интересам, стоит также обратить внимание на подборку книг
на сайте lightbend (бывшая TypeSafe)
Также можно почитать перевод уроков Scala от Twitter:
Scala Школа!
------------------------------------------
Алгоритмы
На счет алгоритмов, про которые вы упоминали, можете посмотреть прекрасный набор классических алгоритомов и структур данных, реализованных на Scala в чисто функциональном стиле:
scalacaster от @vkostyukov(Twitter, Finagle)
или
scalgos от @pathikrit
------------------------------------------
ОстальноеNinety-Nine Scala Problems - набор небольших упражнений (с ответами) для изучения Scala
Hands-on Scala.js - туториал по
Scala.js от @lihaoyi
Type-Level Programming in Scala - серия постов из десяти частей на тему продвинутого использования возможностей системы типов Scala от Rúnar Bjarnason (соавтор Functional Programming in Scala) и Mark Harrah (разработчик sbt)
Scala Best Practices - колеекция хорощих практик программирования на Scala от Alexandru Nedelcu
P.S. Также если хочется держать руку на пульсе о том, что происходит в экосистеме и community Scala, то можно посмотреть эту
подборку блогов и новостных и видео ресурсов о Scala