Course Content
Scala
- About Scala
- Setting up SBT
- The Language
Scala Syntax
- Primitive and simple types
- Control structures
- Better Access Modifiers
- Lazy Values
Objects and Classes
- Classes and Objects
- Nulls, Nothing, and Units
- Case Classes
- Abstract Classes and Basic Traits
Functions
- Functions and Higher Order Functions
- Functions from Objects
- Partial Functions
- Recursion
Collections and Monads
- Lists
- Buffers
- Sets
- Maps
- Arrays
- Streams
- Vectors and Tries
- Options
- For-Comprehensions
Composition and Inheritance
- Traits
- Parameterized Types and Abstract types
- Self types
- Path Dependent Types
- Type Safe Duck Typing with Structural types
- Covariance, Invariance, Contravariance
- Manifests and Reflections
Pattern matching
- Matching Lists, Options, Tuples, and Regular Expressions
- Pattern Guards
- Case Class and Sealed Case Class Matching
- Custom Pattern Matching with Extractors
Implicits and Type Classes
- Implicit Conversions
- Implicit Parameters
- Type Classes
- View Bounds
- Scala and Java Interoperability
Testing with Scala
- ScalaTest with Easy Mock
- Specs2 with Mockito
- ScalaMock
- ScalaCheck
Engineering with Scala
- Dependency Injection with Java frameworks
- Functional Patterns
- Cake Pattern
- Higher Kinded Types and Existentials
Actors and Concurrent Programming
- Setting up Akka
- About Akka
- Actors & Supervision