Functions & evaluation: Evaluation strategies, scope, tail recursion
Higher order functions: Higher order functions, currying, evaluation & operators
Data and abstraction: Scala class hierarchies, polymorphism
Types and pattern matching: Functions as objects, subtyping & generics, variance, OO decomposition, pattern matching, lists
Lists: Pairs & tuples, implicit parameters, higher order list functions, reduction of lists
Collections: Vector, Seq, Array, String, Set, Map, Iterable, Range, for-expressions
Lazy evaluation: Streams, lazy evaluation, infinite sequences