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.