The teams at Karumi and 47 Degrees are proud to bring you a new training course - Kotlin, from Zero to Functional Programming presented in Spanish in Madrid this March 12th - 15th at the Karumi Headquarters.
The course is geared towards developers interested in learning Kotlin and Functional Programming and was formed combining our years of expertise. The training course consists of four, eight-hour days and covers a lot of ground, but will be paced so students can absorb the material and leave with a strong understanding of Kotlin, Arrow, and Functional Programming and how to apply these tools in their real-world projects.
Sergio Gutiérrez from Karumi will be leading the first section of the course, while Raúl Raja and Tomás Ruiz from 47 Degrees will be leading the second portion of the training covering Functional Programming in Kotlin with the Arrow open source library.
The course is comprised of 32-hours of material designed to take you from zero knowledge, to the ability to use Functional Programming in Kotlin with Arrow to build functional apps.
Introduction to Kotlin
- Dates: March 12th - 13th
- Trainer: Sergio Gutiérrez
The first 16-hours of the course will kick start the use of the Kotlin Programming language by introducing the following concepts:
- Types: No more primitive types, Any, Unit
- Constants and variables: val/var
- Control flow: if, when, while, for
- String templates
- Functions: anonymous functions, default parameters, named arguments, tail recursion
- Classes: constructors, objects, properties, fields, inheritance, visibility
- Data classes
- Sealed classes
- Enum classes
- Collections: Mutable and immutable, Maps, Lists, Arrays
- Extensions: of Generics, of Collections, extended properties
- Operators: Overloading, inline methods
- Coroutines: Async/await
- Property delegation
Then, after trainees are comfortable with Kotlin, they’ll learn about Functional Programming and how to integrate FP concepts into the language by using the Arrow open source library.
What is Functional Programming?
- Dates: March 14th - 15th
Trainers: Raúl Raja & Tomas Ruíz
- Introduction to Functional Programming in Kotlin
- Pure Functions
- Referential Transparency
- The Substitution Model
- Higher Order Functions
Domain modeling with Algebraic Data Types
- Data classes and product types - Sealed classes and co-product types
Basic Error Handling and Data validation
- Option - Try - Either - Validated - Fail Fast and Error accumulating Failure modes
Working with Immutable Data with Optics
- Focusing on deeply nested data with Lens, Prism and Optional - Removing boilerplate with the Optics DSL
Types of higher kind
- Introduction to polymorphic programs - What are Higher Kinded Types? - Polymorphic functions - Generalized Algebraic Data Types - Generalizing folds and unfolds with Recursion Schemes
Programming with the core functional type classes
- Modeling Generic Behaviors with Type Classes - Transforming data with Functor - Independent computations with Applicative - Dependent Computations with Monad - Folding structures into summary values with Foldable - Traversing nested effects - Lawful and Lawless instances
Polymorphic Error Handling
- Modeling and raising errors - Fail Fast and Error Accumulating strategies with ApplicativeError and MonadError
The issue of nested effects and monad transformers
- Dependency Injection alternative with Reader, Kleisli, Extension Functions - Removing Callback-Hell and nested lambdas - Encoding alternatives with Free Monads and Stack Safe Free Algebras - The rise of Tagless Final
Working with Tagless Final & Async Effects
- Suspending side effects for deferred evaluation - Safe resource acquisition and release - Integrating with third-party sync and async libraries - Testing Effectful Tagless Final programs
There are only sixteen spots available for this course. We will have six Early-Bird tickets available at a discounted rate. Grab one before they’re gone! Reserve your spot.