You're welcome to Heroic Academy

Select your country of residence below to continue

C++ Programming - From Beginner to Beyond

Obtain Modern C++ Object-Oriented Programming (OOP) and STL skills. C++14 and C++17 covered. C++20 info see below.

Created by Frank J. Mitropoulos, Ph.D.

Close

Course Contents

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

Using the Command-Line interface

Installing CodeLite on Ubuntu Linux

Configuring CodeLite on Ubuntu Linux

Creating a Default CodeLite Project Template (All Versions)

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 Section 4 Quiz - Getting Started

Section 4 Quiz, Section 4 Quiz - Getting Started

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

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 Statements

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

Do-while loop exercise

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

Challenge Assignment - Letter Pyramid

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 - Sum of Digits

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

Swap Values using Pointers

Const and Pointers

Passing Pointers to Functions

Returning a Pointer from a Function

Passing a Pointer to a Function

Find the Maximum Element in an Array using Pointers

Reverse an Array using Pointers (Challenging!)

Reverse a std::string using Pointers (Challenging!)

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

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

Inheritance - Roar Lion, Roar!

Inheritance - Bark Dog, Bark!

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 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

Lambda Expression

Section Overview

Motivation

Structure of a Lambda Expression

Stateless Lambda Expressions

Stateless Lambda Expressions Demo - Part 1

Stateless Lambda Expressions Demo - Part 2

Stateful Lambda Expressions

Stateful Lambda Expressions Demo - Part1

Stateful Lambda Expressions Demo - Part2

Lambdas and the STL

Section 21 Quiz

Bonus Section - Using Visual Studio Code

Section Overview

Installing VSCode on Windows

Building and Running C++ Programs with VSCode on Windows

Debugging C++ Programs with VSCode on Windows

Using the Course Source Code with VSCode on Windows

Installing VSCode on Mac OSX

Building and Running C++ Programs with VSCode on Mac OSX

Debugging C++ Programs with VSCode on Mac

Using the Course Source Code with VSCode on Mac

Installing VSCode on Linux

Building and Running C++ Programs with VSCode on Linux

Debugging C++ Programs with VSCode on Linux

Using the Course Source Code with VSCode on Linux

Bonus Section - Enumerations

Section Overview

Motivation

The Structure of an Enumeration

Unscoped Enumerations

Scoped Enumerations

Archived - Old Installation Videos

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 Included Source Code Course Resources

Extra Information - Source Code, and Other Stuff

Source Code for all Sections

Course Slides

What you will learn and gain

  • 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
  • New Section: Learn to use Visual Studio Code with C++
  • New Section: Learn all about using C++ Lambda Expressions

What our students are saying

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 the software written today is still written in C++ and this has been the case for many, many years.

Not only is C++ popular, but 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 the 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++ 14 and C++17). 

Learn C++ the right way, with Modern C++, as taught by Frank in this course.

What about C++20? Don't I need to learn about that as well?

This course currently covers C++14 and C++17 but is still valid if you ultimately want to learn C++20.

C++20 is new and the reality is that C++20 compilers and tools are not yet ready for prime time and the industry is using mainly C++14.    So it's not really of any benefit for you to learn C++20 right now when the industry is not using it.

It's going to take many, many years for the industry to migrate to C++20 and that means jobs for C++20 are not going to be around for quite some time.

What is available right now, are tons of jobs for Modern C++ developers, and you will obtain those skills in this course.

It's our sincere advice to focus on learning Modern C++ and not get too hung up on the latest and greatest versions of C++.

And even if you really do want to learn C++20,  the new features in C++20 are mostly advanced features that require understanding the foundations of Modern C++.

If you don't learn the basics, you won't master any version of C++.

Learning the foundations of Modern C++ should be your priority, which you will learn 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 from 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 imperative that you learn the Modern version to maximize 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 as 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?

Requirements

Access to a computer running Windows, Mac OS X or Linux

Who this course is for:

  • This course is perfect for absolute beginners with no previous coding experience, or anyone wanting to add C++ to their existing skillset.
  • Anyone looking to increase career options by learning one the most in-demand programming languages.

Frequently Asked Questions

What is Heroic Universal Concept All About?

Heroic Universal Concept International is an ICT firm and a vision-driven movement aimed at harnessing the ingenuity of young people with the use of motivational and ICT tools, thereby helping them achieve their ultimate goal.

We offer ICT services and champion talent development programmes for young people.

Is your training online or physical?

Our training is online. We have hundreds of downloadable tutorial videos on different ICT courses hosted in our website.

As soon as you pay and register, you will be given access to the tutorial videos. You can download them and commence training, offline.

While you're learning, I will be guiding you from here whenever you need my assistance.

Where is your location?

We're based in Kasoa, Ghana and Lagos, Nigeria but our training is online. So, you can access our courses from anywhere you are while we will be coaching you from here.

Do you have a physical class?

No, we don't.

Our training is 100% online.

What is your mode of teaching?

We teach with tutorial videos.

We have hundreds of downloadable tutorial videos on various ICT courses in our website.

You will have access to download them and learn with them as soon as you register for your desired course.

We made all the tutorials downloadable to help you save data and be free from challenges of poor internet connection.

Do you have online community where your students converge to exchange ideas?

We have Heroic Students WhatsApp group where our students converge and exchange ideas.

Information about Heroic Academy and other Heroic innovations are discussed in the group.

Do you mentor your students?

Sure, I do absolutely!

I'm always available Whenever my students need my attention.

I supervise their projects and tackle their challenges.

Can ICT courses be learnt online effectively?

Of course! The more convenient way to learn ICT skills these days is online.

There are some courses you may never have the opportunity of learning if you're waiting for opportunity to learn them physically.

Professionals are fast moving online. Very few of them will still have time to teach physically.

Programming is one of those skills you can easily learn online.

All you need is a good and experienced coach, and I'm here to help.

Is programming difficult?

It depends on who is coaching you and the time you dedicate to learning it.

If you're being coached by a very experienced and gifted coach, if you give it enough time, programming will be fun for you.

However, if you're struggling to learn by yourself or you're being coached by an inexperienced coach, you will find programming difficult.

Can I learn coding with my phone?

Yes, you can start learning with your phone if you don't have a laptop. Just buy a phone external keyboard, I will direct you on how to use it to start programming.

How do you mentor your students?

I mentor my students by; answering their questions and helping them solve some problems whenever they call my attention.

If my student need my attention, I usually ask them to send me a screenshot of the issue or a zip file of their work to enable me analyse their job and debug the error.

I usually make a new video to point out their errors if the situation is complex.

How can you convince me that you're genuine?

Chat me on Whatsapp via +2348037747461 and express your concern.

I will try my best to clear all your doubt.

I'm not used to online training, I'm afraid it won't work for me.

Online training is great when a gifted teacher is handling it. Look for a gifted teacher. You will be missing opportunity to acquire great skills if you ignore online training.

Some skills are not common. Online training make them accessible.

If you have tried online training before and it didn't work for you, try again, this time, concentrate on getting a good teacher.

I tried my best to simply my lectures. You can chat me to see my students testimonials. They're testifying that I made my courses very simple.

Don't you think that poor internet connection can disrupt online training?

I made all my tutorials downloadable to win against poor internet connection.

You can download all your tutorials when the internet connection is ok and learn offline without worrying about network fluctuations.

What if I insist on one-on-one training. What's your advice?

Online training would have made learning a lot easier for you but if you insist on physical training, you have to take the pain of looking for someone or centers where the skills are taught.

The centers might not be close to you, so be ready to spent heavily on transportation.

I wrote an article where I compared online and physical training. You can chat me on Whatsapp to request for it.

I'm interested, how do I get started?

Go ahead and order for the course. If you need assistance, chat me on Whatsapp via +2348037747461.

Will I get certificate after the training?

Of course. Our organization is registered. We give our students certificate on completion.

I'm interested in the courses but I don't have money

If you can't afford the expensive courses, there are some cheap courses you can start from.

Just pay for the ones you can afford and get started instead of waiting.

You will gradually raise money to pay for the rest.

Are all your tutorial videos downloadable?

All the tutorials the Admin of this platform, Uche Joe created by himself are downloadable but the tutorials created by other expert partners created might not be downloadable.

However, you will surely enjoy the learning process.

You may also like

See all coursesarrow_forward