Scala journey with exercises, explanations and links to blogposts and talks.
The agenda is composed of 6 weeks of individual trainings, with the purpose of talking about some of the inners of the Scala language and functional programming principles.
The lessons are:
-
Scala and Sbt basics
- val, var, def, lazy, trait, sealed, imports, functions, type inference
- talk about imports
- sbt talk - dependencies mainly
-
Functional programming principles:
- immutability
- pureness + referential transparency
- functions + function composition
- recursiveness
- higher order functions
- ADTs
- talk about types - generics and relevance
- why is this relevant? testing and correctness
-
Scala standard library:
- list, sets, option, either
- functions - filter, map, flatMap, exists, contains, etc
-
Functional composition through monads:
- what functors and monads are and how they are relevant - their relationship with function composition
- for-comprehensions
- monadic design
-
Implicits:
- types of implicits
- usefulness
- case study: Future[] flow
- their scope
-
Play framework:
- overall architecture of an app
- controllers -> services -> repositories. models
- anatomy of an endpoint - from routes, to controller, and so on
- anatomy of a controller function
- keywords: @Inject() and others
- connectors and their crucial importance in our platform architecture
Throughout the resources, I will also be referencing chapters from https://github.com/robertbutacu/bachelor-degree-work.