Course Outline

Introduction

  • Who uses Scala?
  • Developing large-scale, purely-functional programs

Overview of Functional Programming in Scala

  • Higher-Order Functions
  • Combinators
  • Polymorphic Functions

Mastering Scala Types

  • Product types & Sum types
  • Supertypes & Subtypes
  • Universals & Existentials
  • Higher-Kinded Types
  • Type Lambdas

Mastering Scala Type Classes

  • Classes & Instances
  • Tricks with Implicits
  • Polymorphic Constraints

Case Study: Highly-stateful programs with complex external systems

Coding Exercise

Working with Data

  • Immutable Data & Recursion
  • Catamorphisms & Church Encoding
  • Fixed-Point Data
  • Recursion Schemes

Advanced Pattern Matching in Scala

  • Deep matching
  • Using extractors

Case Study: Scala and Big Data

Coding Exercise

Using Functional Patterns

  • Options, Eithers & Validations
  • Semigroups & Monoids
  • Functors
  • Applicatives
  • Monads
  • Foldables & Traversables
  • Lenses

Working with Effects

  • IO
  • State
  • Reader
  • Combining Effects

Case Study

  • TBD

Coding Exercise

Functional Architecture

  • Modern Architecture for FP
  • Reified Computation & Deferred Evaluation
  • Compositional Evaluators
  • Optimization Techniques
  • Purely Functional Mocking

Libraries and DSLs

  • Custom control structures with by-name parameters
  • Building well-designed libraries and internal DSLs

Functional Exception Handling

  • Traditional exception handling
  • Functional exception handling
  • Using Try with For comprehensions

Final Coding Exercise and Evaluation

Closing Remarks

Requirements

  • Hands on experience in Scala programming
  • Familiarity with pattern matching and traits

Audience

  • Scala programmers who wish to learn the more advanced and nuanced features of Scala
 14 Hours

Upcoming Courses