Domain Modeling Made Functional Workshop

Domain Modeling Made Functional Workshop

Domain-Driven Design meets Functional Programming

Functional Programming and Domain-Driven Design might not seem to be a good match, but in fact functional programming can be an excellent approach to designing decoupled, reusable systems with a rich domain model. This workshop will show you why.

This is a hands-on workshop by Scott Wlaschin, author of the book “Domain Modeling Made Functional”, and it’s designed for beginners in functional programming.
You’ll do lots of domain modeling exercises starting with some simple models and then enhancing them with constraints, state machines, error handling, commands and events, and so on.

Target Audience

This workshop is aimed at software developers and it will be especially useful if you are learning functional programming – all concepts used in the workshop will be explained.
Previous development experience is recommended.
No prior knowledge of functional programming required.


  • Introduction to functional programming
  • Functions and types
  • Composition as the fundamental principle
  • Overview of DDD principles
  • The importance of bounded contexts
  • Persistence ignorance
  • Onion/Hexagonal architecture and how this works with functional programming
  • Modeling requirements with algebraic types
  • Records, choices, and functions
  • Modeling constraints
  • Modeling states
  • Programming a workflow
  • Keeping IO at the edges
  • Handling domain errors
  • Composing complex functions
  • Evolving the domain
  • Dealing with changes in requirements

Learning Objectives

By the end of the workshop, you’ll know how to build working solutions with rich domain models, using only functional programming techniques.

Join this workshop by Scott Wlaschin and learn:

  • The concepts of functional programming
  • How to represent the nouns and verbs of a domain using types and functions
  • How to decouple the pure domain logic from the outside world
  • How to ensure that constraints and business rules are captured in the design
  • How to represent state transitions in the domain model
  • How to build a business workflow from smaller components
  • How to handle errors as part of the domain.

Online Workshop – How does it work

The workshop will happen online and in live streaming: the trainer and all other participants will be in a video conference. You’ll be interacting and working together in real-time thanks to a variety of tools you’ll have at your disposal.

The workshop will keep its highly interactive and hands-on spirit despite being online.
This is why we require that all participants keep their webcam on for the whole duration of the workshop: this will enhance the quality of the communication and of the workshop as a whole.
You won’t be sitting at your desk watching slides and videos, and you’ll be engaged in real-time activities for the majority of the time… as if we were in a real classroom!


Do I need to know something beforehand in order to participate in this workshop?
We will be using F# as our development language. No experience with F# needed.

Is there anything I must do before I buy a ticket for this online workshop?
If you have a computer/tablet, a stable connection (at least 20 Mbps in download and 10 Mbps in upload), earphones, a microphone, and a webcam, then you’re ready to join the workshop.
You’ll get detailed information on what tools we’ll be using and how to get ready a couple of weeks prior to the workshop.
Check out your connection’s speed.
The workshop will keep its highly interactive and hands-on spirit despite being online. This is why we require that all participants keep their webcam on for the whole duration of the workshop: this will enhance the quality of the communication and of the workshop as a whole.


This workshop will be confirmed upon reaching the minimum number of participants. We’ll send an official confirmation to all registered attendees 10-15 days prior to the workshop dates.

LAST CHANCE! Are you interested in this course? Please purchase your ticket by Friday, 20 September 2024, to help us confirm it as soon as possible.
If we do not reach the minimum number of participants required to activate it by this date, the course will not be confirmed and will be postponed… don’t wait until the last minute to buy your ticket!

The sooner we reach the minimum numbers necessary for its activation, the sooner we can confirm the course and guarantee its execution.
If the course is confirmed, you will see a green tick on this page that says “confirmed/guaranteed to run”, and you will be able to buy tickets even after this date.

About the workshop

Language: English.
Laptop: Yes, check out the FAQ section.
Maximum number of attendees: 16 participants.
Tools and Workstation: The workshop will take place online and in live streaming by using digital tools. You’ll get detailed information on how to join the online workshop, how to get ready for it and how it will work 10-15 days prior to the workshop.
It is highly recommended that each participant joins the workshop from their own workstation: not sharing one same laptop and/or room with other people will improve the remote experience.

How our tickets work


Under_Cover_Learner Discount SAVE 20%

If you’re paying the ticket out of your own pocket and you don’t have a VAT number, you can get a 20% discount on any tickets and on any ticket tiers!

How? Just enter the Under_Cover_Learner promotional code on the field "Enter promo code" in the section above (before hitting the button "Checkout").

Please note: this code cannot be used in conjunction with any other offers/discount codes, and it applies to any ticket tier.


This course helped me understand the importance of being able to simply but properly and correctly model the domain in code.Joey Samonte

I highly recommend this workshop even if you’re not going to use F# in your daily work.Zvi Avraham

A very grounded workshop valuable to anybody who likes to apply domain modeling to functional programming. It is probably a good inspiration to apply functional programming in the realm of enterprise software.Dirk Dühr

In the past, I’ve been skeptical about the expressiveness of the functional paradigm in complex domains.
To me, Scott has found the right “sweet spot” to introduce FP in a way that can also work for people (like me) that are more interested in the “human side” (Hermeneutics) of software development rather than the pure mathematical one (Formalism).
I would highly recommend the book and the workshop, both called “Domain Modeling Made Functional”!Gabriele Tondi

Great course by Scott Wlaschin for those who are new to Functional Programming and only have small production knowledge on Domain-Driven Design.Luca Gentile

Scott knows his topic by heart and has found a great language to convey complex topics in simple words.
You can feel his joy of functional domain modeling and he makes it enticing to explore and simple to start.Marco Heimeshoff

Scott’s book “Domain Modeling Made Functional” was my personal best technical read of 2019.
The workshop was just as good as I could have expected. It gave me the opportunity to put in practice the concepts from the book and to reach a deeper understanding of the advantages brought by a functional approach to domain modeling. I have a good experience in DDD and domain modeling with OOP.
To me, the functional approach is more than just a programming paradigm shift. It brings expressiveness and clarity about the domain to a whole different level, and I am looking forward to experimenting with this approach in the real world and the incredibly efficient conversations with the domain experts that it will trigger.Cédric Pontet

This workshop made my software engineering world a lot simpler and easy to live in.Chandra Koduru

Great overall experience. The main focus is thinking more in a functional way. This will lead you to better develop your domain model. You’ll learn the Functional Programming basics and you’ll briefly see some advanced features of the functional toolbox.Cosimo Matteini

I loved it! It gave me a new toolset and new mindset to approach problems, even in domains I’m not familiar with.Ivan Morgillo

A great way to get learn many concepts both in the Domain-Driven Design and in the Functional Programming contexts.Emanuele Colombo

Scott Wlaschin

Scott Wlaschin is a developer, architect, and author. He is the author of the popular F# website fsharpforfunandprofit.com, and the book Domain Modeling Made Functional, published by Pragmatic Bookshelf.



Domain-Driven Design meets Functional Programming: Matteo Baglini interviews Scott Wlaschin.


Small Talk: An informal chat with Scott Wlaschin (YouTubeSpotify).

Domain Modeling Made Functional: Scott Wlaschin’s talk at our remote meetup “An Evening with” (29 April 2020).

About us

Avanscoperta is a growing community of professionals learning together, exchanging experiences and ideas, exploring uncharted territories.

We carefully select the most relevant topics and the best trainers and thought leaders worldwide with an eye to the most engaging teaching techniques.
Are you ready to learn with us? ?

Are you interested in this course?

If you have any specific questions, or if you want to receive more information on dates, content or offers about this course, drop us a line. We'll gladly get back to you!


    Get exclusive content from experts in software development, technology, business and design!


    Subscribe to our newsletter!