Functional programming with F#

Functional programming is being increasingly used in domains such as finance, gaming and web and mobile development. It makes solving complex problems simpler and allows developers to easily write maintainable and robust code. In this hands-on training you will learn how and why to write real world functional programs on the .NET platform with the F# language.

Audience:

You have development experience on the .NET platform and (preferably) the C# language. Now you are interested to learn another programming paradigm next to object oriented programming and get familiar with the F# language.

Course Outline:

Module 1 - Introduction to functional programming

  • Why learn functional programming?
  • Functional concepts
  • Comparison to OO programming

Module 2 - The F# language

  • Basic syntax
  • Functions
  • Types and the typesystem

Module 3 - More advanced functions

  • Recursive functions
  • Lambdas
  • Nested functions
  • Function composition

Module 4 - Working with collections and data

  • Immutability
  • Map, filter and fold
  • Introduction to Type providers for data querying and processing

Module 5 - Error handling

  • Exceptions
  • Fault handling in a functional way

Module 6 - OO concepts in F#

  • Use your F# code in a C# project (and vice versa)
  • Interfaces
  • Mutable classes

Module 7 - Domain modelling

  • Introduction to DDD with F#
  • Creating DSLs

Module 8 - Asynchronous and concurrent programming

  • Non-blocking functions
  • Async workflows
  • Agent based programming

About the instructor: Ronald Harmsen

Ronald Harmsen is a senior consultant and instructor based in the Netherlands. Ronald has been professionally developing software since 1997 and has chosen .NET as his primary development environment since version 1.0. He has extensive experience in developing web applications with ASP.NET, ASP.NET MVC, WCF, Silverlight and HTML5.

Ronald is passionate about software architecture and improving performance of both applications and development teams. He focuses on building high quality software and is member of the board at the Institute for Software Quality.

Other relevant courses