Scala – Advanced
(C) Copyright Elephant Scale
January 26, 2022
Overview
- Scala may be the next wave in developer productivity. It is concise, object-oriented, functional, and offers support for concurrency, but is compatible with Java and is JVM – based. For this reason, Scala has been attracting the interest of many programming shops. However, these advantages are only possible through an effort of study. The Scala Programming course is designed to help this process through hands-on training.
- This course is teaching Scala on the intermediate and advanced levels. It is targeted for developers who either have a basic knowledge of Scala or have a solid foundation of Java.
- This course teaches how to understand the essence of Scala and write functional programming software that is efficient and “scalaesque” enough.
Goals
- Learn one of the hottest languages
- Be a productive programmer with Scala
- Learn the best software development practices with Scala
Audience
- Developers, architects
Skill Level
- Intermediate-advanced
Duration
- Three days
Format
- Lectures and hands-on labs (50% – 50%)
Prerequisites
- Basic knowledge of Scala, or
- Scala introductory course, or
- Good knowledge of Java
Lab environment
-
For local environment
- JDK 8 or higher
- Scala
- Scala programming IDE, such as IntelliJ IDEA (recommended), Eclipse, or NetBeans.
-
If virtual machines are used
- Zero Install: There is no need to install software on students’ machines!
- A lab environment in the cloud will be provided for students.
Students will need the following
- A reasonably modern laptop with unrestricted connection to the Internet. Laptops with overly restrictive VPNs or firewalls may not work properly.
- A checklist to verify connectivity will be provided
- Chrome browser
Detailed outline
About Scala 3
- An Introduction to Scala 3
- Scala vs. Java
Understanding Types in Scala
- Type declarations
- Type aliases
- Parameterized types
Functions and collections
- Ways to define a function
- Polymorphism
- Recursion
- Tail recursion
- Collections and higher order functions
Implicits and Type Classes
- Getting to Know Implicits and Type Classes
- Types of implicits
- View and context bounds
- Type classes
- Implicit scope resolution
Property-Based Testing in Scala
- Introduction to property-based testing
- Properties and Generators
- Test-driven development
Exploring Scala Effects
- Introduction to effects
- Option
- Either
- Try
- Future
- Cats library
- Cats effects
Understanding Algebraic Structures
- Understanding Algebraic Structures
- Introduction to abstract algebraic structures
- Semigroup
- Monoid
- Foldable
- Group
Basic Monads
- Familiarizing Yourself with Basic Monads
- Introduction to monads
- Id Monad
- State monad
- Reader monad
- Writer monad
Monad Transformers and Free Monad
- Look at Monad Transformers and Free Monad
- Combining monads
- Monad transformers
- Free monads
Introduction to the Akka and Actor Models
- An Introduction to the Akka and Actor Models
- Introduction to the actor model
- Akka basics
- Advanced topics
- Testing actors
- Running the application
Building Reactive Applications with Akka Typed
- Introduction
- Akka Typed basics
- Akka Typed – beyond the basics
- Testing
- Running the application
Basics of Akka Streams
- Introduction to Akka Streams
- Basics of Akka Streams
- Testing
- Running the application
- ZIO