Software Design Functional Programming in C

Learn the principles of Functional Programming & how to apply them with the power of C# to improve software architecture
Software Design Functional Programming in C
File Size :
1.12 GB
Total length :
4h 6m



Engineer Spock


Last update

Last updated 7/2020



Software Design Functional Programming in C

What you’ll learn

Design and Implement Immutable Types
Implement Useful Extension Methods
Write Pure Functions (avoiding side effects)
Handle Errors in a Functional Style
Tackle with the Problem of Null-values in a Functional Style

Software Design Functional Programming in C


Understand the Basics of C#
Visual Studio 2017 Community Edition


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.Teaching Approach

No fluff, no ranting, no beating the air. I respect your time. The course material is succinct, yet comprehensive. All important concepts are covered. Particularly important topics are covered in-depth.Take this course and you will be satisfied.

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


Lecture 1 How to Ask Questions

Lecture 2 Download Source Code

Lecture 3 Join .NET Community of Students

Section 1: Introduction to Functional Programming

Lecture 4 Outline

Lecture 5 Programming Paradigms

Lecture 6 Defining Functional Programming

Lecture 7 Functions are Everywhere

Lecture 8 Why Functional Programming

Lecture 9 Conclusion

Section 2: Core Concepts

Lecture 10 Outline

Lecture 11 Immutability

Lecture 12 Temporal Coupling and Immutability

Lecture 13 Purity and Side Effects

Lecture 14 Side Effects and Architecture

Lecture 15 CQS and Side Effects

Lecture 16 Declarative Programming Style

Lecture 17 Expressions with Operators

Lecture 18 Conclusion

Section 3: Functional Features in C#

Lecture 19 Outline

Lecture 20 Extension Methods

Lecture 21 Autoproperties and Immutability

Lecture 22 Expression-Bodied Members

Lecture 23 Pattern Matching

Lecture 24 Tuples and Deconstruction

Lecture 25 Local Functions

Lecture 26 Conclusion

Section 4: Immutability in C#

Lecture 27 Outline

Lecture 28 A Mutable Type

Lecture 29 External Immutability

Lecture 30 Internal Immutability

Lecture 31 Shallow and Popsicle Immutability

Lecture 32 Builder Design Pattern. Immutability and Testability

Lecture 33 Immutability of Structures

Lecture 34 Immutability and Memory Pressure

Lecture 35 Conclusion

Section 5: Extendibility in C#

Lecture 36 Outline

Lecture 37 Pipelining

Lecture 38 Extending IDisposable

Lecture 39 Extending StringBuilder

Lecture 40 General Extensions

Lecture 41 Abusing Extension Methods

Lecture 42 Conclusion

Section 6: Dealing with Errors

Lecture 43 Outline

Lecture 44 What does an “Error” Mean?

Lecture 45 Problems with Exceptions

Lecture 46 Practical Considerations Regarding Exceptions

Lecture 47 Exception Handling Strategies

Lecture 48 CQS Principle

Lecture 49 Tester-Doer Pattern

Lecture 50 Errors and Functional Programming

Lecture 51 Pipelining by Method Chaining

Lecture 52 Conclusion on Errors Handling

Lecture 53 BCL Exception Types

Lecture 54 Custom Exception Types

Lecture 55 Conclusion

Section 7: Dealing with Nulls

Lecture 56 Outline

Lecture 57 Problems with Nulls

Lecture 58 Null Object Pattern

Lecture 59 Maybe (Option)

Lecture 60 Automating Null Checks

Lecture 61 Static Analysis

Lecture 62 Returning IEnumerables

Lecture 63 Conclusion

Lecture 64 BONUS Lecture

Anyone who wants to write better code,Anyone who’s not familiar with Functional Programming

Course Information:

Udemy | English | 4h 6m | 1.12 GB
Created by: Engineer Spock

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top