Getting Started, Basics, Domain Modeling-Getting Started
Introduction
()
Working on Assignments
Tools Setup (Please Read)
Scala 3 REPL and Worksheets
Getting Started, Basics, Domain Modeling-Basics
Elements of Programs
()
Types
()
Methods and Parameters
()
Conditions
()
Evaluating Definitions
()
When Evaluation Fails
Getting Started, Basics, Domain Modeling-Domain Modeling
Domain Modeling
()
Case Classes
()
Sealed Traits
()
Enumerations
()
Business Logic
()
Standard Library, Loops-Collections
First Steps With Lists
()
Functions
()
Short Syntax for Functions
More Operations on Lists
()
Introducing Collections
()
Constructing Collections
()
Querying Collections
()
Transforming Collections
()
Sequences and Maps
()
Option
()
Collections Extra
()
Standard Library, Loops-Loops
Introducing Loops
()
More Loop Examples
()
Tail Recursion
()
“for” Syntax
()
Build Tools, Modules-Tooling
Organize Code
()
Build Tools
()
Introduction to the sbt Build Tool
()
sbt, Keys, and Scopes
()
Program Entry Point
()
Build Tools, Modules-Modules
Encapsulation
()
Extending and Refining Classes
()
Case Classes vs Simple Classes
()
Opaque Types
()
Extension Methods
()
Reasoning About Code-Reasoning About Code
Reasoning About Code
()
Refactoring-Proof Programs
()
A Case for Side-Effects
()
Mutable Objects
()
Reasoning About Code-Interlude: Phone Mnemonics
Interlude: Phone Mnemonics
Reasoning About Code-Testing
Unit Testing
()
Property-Based Testing
()
Mocking
()
Integration Testing
()
Testing the Tests
()
Debugging Programs
()
Type-Directed Programming-Type-Directed Programming
Motivation
()
Context Parameters
()
Given Definitions
()
Priorities Between Given Definitions
()
Type Classes
()
Conditional Given Definitions
()
Type-Directed Programming in Scala 2
Type-Directed Programming-Extension Methods and Implicit Conversions
Type Classes and Extension Methods
()
Implicit Conversions
()
Error Handling, Concurrent Programming-Error Handling
Error Handling
()
Error Handling with Try
()
Manipulating Try Values
()
Validating Data
()
Manipulating Validated Values
()
Combining Try and Either
()
Follow the Types
Error Handling, Concurrent Programming-Asynchronous Programming
Concurrent Programming
()
Operations on Type Future
()
Examples with Future
()
Execution Context
()