Online course
We are now in the Functional Programming age and many Object-Oriented Programming languages have embraced at least some parts of the Functional Programming paradigm.
Many developers are eager to use this new paradigm but they’re still struggling on how to switch from OOP design to FP design.
Is it possible to keep using the 4 Rules of Simple Design even when using Functional Programming paradigm in order to simplify the design of your application?
In this online course with Uberto Barbini, we will learn how to proceed from a typical OO Hexagonal design to a purely functional one with concrete examples.
Notions such as Categories, Functors and Monads will naturally emerge from our code and we will discuss them thoroughly.
Target Audience
The ideal participant has a good experience with Object Oriented programming and some exposure to Functional Programming but wants to know more.
No special knowledge of functional libraries or languages is required.
Program
The main goal of the course is to teach how to model your application using morphisms and categories rather than object-oriented stateful entities.
It’s important to understand that functional programming is about mindset and reasoning, not languages and tools.
Topics
- Introduction to functional programming
- The basis of Category Theory
- Generics as data builder
- Higher Order Functions
- Monoids and Monads
- Laziness and ADT.
Agenda
Module 1 (or first session – day one)
- The 4 principles
- Introduction to functional programming
- Morphisms and Categories
- Exercise Kata
- Designing with Categories
- Using Functors
- Homework.
Module 2 (or second session – day two)
- Discussion of homework
- Advanced examples
- How to integrate with legacy code
- Functional Concurrency
- Functional Testing
- Functional Debugging.
Learning Objectives
By the end of the workshop, you will…
- Know how to apply 4 principles of simple design to functional programming
- Be able to model a problem using transformations in a pure functional way
- Be able to practice the concepts learn right away in your day-to-day job
- Have a better understanding of Category Theory concepts
- Have written a fair amount of functional code.
Expect to get your hands dirty
In this course, we will take a full hands-on approach to functional programming and category theory.
Participants are expected to solve some coding and design exercises and to work on their own on a homework assignment between the two sessions.
We believe that the best way to learn something is to practice it yourself, so the whole course is task-oriented, with practical exercises.
On the second day, there will be space for discussion on problems brought from participants, so if you have encountered problems trying to adopt functional programming, please have them ready as we’ll be discussing them.