FOUNDATIONS OF FUNCTIONAL PROGRAMMING IN SCALA
Master functional Scala and take your career
and your skills to a whole new level
Foundation of Functional Programming in Scala is a comprehensive, self-paced online course with no prerequisites, which helps you to become a confident, productive, and powerful functional Scala developer.
The course comprehensively covers the foundations of functional programming in Scala, including functional data modeling, functions and how to combine them, generic types and generic functions, and performing actions with external systems in a testable way. The focus of all material is on solving real-world problems in a practical and pragmatic way.
With simple explanations that are free of confusing jargon, professionally produced HD videos, skill-building exercises with full solutions, and beautiful infographics that demystify complex concepts, this course allows you to unlock your full potential as a functional Scala developer.
“Julien explains the practical benefits of functional Scala beautifully. I recommend his course for experienced and junior developers!”
“Julien’s course is incredibly thoughtful and well-structured, and we all can’t wait to have him back for even more advanced training!”
“Coming from 10 years of object-oriented programming, I found functional programming very alien and difficult. Doing a 2-day course with Julien Truffaut has helped me grasp core concepts and use them in my day job. I’d recommend Julien’s courses to anyone interested in functional programming, from beginner to those wanting to perfect their skills!”
Just completed the Generic functions module. Loved every minute and exercise. High quality, well-paced content. Julien imparts so much knowledge, not just Scala, but API design, writing readable and maintainable code, and more. Highly recommended, lots of value, @JulienTruffaut https://t.co/1pwKXV8hPk
— Deenar Toraskar (@DeenarToraskar) October 21, 2020
IMHO this course provides one of the best online learning experiences, check it out if you want to improve your Scala FP skills! Great job Julien! https://t.co/5JYKB4FoI6
— Julien Richard-Foy (@julienrf) October 20, 2020
The course looks really good, I had the opportunity to look at one of the lessons in it and it was very well-explained, well-paced and full of information!
— diverging impostor expansion (@kubukoz) October 20, 2020
Lots of value for a reasonable cost. https://t.co/db8Bh9layZ
We just finished a two days training on Foundations of Functional Programming with @JulienTruffaut at @autoscout24
— Martin Lechner (@m4nl5r) November 24, 2020
I can fully recommend this particular training and Julien as a trainer.
Very hands on, focussed on solving business problems with fp!
Try it risk-free
In this section, we'll do a deep dive into the different types of functions available in Scala. We’ll discuss what the difference is between them and when we should use each one.
_
(the underscore character)In Scala, we make functions and data types generic by adding type parameters. This simple technique has a tremendous impact on the design of functional APIs and we'll use it extensively throughout the course. In this section, we will learn how to read and implement interfaces using generic types as well as how to avoid the common pitfalls related to type parameters.
Modern applications need to process more and more data in a short amount of time, which has led to the creation of technologies such as MapReduce, Spark and Kafka. In this section, we will cover the fundamentals of parallel data processing and learn why functional programming is such a good fit for it. We'll conclude this module with the analysis of a real-world dataset on global average temperature.
What is functional programming all about? What is the single most important idea behind it? What are its limitations? And why isn't it more popular? You will get the answers to all these questions and much more in this module.
In the previous section, we will have learned that functional programming is quite restrictive. For example, we cannot perform actions like sending an email or updating a record in a database. Yet, we need to perform these actions almost daily in our real-world applications. In this section, we will discuss the workarounds functional programmers use to interact with the outside world while respecting functional programming principles. In particular, we will implement a simple IO data type that supports powerful retry strategies and concurrency primitives.
There are many ways to deal with runtime errors. The easiest and most common method consists of throwing exceptions. Unfortunately, this is incompatible with the functional programming paradigm. In this module, we will look at the problems caused by exceptions, and the ways in which we can safely deal with errors in Scala.
Before you start
FREE PREVIEWGeneric functions - part 1
Generic functions - part 2
Quiz: Generic functions
Exercise 1: Pair
Exercise 2: Predicate
Exercise 3: JsonDecoder
Introduction
FREE PREVIEWIteration with for loops
Quiz: for-loop
Recursions
Quiz: recursions
Analysis of global temperature: Part 1
FREE PREVIEWAnalysis of global temperature: Part 2
Quiz: MonoFoldParam
Analysis of global temperature: Part 3
Analysis of global temperature: Part 4
Analysis of global temperature: Part 5
Introduction
Functions in Functional Programming
FREE PREVIEWQuiz: Is it an FP function?
FREE PREVIEWRefactoring
FREE PREVIEWManaging Complexity
FREE PREVIEWDealing with Optional Values
FREE PREVIEWPattern Matching & Reflection
Conclusion
Introduction
Console exercises - Testing
Console exercises - Error handling
Evaluation
Console exercises - retry & onError
Console exercises - Code organisation
IO
IO exercises - Composition
IO exercises - For comprehension
IO exercises - Error handling
IO exercises - Clean up
Search flight exercises
Search flight exercises - traverse & sequence
Concurrent IO
Non-Blocking IO
Conclusion
Introduction
Option
Either
Either - Combining errors
Variance
Either - Error hierarchy
Validation
Order project
Order project - Domain modelling
Conclusion
Ad-hoc polymorphism
I am a backend engineer with more than 10 years of experience in companies of all sizes, from start-ups to tech giants like Amazon.
For the last 5 years, I have been running functional programming training workshops with great success. I focus my training on simple functional programming techniques that deliver massive value to companies.
I am the author of the popular open-source library Monocle, an optics library that helps functional Scala developers easily traverse, transform, and access deeply nested data structures.
Subscribe to my newsletter to learn about functional Scala and be notified about new courses!