Mastering 4 critical skills using C++

Mastering 4 critical skills using C++

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 17.5 Hours | 5.87 GB

Programming, Problem Solving, Project Building and Design Skills. 7X other courses homework/practice + several projects.

Welcome to one of the very unique programming experiences you will ever get.

The course covers basic to advanced and modern C++ syntax.

The course helps you master the 4 most important skills for a programmer

Programming skills

Problem-solving skills: rarely covered by other courses

Project building skills: partially covered by other courses

Design skills:: rarely covered by other courses

7+ times practice & homework compare to other courses plus 6 projects:

Special Teaching style: iterative, easy, and short


It covers the content of Programming (1) and Programming (2) courses in universities

Specifically Programming basic fundamentals + Object-Oriented Programming but with Deeper coverage

Modern C++

In the first release of the course, I focus on C++11 This represents a lot of the modern C++

This is the same as most of the other courses.

Later, I will extend it to recent language updates, if the course got popular

Currently, some minor notes.

A huge set of Practice, Homework, and Projects

2 styles of homework: Algorithmic (problem-solving) and applications

Several software design concerns are embedded in the homework.

So you are getting introduced to Software Engineering & Design Patterns

What is listed above is a lot to learn and master for a beginner

Not included?

C++ is really a complex language.

If you are searching for a specific topic (e.g. Concurrency), please check out the content first.

Building Skills: Practice, Homework, and Projects

One unique feature in this course is my education strategy:

Explain, Administrate & Challenge

Each video smoothly explains a simple concept(s)

Typically followed by easy to medium practice to administrate the concept

Then typically followed by an easy-medium-hard set of homework questions to challenge you

Extensive homework from easy to medium to hard to help to build the skills.

Most of the practice/homework questions are unique in this course

Programming questions are mainly from my competitive programming experience

OOP questions are mostly invented to achieve several goals:

Mastering the OOP concepts

Enforcing a lot of design heuristics & OOD

Preparing you for design principles and patterns

Small-to-large set of projects to build up project building and design skills

Solutions to all of them.

Special Teaching style

Typically most of the details of a concept are explained first before moving to the next topic

Make sense? Yah!

Here are some established facts:

Most of the details are not equally important. We simply don’t need to learn them early

Students typically are puzzled about a lot of what they are taught in the beginning.

Students iterate on the course a few times to get the whole details.

In this course, I teach several concepts in 2 rounds

Early in the course, only the mandatory concepts/syntax are explained

Then you practice a lot to master them!

Later at an appropriate time, you will learn the remaining details

My students found this approach a great educational experience.

Things are much easier in the begin

Fewer iterations on the materials

Short & to the point

Literally, in a few minutes, I cover clearly what others take a lot of time to explain

By the end of the journey

Solid understanding of programming concepts and its C++ syntax

Mastering the target 4 skills

With the administered problem-solving skills

You can start competitive programming smoothly in Div2-A/B Codeforces

Smooth start in Data Structure course

Smooth start in Algorithms course

With the administered project-building and design skills

Smooth start in Software Engineering course

Later, smooth start in one of the technology tracks in frontend or backend

What are the common complaints from programming courses?

Limited topics coverage.

Outdated syntax.

Unnecessary long videos with repetitions.

Too much time to explain basic concepts.

A sudden jump in the level. I can’t cope with the content.

Assumptions of previous knowledge to understand some of the concepts.

Building over concepts that were not mastered through practice or homework.

The same examples are used over and over.

Several consecutive lectures without practice or homework to master the concepts.

Awesome knowledge, almost zero skills.

Very little practice or homework.

Good homework in the first half and very weak in the remaining.

Many homework without solutions.

Only one project.

Small-size project.

Long but tedious project.

The project doesn’t help enforce the concepts.

Project source code is not provided. I needed to compare and learn.

Moving to Datastructures or Algorithms course was not easy. Weak problem-solving skills.

After the course, I am still stuck and can’t do even simple projects. Weak project-building skills.

The course taught OOP syntax and concepts nicely, but OOD skills are not built. Weak design-skills.

And more!

In this course, not only the content and skills are unique and added value, but also the whole experience to avoid as possible the above concerns and much more! Even if you attended a C++ course, my material will be an added value, especially its homework and projects.

What you’ll learn

  • C++ Modern Syntax from basic to advanced in iterative style
  • A proven curriculum: Many of my students highly recommend it
  • Learn in a gradual way with EXTENSIVE practice and homework to master the key concepts
  • Short lectures, to the point, comprehensive and easy to get
  • Mastering 4 critical skills
  • Projects from easy to hard with their solutions for projects-building skills
  • Learn from PhD holder in AI, Teaching, Training & Coaching for many years

+ Table of Contents

Getting Started
1 Why Programming C++
2 Curriculum Overview
3 Unique and Beyond Others
4 Let’s code

5 Overall tools
6 Installing Codeblocks on Linux
7 Installing Codeblocks on Windows
8 Installing Eclipse on Linux
9 Installing Eclipse on Windows
10 Project creation on Codeblocks
11 Project creation on Eclipse
12 Configuring the Compiler to latest standards

13 Printing
14 More on Printing
15 Errors
16 Printing Homework

Data Types and Variables
17 Data types and variables
18 Declaring variables
19 Reading Variables
20 Constant Variables
21 Variables Homework

22 Binary and Unary Operators
23 Prefix and Postfix Operators
24 Assignment Operator
25 Precedence
26 Operators Homework
27 Relational Operators
28 Truth Table
29 Logical Operators
30 Logical Operators Homework
31 Division Operator
32 Modulus Operator
33 Division and Modulus Homework

34 Selection 1
35 Selection 2
36 Selection Practice
37 Selection Homework

38 While Loops
39 While Loops Practice
40 While Loops Homework
41 For Loops
42 For Loops Practice
43 For Loops Homework

D Arrays
44 D Arrays
45 D Arrays Practice 1
46 D Arrays Practice 2
47 D Arrays Homework 1
48 D Arrays Homework 2

Char Arrays
49 Char Arrays 1
50 Char Arrays 2
51 Char Arrays Practice
52 Char Arrays Homework 1
53 Char Arrays Homework 2

Multidimensional Arrays
54 Multidimensional Arrays 1
55 Multidimensional Arrays 2
56 Multidimensional Arrays Practice 1
57 Multidimensional Arrays Practice 2
58 Multidimensional Arrays Homework 1
59 Multidimensional Arrays Homework 2

60 Functions 1
61 Functions 2
62 Functions 3
63 Pass by reference
64 Builtin Functions
65 Global, Local and Static Variables
66 Functions Practice
67 Functions Homework

Recursive Functions
68 Recursive Functions 1
69 Recursive Functions 2
70 Recursive Functions Practice 1
71 Recursive Functions Practice 2
72 Recursive Functions Practice 3
73 Recursive Functions Homework 1
74 Recursive Functions Homework 2

Project #1
75 Description

76 Structures 1
77 Structures 2
78 Structures Practice

Project #2
79 Description

80 Function Templates
81 Class Templates

82 STL Intro
83 Queue
84 Priority Queue
85 Deque
86 Stack
87 STL Practice 1
88 Pair
89 Tuple
90 STL with Range-based for loop
91 Vector 1
92 Vector 2
93 String
94 STL Practice 2
95 Algorithms
96 Set
97 Unordered Set
98 Map
99 STL Practice 3
100 STL Practice 4
101 STL Practice 5
102 STL Practice 6
103 STL Practice 7
104 Notes
105 STL Homework 1
106 STL Homework 2

Files and Streams
107 Files and Streams 1
108 Files and Streams 2
109 String Stream

Project #3
110 Description
111 Demo

112 Reference
113 Pointers 1
114 Pointers 2
115 Pointers and Arrays
116 Pointers and Const
117 Pointers and Functions
118 Dynamic Memory Allocation
119 Pointers and Struct
120 Handling Pointers

Headers and Includes
121 Headers and Includes
122 Separating Interface from Implementation
123 Separation with Struct
124 Forward Declaration
125 Preprocessor and Linker
126 Namespace 1
127 Namespace 2

Project #4
128 Description

Object Oriented Programming
129 Objects
130 Pyramid of Object Oriented
131 Pyramid of Object Oriented Homework
132 Data-Hiding
133 Abstraction 1
134 Abstraction 2
135 Abstraction Homework

OOP Classes
136 Class Constructor & Destructor
137 Class Constructor & Destructor Homework
138 Class Copy Constructor
139 Class Copy Constructor Homework
140 Const with Class
141 Static with Class
142 Friend Class
143 Class Const, Static & Friend Homework 1
144 Class Const, Static & Friend Homework 2

UML Class Diagram
145 Class Diagram in UML
146 Classes Relationship
147 Composition Relationship
148 Aggregation Relationship
149 Generalization Relationship
150 Multiplicity
151 Relationships & Multiplicity
152 UML in Practice
153 Improving Design Skills

OOP Part 1 Summary
154 OOP Part 1 Summary 1
155 OOP Part 1 Summary 2
156 OO Projects in Practice

Project #5
157 OOing old project

Project #6
158 Description

OOP Inheritance
159 Inheritance 1
160 Inheritance 2
161 Inheritance Homework 1
162 Inheritance Homework 2
163 Inheritance 3
164 Inheritance with Exceptions
165 Inheritance in Practice
166 Inheritance Homework 3
167 Inheritance Homework 4

OOP Polymorphism
168 Polymorphism 1
169 Polymorphism 2
170 Polymorphism 3
171 Polymorphism Practice 1
172 Polymorphism Tips
173 Polymorphism Homework 1
174 Polymorphism and Abstract Classes
175 Polymorphism Practice 2
176 Polymorphism Downcasting
177 Polymorphism Virtual Table
178 Polymorphism for APIs and Frameworks
179 Polymorphism and Composition over Inheritance
180 Polymorphism Homework 2

OOP Operator Overloading
181 Binary Operator Overloading 1
182 Binary Operator Overloading 2
183 Unary Operator Overloading
184 Subscript Operator Overloading
185 Relational Operator Overloading
186 Operator Overloading Homework 1
187 Operator Overloading Homework 2
188 Prefix and Postfix Operator Overloading
189 Input-Output Operator Overloading
190 Conversions in Operator Overloading
191 Assignment Operator Overloading
192 Operator Overloading Homework 3

OOP Part 2 Summary
193 OOP Part 2 Summary 1
194 OOP Part 2 Summary 2
195 OOP Part 2 Summary 3
196 OOP Part 2 Summary 4
197 OOP Part 2 Summary 5

Project #7
198 Description