Course Introduction and Exercises
  • Download the exercises for this course
  • Download Slides and Exercises
Module 12 - Pattern Matching
  • 01 - Module 12 Introduction
  • 02 - Agenda
  • 03 - Simple Constant Patterns
  • 04 - match is an expression
  • 05 - Variable Loads
  • 06 - Binding vs Loading
  • 07 - Case Matters!
  • 08 - Case Matters Continued!
  • 09 - Guards
  • 10 - The Wrong Way to Guard
  • 11 - Matching Options
  • 12 - Matching Tuples
  • 13 - Matching Lists
  • 14 - Other Collections
  • 15 - Matching Try
  • 16 - Case Classes 1
  • 17 - Case Classes 2
  • 18 - Case Classes 3
  • 19 - Compound Pattern Matches
  • 20 - Typed Pattern Matches
  • 21 - Beware Type Erasure!
  • 22 - val and Pattern Matching
  • 23 - for and Pattern Matching
  • 24 - Partial Functions and Pattern Matches
  • 25 - Sealed Class Hierarchies
  • 26 - Extractors and unapply
  • 27 - Custom Extractors
  • 28 - Custom Seq Extractors
  • 29 - Module 12 Exercises
  • Case Classes and Pattern Matching
Module 13 - Lists
  • 01 - Module 13 Introduction
  • 02 - Agenda
  • 03 - The Immutable Linked List
  • 04 - List Properties
  • 05 - Initializing Lists
  • 06 - Converting to Lists
  • 07 - List is Covariant
  • 08 - Constant Time Operations
  • 09 - Linear Time Operations
  • 10 - Operations that Depend on Position
  • 11 - Higher Order Functions
  • 12 - Predicate Based Functions
  • 13 - Folds
  • 14 - Fold Alternatives
  • 15 - Sorting
  • 16 - Even More Functions
  • 17 - And More
  • 18 - Permutations and Combinations
  • 19 - Indices, zip, unzip
  • 20 - Module 13 Exercises
  • Working with Lists
Module 14 - Collections
  • 01 - Module 14 Introduction
  • 02 - Agenda
  • 03 - Other Collections
  • 04 - Sequences Performance
  • 05 - Sets and Maps Performance
  • 06 - LinearSeq vs IndexedSeq
  • 07 - mutable vs immutable
  • 08 - Consistent API
  • 09 - Easy Conversions
  • 10 - Other Sequences
  • 11 - The Mighty Vector
  • 12 - Vector (continued)
  • 13 - Immutable Sets
  • 14 - Sorted and Mutable Sets
  • 15 - Maps
  • 16 - Sorted and Mutable Maps
  • 17 - Key and Value Operations
  • 18 - Immutable Implementations
  • 19 - Mutable Implementations
  • 20 - Iterators
  • 21 - Views
  • 22 - Streams
  • 23 - Module 14 Exercises
  • Collections
Module 15 - Building Scala, SBT, Java Compatibility
  • 01 - Module 15 Introduction
  • 02 - Agenda
  • 03 - Maven
  • 04 - Gradle
  • 05 - Other Options
  • 06 - SBT
  • 07 - Using SBT
  • 08 - SBT Project Source Layout
  • 09 - build.sbt
  • 10 - Example build.sbt
  • 11 - Example plugins.sbt
  • 12 - Making a Custom Setting
  • 13 - A Custom Task
  • 14 - Multiple Project Support
  • 15 - Mixing Scala and Java
  • 16 - Scala/Java Compile Cycle
  • 17 - Calling Java from Scala
  • 18 - Scala 2.12 and Java 8