C++ Basics: Learn the Fundamentals
A step-by-step path through syntax, logic, functions, and memory, followed by deeper dives into algorithms, OOP, and advanced language features. Built for beginners and useful as revision.
The C++ fundamentals path
Thirteen chapters, in order, covering everything from your first program to structures and operator overloading. Each one builds directly on the last, so working through them in sequence is the fastest way to a solid foundation.
Advanced C++ guides
Once the fundamentals are solid, these guides dig into object-oriented programming, sorting algorithms, recursion, functional programming, exception handling, and trickier language features like multiple inheritance and operator behavior.
A complete guide to encapsulation, abstraction, inheritance, and polymorphism, the four pillars OOP is built on, explained with C++ specific examples.
Multiple inheritance and virtual inheritance, done the right way, with the ambiguity the diamond problem creates and how virtual base classes resolve it.
A file might not open, a network might fail, a value might be invalid. Learn try, catch, and throw, and how to keep programs stable when things go wrong.
Why Big O matters in your classes and methods, and how time complexity shows up differently once your code is organized around objects.
A paradigm where functions are first-class citizens and state mutation is avoided. See how functional ideas map onto a language built around objects.
Recursion is one of the most elegant tools in programming. Go beyond the basics into tree traversals, backtracking, and real applied problems.
A divide and conquer algorithm famous for being fast in practice, with an average time complexity that makes it a go-to sort for real-world use.
Sorting is one of the most common tasks in programming. Learn the simpler sorts that build intuition before tackling divide-and-conquer approaches.
Sorting is a fundamental concept in computer science. Start here for an overview of how and why we sort data before going deeper into specific algorithms.
