4.60 (33536 reviews)
☑ Learn to program with one of the most powerful programming languages that exists today, C++.
☑ Obtain the key concepts of programming that will also apply to other programming languages
☑ Learn Modern C++ rather than an obsolete version of C++ that most other courses teach
☑ Learn C++ features from basic to more advanced such as inheritance and polymorphic functions
☑ Learn C++ using a proven curriculum that covers more material than most C++ university courses
☑ Learn C++ from an experienced university full professor who has been using and teaching C++ for more than 25 years
☑ Includes Quizzes, Live Coding Exercises, Challenge Coding Exercises and Assignments
Which programming language is often seen as a badge of honor among software developers? C++
Which programming language can you learn that when added to your resume, will often get you a job interview? C++
Which programming language is routinely ranked in the top 5 programming languages by popularity, and been consistently in the top 10 for close to 20 years? C++
Why you should learn C++
Much, if not most of software written today is still written in C++ and this has been the case for many, many years.
Not only is C++ popular, it is also a very relevant language. If you go to GitHub you will see that there are a huge number of active C++ repositories and C++ is also extremely active on stack overflow.
There are many, many leading software titles written entirely or partly in C++. These include the Windows, Linux and Mac OSX operating systems!
Many of the Adobe products such as Photoshop and Illustrator, the mySQL and MongoDB database engines, and many many more are written in C++.
Leading tech companies use C++ for many of their products and internal research and development. These include Amazon, Apple, Microsoft, PayPal, Google, Facebook, Oracle and many more.
Can you see how learning C++ will open up more career opportunities for you?
If more professional companies are using C++, it stands to reason that there is going to be more of a demand for C++ programmers.
But the main reason programmers should probably learn C++ is because it is so powerful!
What do I mean by powerful?
C++ is super fast, and is a general purpose programming language that supports both procedure and object oriented programming making it very flexible.
It can scale easily. And it can be portable as well.
C++ can do many things that other languages just can't.
That's why nearly every major language has a way to interface with code written in C++.
Since C++ has influenced so many languages, if you know C++ you'll likely see elements from C++ in new languages you learn.
How can a beginner learn C++ ?
Find a good course, taught by an instructor with many years of experience in C++ is critical, as is the need for the instructor to have the necessary skills to be able to teach you the language.
Frank Mitropolous, the instructor in this course has been using C++ for over 2 decades and has taught students in both university courses and industry training courses. He even worked on a C++ compiler development project while he was in industry.
So not only will you be learning C++ from an expert C++ programmer, but you'll also be taught by an instructor who has successfully taught at university level for many years.
As a result, you can take this course with confidence, knowing that you will learn C++ the right way, and in the shortest possible timeframe.
Which version of C++ should I learn?
C++ has had many version releases and updates over the years. It's a sad fact that most C++ courses do not teach Modern C++, but focus on old, obsolete versions of C++.
Frank teaches you Modern C++ (specifically C++ 11 and C++ 14).
Learn C++ the right way, with Modern C++, as taught by Frank in this course.
Is C++ difficult to learn?
With all the power and flexibility of C++ comes complexity.
There is no question that C++ is one of the most complex programming languages out there.
But with the right instructor, and the right training, you really can get up to speed with C++ quickly, and that's what this course is all about.
What will I learn in this course?
The course assumes no previous experience with C++ (or even programming in general), and you will end up with the skills to create your own programs in C++.
Key topics covered include.
* Looping with while, do/while for, range-based for statements and recursion
* Performing calculations and displaying results
* Functions
* Pointers
* Using existing classes and creating objects
* Creating your own classes
* Using Basic Standard Template Library classes such as Vector
* Constructors and Destructors
* Copy and Move semantics including Copy constructors, Move constructors, and copy and move assignment
* How to overload operators
* Using inheritance and class hierarchies
* Using Polymorphic functions and dynamic binding
* Using smart pointers
* Using stream I/O
* An introduction to the C++ STL
* An introduction to Exception Handling
* And much more.
How is this C++ course different to other courses?
You will learn Modern C++, for one. Many, perhaps most other courses on Udemy teach you old, obsolete versions of C++. If you are going to learn C++, it's imperitive that you learn the Modern version to maximise your career opportunities and to ensure your skills are up to date.
The course format includes theory and concepts which are then reinforced with live code examples. Often the C++ debugger is used to step through code and analyze variables to better understand the behavior of C++. The instructor also uses a pen tablet to write on the screen and provide even more visual explanations.
You won't find better C++ training anywhere, and you will struggle to find someone with as much industry and training experience than your instructor Frank has.
What do I get out of learning C++ ?
More career options for one! C++ is one of the most popular programming languages used in games development. It's also heavily used in embedded applications. Your investment in time in learning C++ will reward you time and time again with more pay, and more opportunities, and frankly, more fun!
Are you ready to get started?
If you are ready to get that first paid programming job, or to move up to a more senior programming position, then this course is for you!
Your new job or consulting opportunity awaits!
Why not get started today?
Click the Signup button to sign up for the course!
Introduction
About the Course
Why Learn C++?
Modern C++ and the C++ Standard
How does all this work?
FAQ -- Please Read!
Installation and Setup
Installation and Setup Overview
Installing the C++ Compiler on Windows
Installing CodeLite on Windows
Configuring CodeLite on Windows
Installing the C++ Compiler on Mac OSX
Installing CodeLite on Mac OSX
Configuring CodeLite on Mac OSX
Installing CodeLite on Ubuntu Linux
Configuring CodeLite on Ubuntu Linux
Creating a Default CodeLite Project Template (All Versions)
Using the Command-Line interface
Using the Command-Line Interface on Windows
Using the Command-Line Interface on Mac OSX
Using the Command-Line Interface on Linux (Ubuntu)
Using a Web-based C++ Compiler
Using the Included Source Code Course Resources
Curriculum Overview
Curriculum Overview
Overview of the Section Challenge Exercises
Overview of the Section Quizzes
Getting Started
Section Overview
An Overview of the CodeLite Interface
Writing our first program
Building our first program
What are Compiler Errors?
What are Compiler Warnings?
What are Linker Errors?
What are Runtime Errors?
What are Logic Errors?
Section Challenge
Section Challenge - Solution
Section 4 Quiz
Structure of a C++ Program
Section Overview
Overview of the Structure of a C++ Program
#include Preprocessor Directive
Comments
The main() function
Namespaces
Basic Input and Output (I/O) using cin and cout
Using cout and the insertion operator to say Hi to Frank
Using cout and the insertion operator
Using cin and the extraction operator
Section 5 Quiz
Variables and Constants
Section Overview
What is a variable?
Declaring and Initializing Variables
Declaring and Initializing Variables
Global Variables
C++ Built-in Primitive Types
What is the Size of a Variable (sizeof)
What is a Constant?
Declaring and Using Constants
Section Challenge
Section Challenge - Solution
Section 06 Quiz
Arrays and Vectors
Section Overview
What is an Array?
Declaring and Initializing Arrays
Accessing and Modifying Array Elements
Declaring, Initializing and Accessing an Array
Multidimensional Arrays
Declaring and Initializing Vectors
Accessing and Modifying Vector Elements
Declaring, Initializing and Accessing Vectors
Section Challenge
Section Challenge - Solution
Section 07 Quiz
Statements and Operators
Section Overview
Expressions and Statements
Using Operators
The Assignment Operator
Arithmetic Operators
Using the Assignment Operator
Using the Arithmetic Operators
Increment and Decrement Operators
Mixed Expressions and Conversions
Testing for Equality
Relational Operators
Logical Operators
Compound Assignment Operators
Operator Precedence
Logical Operators and Operator Precedence - Can you work?
Section Challenge
Section Challenge - Solution
Section 08 Quiz
Controlling Program Flow
Section Overview
if Statement
If Statement - Can you Drive?
if else Statement
If-Else Statement - Can you Drive?
Nested if Statement
Nested If Statements - Can you Drive?
switch-case Statement
Switch Statement - Day of the Week
Conditional Operator
Looping
for Loop
For loop - Sum of Odd Integers
range-based for Loop
Using the range-based for loop
while Loop
While loop exercise
do while Loop
continue and break
Infinite Loops
Nested Loops
Nested Loops - Sum of the Product of all Pairs of Vector Elements
Section Challenge
Section Challenge - Solution Part 1
Section Challenge - Solution Part 2
Section 09 Quiz
Characters and Strings
Section Overview
Character Functions
C-Style Strings
Working with C-style Strings
Using C-style Strings
C++ Strings
Working with C++ Strings
Using C++ Strings - Exercise 1
Using C++ Strings - Exercise 2
Section Challenge
Section Challenge - Solution
Section 10 Quiz
Functions
Section Overview
What is a Function?
Using Functions from the cmath Library
Function Definition
Function Prototypes
Function Parameters and the return Statement
Functions and Prototypes - Converting Temperatures
Default Argument Values
Using Default Argument Values - Grocery List
Overloading Functions
Overloading Functions - Calculating Area
Passing Arrays to Functions
Passing Arrays to Functions - Print a Guest List
Pass by Reference
Using Pass by Reference - Print a Guest List
Scope Rules
How do Function Calls Work?
inline Functions
Recursive Functions
Implementing a Recursive Function - Save a Penny
Section Challenge
Section Challenge-Solution
Section 11 Quiz
Pointers and References
Section Overview
What is a Pointer?
Declaring Pointers
Accessing the Pointer Address and Storing Address in a Pointer
Dereferencing a Pointer
Dynamic Memory Allocation
The Relationship Between Arrays and Pointers
Pointer Arithmetic
Const and Pointers
Passing Pointers to Functions
Returning a Pointer from a Function
Potential Pointer Pitfalls
What is a Reference?
L-values and R-values
Using the CodeLite IDE Debugger
Section Recap
Section Challenge
Section Challenge - Solution
Section 12 Quiz
OOP - Classes and Objects
Section Overview
What is Object-Oriented Programming?
What are Classes and Objects?
Declaring a Class and Creating Objects
Accessing Class Members
Creating and Accessing Objects
public and private
Implementing Member Methods
Adding public methods that access private class attributes
Add more public methods to an existing class
Constructors and Destructors
The Default Constructor
Add a Default Constructor to an Existing Class
Overloading Constructors
Add an Overloaded Constructor to an Existing Class
Constructor Initialization lists
Delegating Constructors
Constructor Parameters and Default Values
Copy Constructor
Add a Copy Constructor to an Existing Class
Shallow Copying with the Copy Constructor
Deep Copying with the Copy Constructor
Move Constructors
The 'this' Pointer
Using const with Classes
Static Class Members
Structs vs Classes
Friends of a class
Section Challenge
Section Challenge - Solution
Section 13 Quiz
Operator Overloading
Section Overview
What is Operator Overloading?
Overloading the Assignment Operator (copy)
Overloading the Assignment Operator (move)
Overloading Operators as Member Functions
Operator Overloading as Member Functions
Overloading Operators as Global Functions
Operator Overloading as Non-member Functions
Overloading the Stream Insertion and Extraction Operators
Operator Overloading the Stream Insertion Operator
Section Challenge
Section Challenge - Solution 1
Section Challenge - Solution 2
Section 14 Quiz
Inheritance
Section Overview
What is Inheritance?
Terminology and Notation
Inheritance vs. Composition
Deriving Classes from Existing Classes
Protected Members and Class Access
Constructors and Destructors
Passing Arguments to Base Class Constructors
Copy/Move Constructors and Operator = with Derived Classes
Redefining Base Class Methods
Multiple Inheritance
The Updated Accounts Example
Section Challenge
Section Challenge - Solution
Section 15 Quiz
Polymorphism
Section Overview
What is Polymorphism?
Using a Base Class Pointer
Virtual Functions
Virtual Destructors
Using the Override Specifier
Using the Final Specifier
Using Base Class References
Pure Virtual Functions and Abstract Classes
Abstract Classes as Interfaces
Section Challenge
Section Challenge - Solution Part 1
Section Challenge - Solution Part 2
Section Challenge - Final Solution
Section 16 Quiz
Smart Pointers
Section Overview
Some Issues with Raw Pointers
What is a Smart Pointer? Ownership and RAII
Unique Pointers
Shared Pointers
Weak Pointers
Custom Deleters
Section Challenge 1
Section Challenge 1 - Solution
Section 17 Quiz
Exception Handling
Section Overview
Basic Concepts and a Simple Example: Dividing by Zero
Throwing an Exception from a Function
Handling Multiple Exceptions
Stack Unwinding and How it Works
Creating User-Defined Exception Classes
Class Level Exceptions
The C++ std::exception Class Hierarchy
Section Challenge
Section Challenge - Solution
Section 18 Quiz
I/O and Streams
Section Overview
Files, Streams and I/O
Stream Manipulators
Stream Manipulators - boolean
Stream Manipulators - integers
Stream Manipulators - floating point
Stream Manipulators - align and fill
Section Challenge 1
Section Challenge 1 - Solution
Reading from a Text File
Reading from a Text File - Live Demo - Part 1
Reading from a Text File - Live Demo - Part 2
Reading a text file
Section Challenge 2
Section Challenge 2 - Solution
Section Challenge 3
Section Challenge 3 - Solution
Writing to a Text File
Writing to a Text File - Live Demo
Section Challenge 4
Section Challenge 4 - Solution
Using String Streams
File locations with some Popular IDEs
Section 19 Quiz
The Standard Template Library (STL)
Section Overview
What is the STL?
Generic Programming with Macros
Generic Programming with Function Templates
Generic Programming with Class Templates
Creating a Generic Array Template Class
Introduction to STL Containers
Introduction to STL Iterators
Introduction to Iterators - Demo
Introduction to STL Algorithms
Introduction to Algorithms - Demo
Sequence Container - Array
Sequence Containers - Vector
Sequence Containers - Deque
Section Challenge 1
Section Challenge 1 - Solution
Sequence Containers - List and Forward List
Section Challenge 2
Section Challenge 2 - Solution
Associative Containers - Sets
Associative Containers - Maps
Section Challenge 3
Section Challenge 3 - Solution
Container Adaptors - Stack
Container Adaptors - Queue
Section Challenge 4
Section Challenge 4 - Solution
Container Adaptors - Priority Queue
Section 20 Quiz
Extra Information - Source code, and other stuff
Source Code for all Sections
Bonus Lecture and Information
I'm basically a C programmmer with very limited knwoledge of C++. This course really opened my mind about this powerful language! Thanks!
This is the best course that I have ever taken. If you looking for the best c++ course this is. And these are my reasons: -He is very well prepared. Doesn't spend time for writing unnecessary code. - He provides visual materials for most of the complicated concepts and explains them in detail. - When you increase the speed, you will still have an understandable english. For people who like studying these videos time management becomes an issue. - English as a second language speaker, he chooses his words wisely which can be understood by all. Finally, I am not even mentioning all the challenges and the test that helped me practice and understand what I was doing. I kindly appreciate your work.
Very brief and nice experience. Anyone can certainly almost acknowledge the expertise of the instructor
I just wish that the course presented more in-depth how C++ work behind the scenes (like memory management). The content is very helpful though. The pace for me is quite slow, could be faster.
So I started this course via recommendation from a friend and It was my best decision. Earlier in the course when I was at Section 4 or 5 I was thinking that It will take too much time but I keep following the instructor with my full dedication and today I completed this course. The amount of in depth knowledge I got from this course I don't think I will get without such a good instructor. If you are looking to learn this is the course I can recommend with full of my heart. Just go for it.
so far he is very thorough with the explanation of both c++ and how we are going to personally use it.
An excellent course and most importantly (for me) with new changes in the language, before that I was familiar with the language but still learned a lot.
Да, но хотелось бы и русские субтитры. Я конечно понимаю все, но хотелось бы больше концентрироваться на самом курсе, а не его речи
Exercise while-loop is awful. The solution didn't make any sense. It would do for someone with expertise on C++
It had lots of things that i wanted to learn. If it was possible to include sockets & http it would be 6 out of 5
Outstanding introductory illustration. I expect that the difficult concepts in the coming lessons would be made understandable.
I really hope to update my rating of the course later, but so far I've found that the codelite editor chosen for the course is grossly out of date in the videos. Features are located or look differently. Also I've noted that there is a c++ standard everyone, but the course has not been updated to indicate that. I've actually gone the route of using CLion as an editor since I'm a subscriber to their full tool set anyways. Had I not had this option, I probably would have opted for atom.io and the command line as my way through the course. I can't vouch for the currency of the program in Windows as I simply do not use the OS, but I purchased the course specifically because it covered development on a linux platform and so far I can't see how someone new to this world would handle it on that platform.
This course has extremely bad video quality. Almost all videos are blurred. It is very difficult to understand content.
Good explation about various processes happening right from building to executing our porgram! And a great overview about various IDE'S out there!
Frank and his team always answer the questions timely. This is a really great course for those are newbies in C++ programming.