- array vs seq vs vector vs list
- Implicit Conversions and Parameters
- using option instead of null
- functions vs procedures vs methods
- types of functions: pure functions, higher order functions etc
- thinking declarative
- named arguments
- ??? method
- apply/update method
- iterating map entries
- scala faking language constructs and other syntactic sugar
- pattern matching
- optional/some/none
- monads
- currying
- using yield
- closure
- parameter groups
- partial application/functions
- package object
- cake pattern
- implicit, when to use it, when not
- groupBy, foldRight, foldLeft, fold (advanced cases: https://github.com/amirhhz/coursera-progfun/blob/master/assignments/forcomp/src/main/scala/forcomp/Anagrams.scala)
- Predef object
- variances
- try-catch-with resources