Software Design: Functional Programming in C# (The Course)
Minimum price
Suggested price

Course Info

This course includes 1 attempt.

Learn how to write C# code in a functional style. The “Functional Programming in C#” is for you if you want to improve your code, design and architecture. It means you are going to learn how to write code of the high quality: readable, understandable and reliable.

Learn Functional Programming in the context of clean coding and building types of high quality 

  • Get Deep Understanding of what is Functional Programming 
  • Learn how to design Immutable types in C# 
  • Apply new C# 6 and C# 7 features to write better code in a functional style 
  • Learn how to Extend and Compose any Types 
  • Handle Errors and Exceptions in a functional programming style 
  • Tackle the Problem of Null-Values by the means of functional programming 

Foundations of Functional Programming

Despite the fact that C# is primarily an object-oriented language, it is very powerful on features which enable functional programming style. In fact, C# is one of the richest on features language among object-oriented languages in the world nowadays. But with great power comes great responsibility. It's challenging to use all those features in a right way. 

You probably have already heard the following well-known statement: most code sucks. Well, this course is all about how to produce code which doesn't suck. 

Owning skills of producing well-designed and well-implemented types with regards to functional programming principles. 

Content and Overview 

This course is aimed at all the C# developers, from beginners to seniors. Topics which are covered in the course are relevant for all kinds of C# developers since all developers design and implement types. The topics complexity is very different. There are plenty of very simple topics, and at the same time, there are topics which require from you a solid C# background. There are plenty of code examples throughout this course, so you will learn both theoretical and practical material. 

  • We’re going to start with the theoretical foundations of the functional programming paradigm. You’ll learn what is Functional Programming and what are the benefits of applying that paradigm.
  • In the second section, we’re going to elaborate the core concepts of the functional programming. You’ll learn more about immutability, purity, side effects and expressions.
  • To write modern code in a functional style, you need to learn modern C# features appeared in C# 6 and C# 7.
  • We’re going to learn more about immutability in a separate section. This is a very important topic.
  • We’re going to learn how to extend types. You’ll see practical cases, you’ll learn about general extensions needed for functional programming.
  • After mastering the topic of types extending you will face the great problem of exceptions handling. Yep, it's a hard nut to crack. We will start from discussing a question of why we use exceptions as a mechanism of errors handling. And why C# team didn't invent any other mechanisms?
  • In the end, we will look at how to fight with null values. As you may know, Tony Hoar said that the invention of a null value was his billion-dollar mistake.

To sum up, the course covers the following topics: 

  • Theoretical Foundations of Functional Programming 
  • Core Concepts of Functional Programming 
  • Functional Features in C# 
  • Immutability in C# 
  • Extendibility in C# 
  • Dealing with Errors 
  • Dealing with Nulls 


Keywords related to the course: 

  • C# Clean Code 
  • C# Best Practices 
  • Functional Programming in C# 
  • C# Functional Programming 
  • Clean Code in C# tutorial


Course Material

  • About the Course
  • Intro to the Course
  • Introduction into Functional Programming
  • Outline
  • Programming Paradigms
  • Defining Functional Programming
  • Functions Are Everywhere
  • Why Functional Programming
  • Conclusion
  • Core Concepts
  • Outline
  • Immutability
  • Temporal Coupling and Immutability
  • Side Effects
  • Side Effects and Architecture
  • CQS
  • Declarative Programming Style
  • Expressions Over Statements
  • Conclusion
  • Functional Features in C
  • Outline
  • Extension Methods
  • Autoproperties and Immutability
  • Expression-Bodied Members
  • Pattern Matching
  • Tuples Deconstruction
  • LocalFunctions
  • Conclusion
  • Immutability in C
  • Outline
  • Mutable Type
  • External Immutability
  • Internal Immutability
  • Shallow and Popsicle Immutability
  • Builder Design Pattern
  • Evil Mutable Structures
  • Immutability and Memory Pressure
  • Conclusion
  • Extendibility in C
  • Outline
  • Pipelining
  • Extending IDisposable
  • General Extensions
  • Extending StringBuilder
  • Abusing Extenstion Methods
  • Conclusion
  • Dealing with Errors
  • Outline
  • What Does an ‘Error’ Mean
  • Problems with Exceptions
  • Common Misconceptions
  • Exception Handling Strategies
  • CQS Principle
  • Errors and Functional Programming
  • Tester-Doer
  • Pipelining by Method Chaining
  • Conclusion on Exceptions Handling
  • BCL Exception Types
  • Custom Exception Types
  • Conclusion
  • Dealing with Nulls
  • Outline
  • Problems with Nulls
  • Null Object Pattern
  • Maybe Monad in C
  • Automating Null Checks
  • Static Analysis
  • Returning IEnumerables
  • Conclusion


    • I'm thankful enough for that I love what I do.

      I began my career as a postgraduate student participating in Microsoft ImagineCup contest.

      I've been working with .NET platform since 2003. I've been professionally architecting and implementing software for more than 10 years, primarily based on the .NET platform. I'm passionate about building rich and powerful applications using modern technologies. I'm a certified specialist in Windows Applications and Service Communication Applications by Microsoft. I'm one of the coordinators of the MskDotNet User Group in Moscow.

      "If it's work, we try to do less. If it's art, we try to do more." - Seth Godin.

      What I can say is that software is my art.

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

80% Royalties. Earn $16 on a $20 book.

We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earnedover $13 millionwriting, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub