Hello and welcome to my course, Learn Advanced modern C++.
In this video, I'm going to give you an overview of the course and tell you what you can expect.
This is called advanced modern C++, but it seems to have rather a flexible meaning on Udemy. And covering
intermediate as well as advanced.
I have tried to design this course so that people with only a fairly basic understanding of C++ can follow
it.
I occasionally need to move myself around the screen to avoid covering up the text.
I hope that is not too distracting!
So what do we mean by Modern C++?
Well, Modern C++ as opposed to Traditional C++, or I think "Older" is the more politically correct term!
The way that a lot of people seem to think of C++ is that it is C with a few extra features. So you
have lots of arrays and pointers from C, and then you stick inheritance on top of that, and maybe a few other
features.
The language was originally called C with classes, and a lot of people still use it that way.
Modern C++ began in 2011.
There was a very substantial revision to the language, which added lots of new features and also many
improvements. And Bjarne Stroustrup, the designer of C++, said at the time,
"It feels like a new language." So it is not just about learning new features, but also about changing
the way that you think about C++ and the way that you write code.
So that is quite a lot. And what you get for all that effort?
Well, Modern C++ allows you to write safer code.
You can avoid all the dangerous C features like explicit pointers, and memory which is allocated
on the heap.
You can get the compiler to generate loops for you, so they are going to be accurate, and not run off
the end of the structure. And you do not need to manage memory yourself.
Modern C++ is more expressive.
It has better abstractions, so you do not need to write as much so-called "boilerplate" code.
That means code which serves no useful purpose, but the language forces you to write it out every time.
There are also local function, lambda expressions. And these make the containers and the algorithms
in the Standard Template Library work together much better.
So with containers, algorithms and lambda expressions, you can avoid writing a lot of explicit loops.
Modern C++ is more efficient.
The program will do more of its work at compile time, so that's just once. As opposed to every time you
run the program.
So that means the program takes less time to run. And you can avoid making copies of temporary data,
which was something that C++ got a lot of criticism for.
If you're trying to convince your manager to switch to modern C++. The benefits are there is less low
level code for programmers to write and to test.
So that means the development time is reduced.
You can get your product to market quicker.
The code is clearer and more expressive, so it is easier to maintain.
The code is more likely to be correct and efficient, so that means fewer defect reports and performance
issues.
And you can avoid many of the situations which cause undefined behaviour.
So that means less crashes and not so much time debugging them.
This course is going to cover C++ 11 and 14. C++ 17 was four years ago, but it is still not fully
supported by all compilers, so we have to stick to the versions, but there is plenty to keep us busy!
We start off by providing the foundation material for this course, so we have things like arrays, but
also strings and vectors, iterators and templates.
And also, we look at the way that you need to think about C++.
So you may think this is all very easy, very basic stuff, and you can just skip through it. But please don't!
There is a lot of material here that you probably have not seen before.
And also there is a lot of important ideas about the way to think about C++.
So once we have covered the necessary material for the course, we can get into the heart of the matter.
The main features of the course will include operator overloading, lambda expressions, inheritance,
exceptions and RAII, which is a very important concept in C++ programming. Move semantics to avoid unnecessary
copying. And compile-time programming, which is one of the main directions in C++ these days. And also
the standard library.
So things like files and streams, the algorithms and containers from the Standard Template Library,
smart pointers, and a lot more than this.
The course consists of videos, each video will cover a small part of one of those topics. In the video,
there will usually be a demonstration, with source code, of how to use the topic, how it works.
You can download the source code for the video.
There are also exercises for the videos, which are very simple. They basically just ask you to repeat
whati s in the video. Which is important reinforcement. So do not skip that!
And of course, solutions for those. At the end of each of the sections, there is going to be a workshop.
So this can cover material from all the section and other parts of the course.
The exercises are going to be more challenging. And you will get solutions for those as well.
I regard providing support as a very important part of the course.
I take great pride in providing good support.
So if you have any questions or if you encounter any difficulties, please get in touch.
Use the Q&A for the video or send me a message.
And if I'm awake and within reach of a computer, I will normally reply within an hour! So I will be
supporting the course very actively.
So that's it for this video, really.
I hope you enjoy the course and find it useful.
And as I say at the end of each video, keep coding! Because it is not enough just to sit there and watch
the videos.
You have to type in the code yourself, then experiment with it.
Change things, add new features.
See what happens.
See how you can break it. And so on.
So I'll see you next time.
But until then, keep coding!