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
Testimonials (4)
Pushing changes on an ongoing basis, when on the 3rd day I started to get more lost than before and it was harder to spot the error quickly, I was quickly able to check out the latest changes and stay up to date with the material
Paulina
Course - Advanced Java Security
Machine Translated
A large amount of practical knowledge shown in real-life examples.
Kamil - Streamsoft Kraków
Course - Java Advanced
Machine Translated
The teacher addressed many relevant topics for clean coding with practical examples.
Ben van Oeveren - Movella
Course - Clean Code
Very good knowledge and character.