
Learn how programming sharpens problem-solving and computational thinking, with real-life mobile applications and the appeal of high-paying careers through C++'s powerful paradigms and high performance.
Identify three audiences for this course: beginners, developers with weak skills, and experienced programmers, while delivering short, to-the-point lectures that save time and focus on practical C++ 17 skills.
Embrace a bottom-up teaching style that emphasizes major concepts while delaying minor concepts and fundamentals, using ready-code snippets with practice and homework for efficient programming learning.
Develop four core skills: C++ syntax mastery, problem solving with computational challenges, six project-building exercises of varying scope, and object-oriented design through principles and patterns.
Practice and homework drive skill development in C++ 17, and this lecture guides you through tackling hard problems, reviewing concise solutions, and persisting through failures to progress.
Explore four core components of modern C++: programming fundamentals, advanced topics such as pointers and STL, object oriented programming, and design principles and patterns, with coverage from C++11 to C++17.
Begin coding your first program in C++ by building a simple calculator, learn syntax rules, use the compiler, and print output with cout while including iostream and cmath.
Explore three C++ compilation options: notepad with commands, online compilers like ideone, and IDEs such as CodeBlocks and Eclipse, with essential writing, compiling, and running workflows.
Install CodeBlocks on Windows by downloading the mingw binary release for your system (64-bit or 32-bit), then add the MinGW bin directory to your system path and restart if needed.
Install Eclipse on Linux using the Eclipse installer or Fedora package, choose C++ and CDT, and troubleshoot with Google and StackOverFlow when errors occur.
Learn to create a C++ project in Eclipse, manage a workspace, enable auto build, and run your code with run configurations, while exploring debugging, problems, and history features.
Master printing in c++ by tracing the code cycle from writing and compiling to running, identify compiler and run-time errors, and format output with cout, endl, and \n.
Explore printing in C++ with cout, return concepts, and comments; examine integers, strings, and division behavior, plus overflow, and practice code tracing to predict output.
Explore common C++ errors, including missing semicolons and wrong extraction operators, undefined main and cout outside braces, and runtime issues like division by zero and integer overflow or underflow.
Learn how to declare variables in c++, assign and print values, and understand data types such as int, double, char, bool, string, along with memory concepts, initialization styles, and pitfalls.
Define a const variable with an initial value using the const keyword to prevent changes and communicate intent, citing fixed limits like INT_MAX and INT_MIN.
practice three basic c++ 17 programs: arithmetic on two numbers, student data with an exam average, and summing eight integers by even and odd positions while testing edge cases.
Demonstrate solving homework in C++ by selecting appropriate data types, handling division by zero, and computing averages with doubles. Organize even and odd sums with separate variables for clarity.
Practice tracing code to predict outputs like a compiler, learn patterns and fibonacci numbers, then apply a swapping exercise that exchanges two integers and prints the swapped values.
Trace the Fibonacci sequence output and learn how to swap two variables using a temporary holder in C++ as part of homework 2.
Tackle three hard C++ 17 exercises: swap three numbers, pick a formula based on a sign indicator, and compute the sum from one to n with an efficient formula.
Explore swapping three numbers with a temporary value and circular rotation, plus deriving the sum 1 to n using pairing and the n(n+1)/2 formula for both even and odd n.
Explore binary and unary operators in C++, examine arithmetic operators, expressions, operands, and the not operator, and learn how precedence and unary minus shape evaluation with examples like x+2*y.
Master prefix and postfix operators in C++17, showing how ++A and A++ differ in timing and assignment. Learn evaluation order and why some expressions are undefined.
Master operator concepts with three easy to medium challenges, tracing programs like a compiler, and studying the comma operator in a cout statement to deepen understanding.
Explore tracing of C++ expressions, including pre/post increments, A and B, the comma operator, Fibonacci tracing, and compound assignments, emphasizing evaluation order and code clarity.
Master relational operators in c++ by practicing comparisons with >, <, >=, <=, ==, !=, yielding boolean results, while noting floating point precision, string case sensitivity, and dictionary order.
Master logical operators in C++, using && and || with precedence and parentheses to form accurate true or false expressions, and learn short-circuit evaluation and potential side effects.
Apply logical operators in C++ 17 by reading three integers (boys, girls, teachers), writing conditional statements, simplifying them by hand, and optionally verifying with code.
Learn how division works in C++: integer division truncates fractions, while doubles preserve them. See casting to int, dividing by 10 to remove digits, and the ascii ranges for characters.
Explore the modulus operator, learn how remainders reveal clock arithmetic, identify even/odd numbers with mod 2, and extract last digits with mod 10 in practical C++ examples.
Explore division and modulus homework by computing averages and sums, extracting fractional parts with casting, and performing integer division to obtain remainders.
Practice modulus and division: detect even numbers with %2, divide by two, and use %10; read to sum last three digits or print fourth from the right (zero if missing).
Explore division and modulus techniques in c++17 to check evenness with modulo two, handle negatives, and sum the last three digits using repeated modulo ten and division by ten.
Extract the fourth digit from the back by dividing to remove digits and using modulus to reveal the target, with operation precedence and small-number edge cases.
Explore division and modulus by building a program that prints 100 if even, 7 if odd, and convert days to years, months, and days using fixed 360-day years.
Learn how if statements drive C++ program flow, executing code when conditions are true, using braces for complex logic, and recognize local scope and mistakes like assignment instead of comparison.
Practice selection by building a simple calculator that reads two numbers and an operation, uses if-else for +, -, *, /, and explores minimum finding with a temporary answer variable.
Explore how C++17 introduces an if-statement initializer with a semicolon, narrowing the variable scope to inside the if-else block and improving code cleanliness.
mastering four critical skills using C++17 through selection homework, cover conditional logic for odd/even cases, sorting three integers, finding the largest under 100, and counting numbers relative to X.
Solve two-number arithmetic using parity checks to decide operations. Sort three integers with conditional swaps and rechecks to ensure correct order.
Explore how to find the maximum less than 100 while handling potential negative values, improve initialization with a valid starting point, and count numbers using booleans and conditional logic.
Practice finding the maximum among integers by reading ten numbers with only two integer variables, then read n (2 to 10) numbers to determine the maximum.
Learn to find the maximum of ten values using two variables by reading the first number as the initial result and updating it with each input.
Read a number X and three inclusive intervals to count how many contain X. Then read two intervals and print their intersection, or -1 if they don't intersect.
Explore while loops in C++ to perform repetitive tasks, using initialization, condition, and incrementation, and control flow with break and continue, including infinite loops and summing.
Develop proficiency with while loops by listing multiples of 3 up to x, computing powers by repeated multiplication, counting digits with division, and handling edge cases in nested loops.
Master four while-loop challenges: print a diamond pattern, identify numbers divisible by eight or by four and three, and list n multiples of 3 not 4 with test-case minima.
Tackle four while-loop challenges: filter two-letter N/O strings, reverse an integer and multiply by three, print an N by M multiplication table, and compute a repeating-digit sum per test case.
Solve the third homework by noting four case variations of no and on for string matching, and reverse a number with %10 and division by 10 to build digits.
Practice for-loops by transforming while-loop patterns into for-loops. Count pairs and triples with math tricks and generate Fibonacci numbers to boost efficiency.
Master these loop-based challenges in C++17 by implementing patterns, counting pairs and quadruples with divisibility rules, testing primes, printing primes, and summing digits within a range.
Print an X shape using the left and right diagonals. Translate the problem into nested loops with range checks, a mod seven constraint, and optimized start logic.
Master for loops by solving A, B, C, D, E with A+B=C+D for numbers 1–200. Reduce to three loops and implement a prime check with negatives and 1 as non-prime.
Explore computing the maximum, first maximum, and second maximum in an array of distinct numbers, and implement a single-loop approach for the maximum pair sum.
Learn to reverse a 1D array in place by swapping symmetric elements. Implement a frequency array to find the most frequent number efficiently, avoiding nested loops.
Explore practical array problems in C++17, from identifying increasing sequences and swapping min with max to extracting unique values while preserving order, checking palindromes, and optimizing a three-term expression.
Master the four critical skills using C++ 17 by solving problems with efficient array handling, palindrome checks via half-array traversal, and optimized smallest-pair strategies, contrasting brute force with smarter approaches.
Master six medium c++ 17 challenges: find smallest three in an array, last occurrences for queries, most frequent value, digit frequency, preserve order of uniques, sorting using 500 max-value hint.
Apply a shift trick to handle negative numbers, building a frequency matrix to find the most frequent value. Compute digit frequencies by iterating numbers and extracting digits with mod ten.
Leverage the count sort approach to sort numbers up to five hundred by counting frequencies with a frequency array, then print each value according to its count.
Tackle five hard C++17 programming challenges in homework 3, including Recaman's sequence, fixed sliding window, maximum subarray sum, counting increasing subarrays, and Josephus problem with zero-sum subarray reduction ideas.
Explore problem set 3 with brute-force and sliding-window approaches for a sequence task. Apply one-based and zero-based indexing tricks, lower-bound verification, and prefix-sum (accumulation) techniques to compute subarrays efficiently.
Explore a simulation approach to the Josephus problem using a marking array, zero-based indexing, and modulo cycling to remove every k-th person, with dynamic remaining_alive handling.
Learn to solve a problem by expanding the array and maintaining the zeros minus ones difference, using first occurrences to maximize a subarray with equal zeros and ones.
Practice char arrays by interleaving two strings, print remaining chars without new allocations, compute lowercase frequencies with a frequency array, and build a map for encoding and decoding.
Master critical skills in c++ 17 by mastering prefix, suffix, and substring checks on character arrays, exploring subsequences, and converting strings to integers; then learn grouping by consecutive same letters.
Master the substring search problem by brute-forcing all positions in the big string against the small string, in C++ 17, explaining indexing, boundary conditions, and necessary type casting.
Solve the subsequence problem by iterating the big string and matching against the small string, incrementing on a match until the subsequence is found.
Learn to compare two strings lexicographically in C++17 by iterating characters, tracking a smaller flag, handling prefix cases, and printing the smaller string.
Demonstrates adding two numbers by iterating from the string end, handling carries and digits from right to left. Explains simple carry logic and efficiency limits for large inputs.
Mastering four critical skills using c++ 17: homework 3 builds an in-memory employee management app with add, print all, delete by age range, and update salary by name.
Develop a menu-driven employee management mini project in C++17, using parallel arrays for name, age, and salary, with lazy deletion, range filtering, and update operations.
Explore multidimensional arrays in C++ by treating data as a 2d matrix with rows and columns. Learn to define, initialize, access, and print a 7x4 grades table using nested loops.
Explore how to address grid neighbours with direction arrays in a 2d matrix, using (r,c) offsets for up, down, left, right and extended 8-neighbour patterns to simplify coding in competitions.
Practice 1 covers reading matrices, locating the maximum value's last occurrence in 2d arrays, comparing 1d and 2d max, and computing diagonal sums, last-row/last-column sums, plus swapping columns.
Explore greedy path selection in a matrix as a robot starts at [0][0], moves right, down, or diagonal to maximize each step. Learn direction arrays and 2D to 1D indexing.
Practice three easy multidimensional array challenges in C++17: compare two rows, sum the upper and lower triangular parts of a matrix, and transpose a matrix.
Tackle four medium to hard C++17 challenges: count primes in submatrices, identify mountains, simulate a wrapping robot, and convert between 3D and 1D arrays.
Solve prime queries efficiently by pre-processing input and checking primality per value, then detect eight-neighbor mountains, simulate an active robot, and generalize multi-dimensional to one-dimensional indexing.
Almost all other courses focus on knowledge. In this course, we focus on 4 critical skills.
Overall:
The course covers basic to advanced modern C++ syntax. Beginners in C++ will learn a lot!
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 + 6 projects
Special Teaching style: iterative, easy, and short
This is an English Course only. 1/3 Course now has Manual English subtitles. Remaining under-progress.
Content
Basic to advanced modern C++.
Fundamentals: Variables, Loops, Control Flow, Functions, Recursive Functions, Arrays
Advanced Topics: Pointers, STL, Templates, Headers, and Includes, Exception Handling, Compilation Process, Debugging
Object-Oriented Programming (OOP): Classes, Objects, Inheritance, Polymorphism, Operator Overloading
Modern Topics in C++11/C++14/C++17:
Move Semantics, Perfect Forwarding, Variadic Template, Folding expressions, Smart Pointers, Lambda Expressions, Wrappers (Optional, Variant, Any), Uniform initialization, noexcept, Structured Binding, Nested namespaces, misc.
OOP: Member initializer, Defaulted and Deleted Functions, Delegating constructors, Inheriting Constructors
STL: Forward list, Initializer list, Array, Unordered containers
Design: Several principles and patterns are embedded in the homework & projects
A huge set of Quizzes, 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
Several quizzes to master the concepts
Clarification: The core intentions of this course to provide very strong introduction to C++. Specifically up to the 6th project. After the last project, the course introduces some further modern C++ syntax (no quizzes/homework in this part). If you are new to C++, there is no course that competes with this one. But, if you are expert or target working with C++ in the market, you will need to good deeper after this course. A useful reference is "C++17 - The Complete Guide" book. Not that, this course provides some C++17 coverage but not all of it. However, the course provides pretty good coverage for C++11/14. Please consider the table of content if you are not new to C++ to satisfy your expectations.
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.
By the end of the journey
Solid understanding of programming concepts using C++
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
More career options such as games or embedded development.
Don't miss such a unique learning experience!!