Beginning 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.
Beginning C Programming From Beginner to Beyond
File Size :
17.92 GB
Total length :
46h 0m



Tim Buchalka's Learn Programming Academy


Last update




Beginning C Programming From Beginner to Beyond

What you’ll learn

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

Beginning C Programming From Beginner to Beyond


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


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?Click the Signup button to sign up for the course!


Section 1: Introduction

Lecture 1 About the Course

Lecture 2 Why Learn C++?

Lecture 3 Modern C++ and the C++ Standard

Lecture 4 How does all this work?

Lecture 5 FAQ — Please Read!

Section 2: Installation and Setup

Lecture 6 Installation and Setup Overview

Lecture 7 Installing the C++ Compiler on Windows

Lecture 8 Installing CodeLite on Windows

Lecture 9 Configuring CodeLite on Windows

Lecture 10 Installing the C++ Compiler on Mac OSX

Lecture 11 Installing CodeLite on Mac OSX

Lecture 12 Configuring CodeLite on Mac OSX

Lecture 13 Using the Command-Line interface

Lecture 14 Installing CodeLite on Ubuntu Linux

Lecture 15 Configuring CodeLite on Ubuntu Linux

Lecture 16 Creating a Default CodeLite Project Template (All Versions)

Lecture 17 Using the Command-Line Interface on Windows

Lecture 18 Using the Command-Line Interface on Mac OSX

Lecture 19 Using the Command-Line Interface on Linux (Ubuntu)

Lecture 20 Using a Web-based C++ Compiler

Lecture 21 Using the Included Source Code Course Resources

Section 3: Curriculum Overview

Lecture 22 Curriculum Overview

Lecture 23 Overview of the Section Challenge Exercises

Lecture 24 Overview of the Section Quizzes

Section 4: Getting Started

Lecture 25 Section Overview

Lecture 26 An Overview of the CodeLite Interface

Lecture 27 Writing our first program

Lecture 28 Building our first program

Lecture 29 What are Compiler Errors?

Lecture 30 What are Compiler Warnings?

Lecture 31 What are Linker Errors?

Lecture 32 What are Runtime Errors?

Lecture 33 What are Logic Errors?

Lecture 34 Section Challenge

Lecture 35 Section Challenge – Solution

Section 5: Structure of a C++ Program

Lecture 36 Section Overview

Lecture 37 Overview of the Structure of a C++ Program

Lecture 38 #include Preprocessor Directive

Lecture 39 Comments

Lecture 40 The main() function

Lecture 41 Namespaces

Lecture 42 Basic Input and Output (I/O) using cin and cout

Section 6: Variables and Constants

Lecture 43 Section Overview

Lecture 44 What is a variable?

Lecture 45 Declaring and Initializing Variables

Lecture 46 Global Variables

Lecture 47 C++ Built-in Primitive Types

Lecture 48 What is the Size of a Variable (sizeof)

Lecture 49 What is a Constant?

Lecture 50 Declaring and Using Constants

Lecture 51 Section Challenge

Lecture 52 Section Challenge – Solution

Section 7: Arrays and Vectors

Lecture 53 Section Overview

Lecture 54 What is an Array?

Lecture 55 Declaring and Initializing Arrays

Lecture 56 Accessing and Modifying Array Elements

Lecture 57 Multidimensional Arrays

Lecture 58 Declaring and Initializing Vectors

Lecture 59 Accessing and Modifying Vector Elements

Lecture 60 Section Challenge

Lecture 61 Section Challenge – Solution

Section 8: Statements and Operators

Lecture 62 Section Overview

Lecture 63 Expressions and Statements

Lecture 64 Using Operators

Lecture 65 The Assignment Operator

Lecture 66 Arithmetic Operators

Lecture 67 Increment and Decrement Operators

Lecture 68 Mixed Expressions and Conversions

Lecture 69 Testing for Equality

Lecture 70 Relational Operators

Lecture 71 Logical Operators

Lecture 72 Compound Assignment Operators

Lecture 73 Operator Precedence

Lecture 74 Section Challenge

Lecture 75 Section Challenge – Solution

Section 9: Controlling Program Flow

Lecture 76 Section Overview

Lecture 77 if Statement

Lecture 78 if else Statement

Lecture 79 Nested if Statements

Lecture 80 switch-case Statement

Lecture 81 Conditional Operator

Lecture 82 Looping

Lecture 83 for Loop

Lecture 84 range-based for Loop

Lecture 85 while Loop

Lecture 86 do while Loop

Lecture 87 continue and break

Lecture 88 Infinite Loops

Lecture 89 Nested Loops

Lecture 90 Section Challenge

Lecture 91 Section Challenge – Solution Part 1

Lecture 92 Section Challenge – Solution Part 2

Section 10: Characters and Strings

Lecture 93 Section Overview

Lecture 94 Character Functions

Lecture 95 C-Style Strings

Lecture 96 Working with C-style Strings

Lecture 97 C++ Strings

Lecture 98 Working with C++ Strings

Lecture 99 Section Challenge

Lecture 100 Section Challenge – Solution

Section 11: Functions

Lecture 101 Section Overview

Lecture 102 What is a Function?

Lecture 103 Function Definition

Lecture 104 Function Prototypes

Lecture 105 Function Parameters and the return Statement

Lecture 106 Default Argument Values

Lecture 107 Overloading Functions

Lecture 108 Passing Arrays to Functions

Lecture 109 Pass by Reference

Lecture 110 Scope Rules

Lecture 111 How do Function Calls Work?

Lecture 112 inline Functions

Lecture 113 Recursive Functions

Lecture 114 Section Challenge

Lecture 115 Section Challenge-Solution

Section 12: Pointers and References

Lecture 116 Section Overview

Lecture 117 What is a Pointer?

Lecture 118 Declaring Pointers

Lecture 119 Accessing the Pointer Address and Storing Address in a Pointer

Lecture 120 Dereferencing a Pointer

Lecture 121 Dynamic Memory Allocation

Lecture 122 The Relationship Between Arrays and Pointers

Lecture 123 Pointer Arithmetic

Lecture 124 Const and Pointers

Lecture 125 Passing Pointers to Functions

Lecture 126 Returning a Pointer from a Function

Lecture 127 Potential Pointer Pitfalls

Lecture 128 What is a Reference?

Lecture 129 L-values and R-values

Lecture 130 Using the CodeLite IDE Debugger

Lecture 131 Section Recap

Lecture 132 Section Challenge

Lecture 133 Section Challenge – Solution

Section 13: OOP – Classes and Objects

Lecture 134 Section Overview

Lecture 135 What is Object-Oriented Programming?

Lecture 136 What are Classes and Objects?

Lecture 137 Declaring a Class and Creating Objects

Lecture 138 Accessing Class Members

Lecture 139 public and private

Lecture 140 Implementing Member Methods

Lecture 141 Constructors and Destructors

Lecture 142 The Default Constructor

Lecture 143 Overloading Constructors

Lecture 144 Constructor Initialization lists

Lecture 145 Delegating Constructors

Lecture 146 Constructor Parameters and Default Values

Lecture 147 Copy Constructor

Lecture 148 Shallow Copying with the Copy Constructor

Lecture 149 Deep Copying with the Copy Constructor

Lecture 150 Move Constructors

Lecture 151 The ‘this’ Pointer

Lecture 152 Using const with Classes

Lecture 153 Static Class Members

Lecture 154 Structs vs Classes

Lecture 155 Friends of a class

Lecture 156 Section Challenge

Lecture 157 Section Challenge – Solution

Section 14: Operator Overloading

Lecture 158 Section Overview

Lecture 159 What is Operator Overloading?

Lecture 160 Overloading the Assignment Operator (copy)

Lecture 161 Overloading the Assignment Operator (move)

Lecture 162 Overloading Operators as Member Functions

Lecture 163 Overloading Operators as Global Functions

Lecture 164 Overloading the Stream Insertion and Extraction Operators

Lecture 165 Section Challenge

Lecture 166 Section Challenge – Solution 1

Lecture 167 Section Challenge – Solution 2

Section 15: Inheritance

Lecture 168 Section Overview

Lecture 169 What is Inheritance?

Lecture 170 Terminology and Notation

Lecture 171 Inheritance vs. Composition

Lecture 172 Deriving Classes from Existing Classes

Lecture 173 Protected Members and Class Access

Lecture 174 Constructors and Destructors

Lecture 175 Passing Arguments to Base Class Constructors

Lecture 176 Copy/Move Constructors and Operator = with Derived Classes

Lecture 177 Redefining Base Class Methods

Lecture 178 Multiple Inheritance

Lecture 179 The Updated Accounts Example

Lecture 180 Section Challenge

Lecture 181 Section Challenge – Solution

Section 16: Polymorphism

Lecture 182 Section Overview

Lecture 183 What is Polymorphism?

Lecture 184 Using a Base Class Pointer

Lecture 185 Virtual Functions

Lecture 186 Virtual Destructors

Lecture 187 Using the Override Specifier

Lecture 188 Using the Final Specifier

Lecture 189 Using Base Class References

Lecture 190 Pure Virtual Functions and Abstract Classes

Lecture 191 Abstract Classes as Interfaces

Lecture 192 Section Challenge

Lecture 193 Section Challenge – Solution Part 1

Lecture 194 Section Challenge – Solution Part 2

Lecture 195 Section Challenge – Final Solution

Section 17: Smart Pointers

Lecture 196 Section Overview

Lecture 197 Some Issues with Raw Pointers

Lecture 198 What is a Smart Pointer? Ownership and RAII

Lecture 199 Unique Pointers

Lecture 200 Shared Pointers

Lecture 201 Weak Pointers

Lecture 202 Custom Deleters

Lecture 203 Section Challenge 1

Lecture 204 Section Challenge 1 – Solution

Section 18: Exception Handling

Lecture 205 Section Overview

Lecture 206 Basic Concepts and a Simple Example: Dividing by Zero

Lecture 207 Throwing an Exception from a Function

Lecture 208 Handling Multiple Exceptions

Lecture 209 Stack Unwinding and How it Works

Lecture 210 Creating User-Defined Exception Classes

Lecture 211 Class Level Exceptions

Lecture 212 The C++ std::exception Class Hierarchy

Lecture 213 Section Challenge

Lecture 214 Section Challenge – Solution

Section 19: I/O and Streams

Lecture 215 Section Overview

Lecture 216 Files, Streams and I/O

Lecture 217 Stream Manipulators

Lecture 218 Stream Manipulators – boolean

Lecture 219 Stream Manipulators – integers

Lecture 220 Stream Manipulators – floating point

Lecture 221 Stream Manipulators – align and fill

Lecture 222 Section Challenge 1

Lecture 223 Section Challenge 1 – Solution

Lecture 224 Reading from a Text File

Lecture 225 Reading from a Text File – Live Demo – Part 1

Lecture 226 Reading from a Text File – Live Demo – Part 2

Lecture 227 Section Challenge 2

Lecture 228 Section Challenge 2 – Solution

Lecture 229 Section Challenge 3

Lecture 230 Section Challenge 3 – Solution

Lecture 231 Writing to a Text File

Lecture 232 Writing to a Text File – Live Demo

Lecture 233 Section Challenge 4

Lecture 234 Section Challenge 4 – Solution

Lecture 235 Using String Streams

Lecture 236 File locations with some Popular IDEs

Section 20: The Standard Template Library (STL)

Lecture 237 Section Overview

Lecture 238 What is the STL?

Lecture 239 Generic Programming with Macros

Lecture 240 Generic Programming with Function Templates

Lecture 241 Generic Programming with Class Templates

Lecture 242 Creating a Generic Array Template Class

Lecture 243 Introduction to STL Containers

Lecture 244 Introduction to STL Iterators

Lecture 245 Introduction to Iterators – Demo

Lecture 246 Introduction to STL Algorithms

Lecture 247 Introduction to Algorithms – Demo

Lecture 248 Sequence Container – Array

Lecture 249 Sequence Containers – Vector

Lecture 250 Sequence Containers – Deque

Lecture 251 Section Challenge 1

Lecture 252 Section Challenge 1 – Solution

Lecture 253 Sequence Containers – List and Forward List

Lecture 254 Section Challenge 2

Lecture 255 Section Challenge 2 – Solution

Lecture 256 Associative Containers – Sets

Lecture 257 Associative Containers – Maps

Lecture 258 Section Challenge 3

Lecture 259 Section Challenge 3 – Solution

Lecture 260 Container Adaptors – Stack

Lecture 261 Container Adaptors – Queue

Lecture 262 Section Challenge 4

Lecture 263 Section Challenge 4 – Solution

Lecture 264 Container Adaptors – Priority Queue

Section 21: Lambda Expressions

Lecture 265 Section Overview

Lecture 266 Motivation

Lecture 267 Structure of a Lambda Expression

Lecture 268 Stateless Lambda Expressions

Lecture 269 Stateless Lambda Expressions Demo – Part 1

Lecture 270 Stateless Lambda Expressions Demo – Part 2

Lecture 271 Stateful Lambda Expressions

Lecture 272 Stateful Lambda Expressions Demo – Part1

Lecture 273 Stateful Lambda Expressions Demo – Part2

Lecture 274 Lambdas and the STL

Section 22: Bonus Section – Using Visual Studio Code

Lecture 275 Section Overview

Lecture 276 Installing VSCode on Windows

Lecture 277 Building and Running C++ Programs with VSCode on Windows

Lecture 278 Debugging C++ Programs with VSCode on Windows

Lecture 279 Using the Course Source Code with VSCode on Windows

Lecture 280 Installing VSCode on Mac OSX

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

Lecture 282 Debugging C++ Programs with VSCode on Mac

Lecture 283 Using the Course Source Code with VSCode on Mac

Lecture 284 Installing VSCode on Linux

Lecture 285 Building and Running C++ Programs with VSCode on Linux

Lecture 286 Debugging C++ Programs with VSCode on Linux

Lecture 287 Using the Course Source Code with VSCode on Linux

Section 23: Bonus Section – Enumerations

Lecture 288 Section Overview

Lecture 289 Motivation

Lecture 290 The Structure of an Enumeration

Lecture 291 Unscoped Enumerations

Lecture 292 Scoped Enumerations


Lecture 293 Installation and Setup Overview

Lecture 294 Installing the C++ Compiler on Windows

Lecture 295 Installing CodeLite on Windows

Lecture 296 Configuring CodeLite on Windows

Lecture 297 Installing the C++ Compiler on Mac OSX

Lecture 298 Installing CodeLite on Mac OSX

Lecture 299 Configuring CodeLite on Mac OSX

Lecture 300 Installing CodeLite on Ubuntu Linux

Lecture 301 Configuring CodeLite on Ubuntu Linux

Lecture 302 Creating a Default CodeLite Project Template (All Versions)

Lecture 303 Using the Included Source Code Course Resources

Section 25: Extra Information – Source code, and other stuff

Lecture 304 Source Code for all Sections

Section 26: Bonus Section – including Slides

Lecture 305 Bonus – Course Slides and Free Programming EBook

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.

Course Information:

Udemy | English | 46h 0m | 17.92 GB
Created by: Tim Buchalka’s Learn Programming Academy

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top