Welcome
  • Welcome! Administrative and Setting up Dev Environment
  • How to Make the Best Out of This Course
A Taste of Advanced Scala
  • Welcome!
  • Recap: The Scala Basics
  • Dark Syntax Sugar
  • Advanced Pattern Matching
  • Advanced Pattern Matching, Part 2
Advanced Functional Programming
  • Welcome!
  • Partial Functions
  • Functional Collections: A functional Set
  • Enhancing A Functional Set
  • A Functional Set, level 9000: A Potentially Infinite Set
  • Moar Functional Collections!
  • Currying and Partially Applied Functions
  • Lazy Evaluation
  • Lazy Evaluation Exercise: A Potentially Infinite Stream
  • Infinite Streams Proficiency: More Exercises
  • Monads
  • Monads: Exercises
Functional Concurrent Programming
  • Welcome!
  • Intro to Parallel Programming on the JVM
  • Concurrency Problems on the JVM
  • JVM Thread Communication
  • Producer-Consumer, Level 2
  • Producer-Consumer, Level 3 + Excercises
  • JVM Thread Communication Exercises
  • Futures and Promises
  • Futures, Part 2
  • Futures, Part 3
  • Futures, Part 4 + Exercises
  • Scala & JVM Standard Parallel Libraries
Implicits
  • Welcome!
  • Enter Implicits
  • Organizing Implicits
  • Type Classes, Part 1
  • Type Classes, Part 2
  • Pimp My Library!
  • Type Classes, Part 3
  • A Type Class End-to-End example: JSON Serialization
  • A Type Class Use Case: The Magnet Pattern
  • Scala <> Java conversions
Mastering the Type System
  • Welcome!
  • Advanced Inheritance
  • Variance
  • Variance Exercises
  • Type Members
  • Inner Types and Path-Dependent Types
  • Structural Types and Compile-Time Duck Typing
  • Self Types
  • Recursive Types and F-Bounded Polymorphism
  • Higher-Kinded Types
  • Reflection, Part 1
  • Reflection, Part 2
  • You Rock!