Functional Programming using C
What you’ll learn
You will be able to write code that is easy to understand and almost self-documenting.
You will be familiar with the background of functional programming, understand the fundamental differences of functional solutions compared to imperative ones.
You will be able to solve programming problems elegantly by composing functional tools only or mixing them with other paradigms.
You will spend much less time debugging your real-world applications because of their increased run-time safety.
You will be able to utilize multiple CPUs to improve the performance of your applications.
Your understanding of functional programming will help in other languages too. And it will expand your horizon regarding software engineering in general.
You should have some experience in programming with C++.
Previous experience with functional programming is not necessary.
A C++14-compatible compiler is needed.
Controlling complexity is one of the biggest challenges a developer faces. Functional programming helps tremendously with this and thus becomes more and more popular, even in originally imperative and object oriented languages like C++. This course will help you increase your productivity by teaching how to write functional C++ code that is easy to understand, test and reuse.
After mastering the basic building blocks of functional programming, you will learn how to think functionally and solve everyday programming problems in an elegant way. Every provided coding exercises comes with an exemplary solution.
At the end of this course you will be able to use the functional approach to write application code that is extraordinarily robust and pleasant to work with.
And as a bonus, all the concepts you have learned will not only help you when using C++, but are applicable to other programming languages too and will expand your horizon regarding programming in general.
Section 1: Functional programming basics
Lecture 1 Introducing functional programming
Lecture 2 Correctness follows from expressiveness
Lecture 3 Type annotations
Lecture 4 Advantages of certain restrictions
Section 2: Developing functional solutions
Lecture 5 Programming challenge: Parse and product
Lecture 6 Lambdas and closures
Lecture 7 Programming challenge: Longest edge of polygon
Lecture 8 The problem with comments
Lecture 9 High-level expressiveness and concise code
Lecture 10 Currying and partial function application
Lecture 11 Forward application
Lecture 12 Programming challenge: An SQL analogy
Lecture 13 Function composition
Lecture 14 Programming challenge: Interacting with the command line
Section 3: Thinking functionally
Lecture 15 Structuring your project cleanly
Lecture 16 Memoization
Lecture 17 Monoids
Lecture 18 Error handling
Lecture 19 Functors
Lecture 20 Monads
Section 4: Functional C++ in everyday usage
Lecture 21 Refactoring
Lecture 22 Testing
Lecture 23 Performance and profiling
Lecture 24 Multithreading
Lecture 25 OOP Design patterns vanishing
Lecture 26 Libraries
Lecture 27 Outlook and conclusion
This course is for all C++ developers (intermediate and advanced) who want to improve the quality of the C++ code they produce by learning about and applying functional programming principles.
Udemy | English | 1h 34m | 342.92 MB
Created by: Tobias Hermann