Functional Programming using C++
4.6 (17 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
136 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Functional Programming using C++ to your Wishlist.

Add to Wishlist

Functional Programming using C++

Write more robust and easier to maintain C++ code than ever before.
Bestselling
4.6 (17 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
136 students enrolled
Created by Tobias Hermann
Last updated 6/2017
English
Current price: $10 Original price: $25 Discount: 60% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 1.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I 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 and 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 than C++ too. And it will expand your horizon regarding software engineering in general.
View Curriculum
Requirements
  • You should have some experience in programming with C++.
  • Previous experience with functional programming is not necessary.
Description

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.

Who is the target audience?
  • 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.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
27 Lectures
01:35:14
+
Functional programming basics
4 Lectures 24:13

You will learn the differences to imperative programming and why they matter.

Preview 08:22

Introducing functional programming
5 questions

You will see how even at the most basic level, your code can be improved immediately and how this renders some types of bugs impossible. Additionally you will be introduced to FunctionalPlus.

Preview 08:35

You will learn about the semantics of type annotations and why they are very useful.

Type annotations
05:25

Type annotations
3 questions

This lecture will highlight different benefits following from purely functional code.

Advantages of certain restrictions
01:51
+
Developing functional solutions
10 Lectures 25:33

We will dive into a specific programming challenge and get a feel for concise code by writing in a functional style.

Programming challenge: Parse and product
02:43

You will learn to create and use anonymous functions and how to capture objects by value and by reference.

Lambdas and closures
02:43

Lambdas and closures
2 questions

This time we will develop a very expressive and elegant solution to the task of finding the longest edge of a polygon.

Programming challenge: Longest edge of polygon
02:47

You will see how something done with very good intentions can actually have a negative value.

The problem with comments
02:33

We will see if we can do even better than our previous solutions to the challenges and also solve something new.

High-level expressiveness and concise code
01:21

These two key concepts of functional programming will make our code even more concise and clear.

Currying and partial function application
03:30

You will learn how chained data transformation can be expressed in a nice and readable way.

Forward application
02:23

We will develop an example illustrating the similarities of functional programming and querying a database.

Programming challenge: An SQL analogy
01:13

We will check out how we can glue functions together in an even more concise way.

Function composition
02:57

We will develop two small command line tools and extract a useful reusable higher-order function from our code.

Programming challenge: Interacting with the command line
03:23
+
Thinking functionally
6 Lectures 24:21

You will learn how to think functionally from the start when confronted with bigger, real-life programming problems.

Structuring your project cleanly
01:23

You will see one of the advantages of higher-order functions and pureness in action.

Memoization
02:22

Once you know them, you will recognize them almost everywhere.

Monoids
04:20

You will see how different error handling strategies arise and learn about their particular pros and cons.

Error handling
04:16

Functors - what they are are and how this concept helps us on our quest for good code.

Functors
03:01

In case you heard that monads are complicated, forget about it. You will not only see how they develop naturally, you will even learn how to implement one on your own.

Monads
08:59
+
Functional C++ in everyday usage
7 Lectures 21:07

You will see how easy it is to refactor functional code, and how you can efficiently mix it with object orientated parts, even in an existing legacy code base.

Refactoring
03:31

Writing unit tests for pure functions is great.

Testing
01:07

You will see how performance bottlenecks can be identified.

Performance and profiling
05:15

Modern applications often have to handle many requests simultaneously or need to scale to multiple CPUs to increase performance. You will learn how to manage these demands in a straightforward way.

Multithreading
03:50

If you have the feeling that some classical object oriented design patterns are unnecessary convoluted, you are right. You will utilize your new functional programming skills to make some of them vanish into thin air.

OOP Design patterns vanishing
04:39

Functional programming seems to have a bright future in the C++ community. You will learn about available libraries and how your new skills are universal in regards to them.

Libraries
01:44

Finally we will have a look at how the C++ standard might change in the future and how C++ will provide more and more functional tools out of the box.

Outlook and conclusion
01:01
About the Instructor
Tobias Hermann
4.6 Average rating
17 Reviews
136 Students
1 Course
Software engineer working in computer vision

Tobias Hermann is using functional programming in C++ on a daily basis in professional and private projects. He is the main developer of FunctionalPlus, a publicly available C++ library facilitating functional programming in C++. He currently works in the computer vision industry where he develops high performance image recognition software in C++. His experience in teaching the functional programming paradigm face to face and in articles enables him to help you develop the skills needed to become productive with this approach.

Other interests of him include deep learning, game development and different programming languages like Python, Haskell and Elm.