With the advent of LINQ, C# has gotten a significant exposure to functional programming. However, functional programming in C# is not restricted to the use of extension methods, lambdas and immutable classes. There are a lot of practices that haven't been adopted as widely because there's not much of native language support for them in C#. Still, they can be extremely beneficial should you incorporate them into your day-to-day work. This course, Applying Functional Principles in C#, will show them to you. You will learn the fundamental principles behind functional programming, why they are important and how to apply them in practice. Specific topics you'll cover include refactoring to an immutable architecture, avoiding exceptions, primitive obsession, how to handles failures and input errors, and more. By the end of this course, you will have a much more comprehensive understanding of why and how to use functional programming.