Functional Design Patterns Course

Functional Design Patterns Course

Learn how to improve your design using Functional Programming

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.


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.


  • Introduction to functional programming
  • The basis of Category Theory
  • Generics as data builder
  • Higher Order Functions
  • Monoids and Monads
  • Laziness and ADT.


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.


Is there anything I need to do before the workshop?
In order to fully benefit from this workshop, you could watch some videos of related talks (a list will be given in advance).
You could also give a look at the Kotlin languages: example discussed are in Kotlin, there will be explanations but a bit of familiarity with the language would be beneficial. Your own exercises and homework can be done in any language.

What language will this workshop be in?
In English.

Anything to do prior to the workshop (books to read, stuff to install)?
You need a computer with a developing environment ready for your language of choice.

Practical Info

Language: English

Length: 2 hours + 2 hours
Laptop and setup: Check out the FAQ section

Uberto Barbini

Uberto è un programmatore poliglotta e consulente indipendente, con oltre 20 anni di esperienza nella progettazione e realizzazione di prodotti software di successo. Attualmente collabora con alcune enti finanziarie di Londra.

Programmatore appassionato e riconosciuto nelle community italiane e internazionali, partecipa di frequente a eventi pubblici come speaker, scrive di temi tecnici.

Chi siamo, in breve :)

Avanscoperta è un ecosistema in espansione fatto di professionisti con una grande passione per l’apprendimento: ci piace imparare cose nuove e scambiare esperienze e idee, esplorando territori finora inesplorati in ambito software, nella sua accezione più ampia possibile.

Selezioniamo con attenzione gli argomenti più rilevanti e i migliori docenti da tutto il mondo, e diamo particolare importanza alle tecniche di insegnamento, preferendo approcci pratici e coinvolgenti.
Unisciti a noi! ?

Ti interessa questo corso?

Se hai delle domande specifiche, o vuoi ricevere maggiori informazioni, scrivici. Saremo felici di risponderti!


    Vuoi ricevere una volta a settimana i nostri contenuti esclusivi su tecnologia, sviluppo software, business e design?


    Iscriviti alla newsletter!