Data Engineering - Intermediate

Scala

Master Scala 3 through a progressive path from language foundations to type-safe, tested, and production-ready data applications.

This module can be taken independently, in any order.

Community

Course overview

A complete Scala 3 course for developers who already understand basic programming. Learners build strong language foundations, immutable transformations, precise domain models, reusable abstractions, controlled asynchronous workflows, and a production batch validation service.

Standalone unit guides

Every unit is designed to be followed independently: review the guide, complete the lessons in order, finish the practical lab, pass the checkpoint, and deliver the unit project.

1. Getting Started with Scala 39 lessons

Prerequisites: Python Basics or equivalent programming experience.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Getting Started with Scala 3.

Unit project

Mini-Project: Command-Line Welcome Application

Lesson sequence

  1. What Scala Is and Where It Fits - Free preview
  2. Understanding Scala, Java, and the JVM
  3. Installing the Scala Development Environment
  4. Creating a Reproducible sbt Project
  5. Understanding the Scala Project Structure
  6. Running Code in the REPL and Source Files
  7. Writing Your First Scala 3 Application
  8. Reading Compiler and Runtime Errors
  9. Mini-Project: Command-Line Welcome Application
2. Values, Types, and Expressions10 lessons

Prerequisites: Completion of Chapter 1.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Values, Types, and Expressions.

Unit project

Mini-Project: Measurement Conversion Tool

Lesson sequence

  1. Declaring Immutable Values with val
  2. Using Controlled Mutation with var
  3. Type Inference and Explicit Type Annotations
  4. Working with Integers and Floating-Point Values
  5. Using BigDecimal for Exact Calculations
  6. Working with Strings, Characters, and Booleans
  7. Formatting Values with String Interpolation
  8. Understanding Expressions, Blocks, and Unit
  9. Parsing and Converting Values Safely
  10. Mini-Project: Measurement Conversion Tool
3. Control Flow and Pattern Matching10 lessons

Prerequisites: Completion of Chapter 2.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Control Flow and Pattern Matching.

Unit project

Mini-Project: Configurable Pricing Rules Engine

Lesson sequence

  1. Boolean Logic and Comparison Expressions
  2. Making Decisions with if and else
  3. Understanding Expression-Oriented Control Flow
  4. Introducing match Expressions
  5. Matching Literal Values and Wildcards
  6. Adding Conditions with Pattern Guards
  7. Repeating Operations with Ranges and for
  8. Using while Inside Controlled Mutation Boundaries
  9. Choosing the Appropriate Control Structure
  10. Mini-Project: Configurable Pricing Rules Engine
4. Functions and Functional Foundations10 lessons

Prerequisites: Completion of Chapter 3.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Functions and Functional Foundations.

Unit project

Mini-Project: Functional Text Processing Toolkit

Lesson sequence

  1. Defining and Calling Functions
  2. Understanding Parameters and Arguments
  3. Default and Named Parameters
  4. Return Types and Unit Functions
  5. Local Functions and Scope
  6. Function Values and Lambda Expressions
  7. Writing Higher-Order Functions
  8. Understanding Closures
  9. Currying and Partial Application
  10. Mini-Project: Functional Text Processing Toolkit
5. Immutable Collections and Data Transformations11 lessons

Prerequisites: Completion of Chapter 4.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Immutable Collections and Data Transformations.

Unit project

Mini-Project: Transaction Analytics Pipeline

Lesson sequence

  1. Understanding Scala's Collection Hierarchy
  2. Choosing Between List and Vector
  3. Working with Seq and Array
  4. Enforcing Uniqueness with Set
  5. Storing Key-Value Data with Map
  6. Transforming Elements with map
  7. Selecting Elements with filter and collect
  8. Expanding and Removing Values with flatMap
  9. Aggregating Data with fold and reduce
  10. Grouping and Summarising Data
  11. Mini-Project: Transaction Analytics Pipeline
6. Domain Modeling with Classes and Algebraic Data Types10 lessons

Prerequisites: Completion of Chapter 5.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Domain Modeling with Classes and Algebraic Data Types.

Unit project

Mini-Project: Order Lifecycle Model

Lesson sequence

  1. Defining Classes and Creating Instances
  2. Constructors, Fields, and Visibility
  3. Modeling Immutable Data with Case Classes
  4. Companion Objects and Factory Methods
  5. Defining Closed Domains with Enums
  6. Building Algebraic Data Types
  7. Pattern Matching on Domain Models
  8. Representing Optional Values with Option
  9. Updating Immutable Objects with copy
  10. Mini-Project: Order Lifecycle Model
7. Traits, Composition, and Object-Oriented Design10 lessons

Prerequisites: Completion of Chapter 6.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Traits, Composition, and Object-Oriented Design.

Unit project

Mini-Project: Repository-Based Inventory Service

Lesson sequence

  1. Defining Behavior with Traits
  2. Abstract and Concrete Trait Members
  3. Using Trait Parameters
  4. Composing Behavior with Mixins
  5. Understanding Method Resolution and Linearization
  6. Using open, final, and sealed
  7. Choosing Between Inheritance and Composition
  8. Designing Small and Focused Interfaces
  9. Separating Domain Logic from Infrastructure
  10. Mini-Project: Repository-Based Inventory Service
8. Error Handling, Validation, and Resource Safety10 lessons

Prerequisites: Completion of Chapter 7.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Error Handling, Validation, and Resource Safety.

Unit project

Mini-Project: Typed CSV Validation Service

Lesson sequence

  1. Classifying Expected and Unexpected Failures
  2. Throwing and Catching Exceptions
  3. Representing Fallible Operations with Try
  4. Modeling Recoverable Failures with Either
  5. Creating Typed Domain Errors
  6. Composing Validation with For-Comprehensions
  7. Fail-Fast and Error-Accumulation Strategies
  8. Managing Files and Resources Safely
  9. Translating Infrastructure Failures at Boundaries
  10. Mini-Project: Typed CSV Validation Service
9. Generics and the Scala Type System11 lessons

Prerequisites: Completion of Chapter 8.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Generics and the Scala Type System.

Unit project

Mini-Project: Type-Safe Identifier Library

Lesson sequence

  1. Writing Generic Functions
  2. Creating Generic Classes and Traits
  3. Upper and Lower Type Bounds
  4. Understanding Covariance and Contravariance
  5. Working with Union Types
  6. Working with Intersection Types
  7. Type Aliases and Opaque Types
  8. Modeling Valid States with Precise Types
  9. Understanding Type Erasure on the JVM
  10. Reading Advanced Compiler Type Errors
  11. Mini-Project: Type-Safe Identifier Library
10. Contextual Abstractions and Reusable APIs10 lessons

Prerequisites: Completion of Chapter 9.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Contextual Abstractions and Reusable APIs.

Unit project

Mini-Project: Extensible Data Encoding Toolkit

Lesson sequence

  1. Understanding Contextual Parameters
  2. Declaring Context with given
  3. Requesting Context with using
  4. Finding Context with summon
  5. Introducing the Type Class Pattern
  6. Defining Extension Methods
  7. Organizing Type Class Instances
  8. Deriving Standard Behavior
  9. Avoiding Ambiguous and Hidden Dependencies
  10. Mini-Project: Extensible Data Encoding Toolkit
11. Concurrency, Testing, and Production Tooling12 lessons

Prerequisites: Completion of Chapter 10.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Concurrency, Testing, and Production Tooling.

Unit project

Mini-Project: Asynchronous Enrichment Pipeline

Lesson sequence

  1. Understanding Concurrency and Parallelism
  2. Representing Asynchronous Results with Future
  3. Managing Execution Contexts
  4. Composing Futures Without Blocking
  5. Sequencing and Traversing Asynchronous Operations
  6. Handling Asynchronous Failures
  7. Limiting Concurrency and Protecting Dependencies
  8. Designing Timeouts, Retries, and Idempotency
  9. Writing Automated Tests with MUnit
  10. Testing Asynchronous and Failure Scenarios
  11. Formatting, Static Analysis, and Compiler Warnings
  12. Mini-Project: Asynchronous Enrichment Pipeline
12. Final Project: Production Batch Validation Service12 lessons

Prerequisites: Completion of Chapter 11.

Unit outcomes

  • Apply the Scala 3 concepts introduced in Final Project: Production Batch Validation Service.

Unit project

Final Project Review and Operational Runbook

Lesson sequence

  1. Defining Requirements and Acceptance Criteria
  2. Designing the Application Architecture
  3. Modeling the Domain with Precise Types
  4. Parsing CSV Input Records
  5. Implementing Typed Validation Rules
  6. Separating Accepted and Rejected Records
  7. Creating Deterministic Data Transformations
  8. Implementing Safe and Idempotent Output
  9. Adding Structured Errors, Logs, and Metrics
  10. Writing Unit, Integration, and Boundary Tests
  11. Packaging the Application and Configuring CI
  12. Final Project Review and Operational Runbook
Verified learner reviews

Learner feedback

No published reviews yet. Enrolled learners can submit the first review.