PopularJourney
Learn C++
Learn C++ from scratch with a free, interactive online course. Master C++ basics, pointers, classes, and templates through hands-on coding exercises and AI hints — and earn a free certificate of completion when you finish.
204,067+ codders enrolled
- Beginner friendly
AI-assisted coding help
Hands-on interactive lessons
Audio narration on every lesson
Quizzes to test your knowledge
Free certificate of completion
Syllabus
3 sections3 projects234 lessons206 challenges1,567 quiz questions01Section 1
Fundamentals
Build a strong foundation with essential concepts and basic skillsSTART LEARNINGIntroduction
4 lessons325- 01C++Challenge
- 02Hello World!ChallengeQuizAudio
- 03CommentsQuizAudio
- 04Basic Program StructureChallengeQuizAudio
Variables Part 1
6 lessons846- 01Whole NumbersChallengeMasteryQuizAudio
- 02Real NumbersChallengeMasteryQuizAudio
- 03StringChallengeQuizAudio
- 04BooleanChallengeQuizAudio
- 05CharChallengeQuizAudio
- 06ConstantsChallengeQuizAudio
Variables Part 2
5 lessons334- 01Type DeclarationChallengeQuizAudio
- 02Naming ConventionsQuizAudio
- 03Recap - Initialize VariablesChallenge
- 04Type Casting Part 1ChallengeQuizAudio
- 05Type Casting Part 2QuizAudio
Operators Part 1
7 lessons654- 01Arithmetic OperatorsChallengeQuizAudio
- 02Modulo OperatorChallengeQuizAudio
- 03Increment/DecrementChallengeQuizAudio
- 04Post Increment/DecrementChallengeQuizAudio
- 05Arithmetic ShortcutsChallengeQuizAudio
- 06Comparison OperatorsChallengeQuizAudio
- 07String ComparisonQuizAudio
Operators Part 2
4 lessons423- 01Logical Operators Part 1ChallengeQuizAudio
- 02Logical Operators Part 2ChallengeQuizAudio
- 03Recap - Simple LogicChallenge
- 04Logical Operators Part 3ChallengeQuizAudio
Decision Making
6 lessons637- 01If StatementChallengeQuizAudio
- 02If - ElseChallengeQuizAudio
- 03Switch StatementChallengeQuizAudio
- 04Conditional OperatorChallengeQuizAudio
- 05Recap - If ElseChallenge
- 06Nested If - ElseChallengeQuizAudio
Input/Output Basics
5 lessons524- 01cout StatementChallengeMasteryQuizAudio
- 02cin StatementChallengeQuizAudio
- 03String InputQuizAudio
- 04Recap - Till 120Challenge
- 05Recap - True or FalseChallenge
Number Calculator
Project4 lessons16- 01Welcome MessageChallengeQuizAudio
- 02Getting NumbersProject
- 03Basic OperationsProject
- 04Formatted OutputProject
Loops
9 lessons760- 01For Loop Part 1ChallengeQuizAudio
- 02While LoopChallengeQuizAudio
- 03Do While LoopChallengeQuizAudio
- 04BreakChallengeQuizAudio
- 05ContinueChallengeQuizAudio
- 06For Loop Part 2QuizAudio
- 07Nested LoopsChallengeQuizAudio
- 08Infinite LoopsQuizAudio
- 09Recap - Dynamic InputChallenge
Functions
7 lessons739- 01Declare a FunctionChallengeQuizAudio
- 02ParametersChallengeMasteryQuizAudio
- 03Return TypesChallengeQuizAudio
- 04Function OverloadingQuizAudio
- 05Recap - Sigma FunctionChallenge
- 06Recap - Validation FunctionChallenge
- 07Void FunctionsChallengeQuizAudio
Arrays Basics
9 lessons848- 01Declaring ArraysChallengeQuizAudio
- 02Accessing ElementsChallengeQuizAudio
- 03Modifying ElementsChallengeQuizAudio
- 04Recap - Pretty Print ArrayChallenge
- 05Arrays And FunctionsQuizAudio
- 06Recap - Product ArrayChallenge
- 07Recap - Reversed ArrayChallenge
- 08Enhanced For LoopChallengeQuizAudio
- 09Common Array OperationsChallengeQuizAudio
Strings
5 lessons441- 01C-style Strings Part 1ChallengeQuizAudio
- 02C-style Strings Part 2QuizAudio
- 03String OperationsChallengeQuizAudio
- 04String Functions Part 1ChallengeQuizAudio
- 05String Functions Part 2ChallengeQuizAudio
Final Challenges
3 lessons37- 01Number PatternChallengeQuizAudio
- 02Pattern FinderChallenge
- 03Student Grade CalculatorChallenge
02Section 2
Logic & Flow
Develop problem-solving skills and create dynamic, interactive programsSTART LEARNINGPointers and Memory
8 lessons757- 01What is a Pointer?Quiz
- 02Address-Of OperatorChallengeQuiz
- 03Dereference OperatorChallengeQuiz
- 04Null PointersChallengeQuiz
- 05Pointers and ArraysChallengeQuiz
- 06Dynamic Memory with 'new'ChallengeQuiz
- 07Freeing Memory with 'delete'ChallengeQuiz
- 08Recap - Pointer PracticeChallenge
Vectors (Dynamic Arrays)
9 lessons861- 01Introducing std::vectorQuiz
- 02Creating a VectorChallengeQuiz
- 03Adding ElementsChallengeQuiz
- 04Accessing ElementsChallengeQuiz
- 05Vector SizeChallengeQuiz
- 06Iterating with a For LoopChallengeQuiz
- 07Range-Based For LoopChallengeQuiz
- 08Removing ElementsChallengeQuiz
- 09Recap - Vector OperationsChallenge
Project: Task List Tool
Project5 lessons1- 01Project OverviewChallenge
- 02Adding a TaskProject
- 03Viewing TasksProject
- 04Removing a TaskProject
- 05Finishing the ToolProject
Maps (Key-Value Pairs)
7 lessons644- 01Introducing std::mapQuiz
- 02Creating a MapChallengeQuiz
- 03Accessing and Modifying ValuesChallengeQuiz
- 04Checking for KeysChallengeQuiz
- 05Removing PairsChallengeQuiz
- 06Iterating Over a MapChallengeQuiz
- 07Recap - Word FrequencyChallenge
Project: Inventory Tool
Project5 lessons1- 01Project SetupChallenge
- 02Adding and Updating ItemsProject
- 03Checking StockProject
- 04Removing StockProject
- 05Printing the Inventory ReportProject
Sets (Unique Elements)
6 lessons538- 01Introducing std::setQuiz
- 02Create Set & Add ElementsChallengeQuiz
- 03Checking for ElementsChallengeQuiz
- 04Removing ElementsChallengeQuiz
- 05Iterating Over a SetChallengeQuiz
- 06Recap - Unique NumbersChallenge
Advanced Functions
7 lessons653- 01Pass by ReferenceChallengeQuiz
- 02Intro Lambda ExpressionsChallengeQuiz
- 03Lambdas with ParametersChallengeQuiz
- 04Lambdas with Return ValuesChallengeQuiz
- 05Introduction to RecursionQuiz
- 06Recursive FactorialChallengeQuiz
- 07Lambda SortChallengeQuiz
Basic Error Handling
6 lessons540- 01Introduction to ExceptionsQuiz
- 02The 'try' and 'catch' BlocksChallengeQuiz
- 03The 'throw' KeywordChallengeQuiz
- 04Different Exception TypesChallengeQuiz
- 05The Catch-All HandlerChallengeQuiz
- 06Recap - Safe DivisionChallenge
Final Challenges
3 lessons3- 01Vector Data FilteringChallenge
- 02Map Value SearchChallenge
- 03Pointer and Dynamic ArrayChallenge
03Section 3
Object Oriented Programming
Discover how to organize code with classes, objects, and reusable structuresSTART LEARNINGFundamentals of OOP
11 lessons1187- 01External FilesChallengeQuiz
- 02C++ Build & CompilationChallengeQuiz
- 03Header Files & Source FilesChallengeQuiz
- 04Namespaces & ScopeChallengeQuiz
- 05Introduction to OOP in C++ChallengeQuiz
- 06Classes vs ObjectsChallengeQuiz
- 07The 'this' PointerChallengeQuiz
- 08Methods (Member Functions)ChallengeQuiz
- 09Attributes (Data Members)ChallengeQuiz
- 10Ctors & Dtors BasicsChallengeQuiz
- 11Recap - Simple CalculatorChallenge
Memory Management
6 lessons644- 01Stack vs Heap MemoryChallengeQuiz
- 02Pointers and ReferencesChallengeQuiz
- 03Dynamic Memory (new/delete)ChallengeQuiz
- 04Smart Pointers in C++ChallengeQuiz
- 05RAII in C++ChallengeQuiz
- 06Recap - Dynamic Array ManagerChallenge
Constructors & Destructors
9 lessons972- 01Default ConstructorChallengeQuiz
- 02Parameterized ConstructorChallengeQuiz
- 03Copy ConstructorChallengeQuiz
- 04Move ConstructorChallengeQuiz
- 05Constructor Init ListsChallengeQuiz
- 06Delegating ConstructorsChallengeQuiz
- 07Destructor Deep DiveChallengeQuiz
- 08Rule of Three / Five / ZeroChallengeQuiz
- 09Recap - String ClassChallenge
Class Properties
7 lessons753- 01Instance vs Static MembersChallengeQuiz
- 02Getters and SettersChallengeQuiz
- 03Const Member FunctionsChallengeQuiz
- 04Mutable KeywordChallengeQuiz
- 05Static Methods and VariablesChallengeQuiz
- 06Friend Functions & ClassesChallengeQuiz
- 07Recap - Bank Account ManagerChallenge
Encapsulation
6 lessons651- 01Access Specifiers in C++ChallengeQuiz
- 02Access Specifiers In DepthChallengeQuiz
- 03Information HidingChallengeQuiz
- 04Struct vs ClassChallengeQuiz
- 05Nested & Inner ClassesChallengeQuiz
- 06Recap - Student Records SystemChallengeQuiz
Operator Overloading
8 lessons863- 01Intro to Operator OverloadChallengeQuiz
- 02Arithmetic Operator OverloadChallengeQuiz
- 03Comparison Operator OverloadChallengeQuiz
- 04Stream OperatorsChallengeQuiz
- 05Assignment Operator OverloadChallengeQuiz
- 06[] and () Operator OverloadChallengeQuiz
- 07Type Conversion OperatorsChallengeQuiz
- 08Recap - Matrix ClassChallenge
Inheritance
8 lessons862- 01Basic InheritanceChallengeQuiz
- 02Inheritance Access LevelsChallengeQuiz
- 03Ctor & Dtor Call OrderChallengeQuiz
- 04Method OverridingChallengeQuiz
- 05Virtual Functions & VTableChallengeQuiz
- 06Multiple InheritanceChallengeQuiz
- 07Virtual InheritanceChallengeQuiz
- 08Recap - Employee HierarchyChallenge
Polymorphism
8 lessons860- 01Compile vs Runtime PolymorphChallengeQuiz
- 02Function OverloadingChallengeQuiz
- 03Virtual Functions RevisitedChallengeQuiz
- 04Pure Virtual FunctionsChallengeQuiz
- 05Abstract ClassesChallengeQuiz
- 06Interface Design in C++ChallengeQuiz
- 07Dynamic Casting & RTTIChallengeQuiz
- 08Recap - Shape CalculatorChallenge
Templates
6 lessons546- 01Function TemplatesChallengeQuiz
- 02Class TemplatesChallengeQuiz
- 03Template SpecializationChallengeQuiz
- 04Variadic TemplatesChallengeQuiz
- 05SFINAE & Type Traits BasicsQuiz
- 06Recap - Generic ContainerChallenge
STL Overview
6 lessons646- 01STL Overview & PhilosophyChallengeQuiz
- 02STL ContainersChallengeQuiz
- 03IteratorsChallengeQuiz
- 04STL AlgorithmsChallengeQuiz
- 05Functors & Lambda ExpressionsChallengeQuiz
- 06Recap - Word FrequencyChallenge
Advanced OOP Concepts
7 lessons763- 01Composition vs InheritanceChallengeQuiz
- 02Mixins via CRTPChallengeQuiz
- 03Pimpl IdiomChallengeQuiz
- 04Type ErasureChallengeQuiz
- 05Enum Classes & Strong TypingChallengeQuiz
- 06Exception Handling in OOPChallengeQuiz
- 07Custom Exception HierarchiesChallengeQuiz
Modern C++ Features
7 lessons764- 01Move Semantics & RvaluesChallengeQuiz
- 02Perfect ForwardingChallengeQuiz
- 03Lambda Expressions In DepthChallengeQuiz
- 04std::function & std::bindChallengeQuiz
- 05constexpr and constevalChallengeQuiz
- 06Structured BindingsChallengeQuiz
- 07optional, variant, anyChallengeQuiz
Design Patterns Part 1
6 lessons655- 01Intro to Design PatternsChallengeQuiz
- 02Singleton PatternChallengeQuiz
- 03Factory & Abstract FactoryChallengeQuiz
- 04Builder PatternChallengeQuiz
- 05Observer PatternChallengeQuiz
- 06Strategy PatternChallengeQuiz
Design Patterns Part 2
7 lessons764- 01Command PatternChallengeQuiz
- 02Adapter PatternChallengeQuiz
- 03Decorator PatternChallengeQuiz
- 04Template Method PatternChallengeQuiz
- 05State PatternChallengeQuiz
- 06Composite PatternChallengeQuiz
- 07RAII as a PatternChallengeQuiz
Final Challenges
2 lessons2- 01E-Learning PlatformChallenge
- 02Banking SystemChallenge
Why learn C++ with Coddy
- Write and run real C++ code in your browser — no compiler install, no toolchain setup. Each lesson compiles your C++ server-side and shows the output instantly.
- Coverage of modern C++: classes and objects, inheritance, virtual functions, references and pointers, templates, the STL — the C++ patterns you'd actually use today.
- AI-assisted hints help you read and fix C++ compiler errors (notoriously cryptic ones especially) so the language feels approachable instead of punishing.
- Free C++ certificate when you finish — useful for systems, game-dev, and embedded roles where C++ fluency is a baseline expectation.
Frequently asked questions about learning C++
Is C++ hard to learn?
C++ has a reputation for being one of the harder languages to learn — pointers, manual memory management, and a sprawling feature set all add up. The good news is you don't need every feature on day one. Coddy's course starts with the practical core (variables, control flow, functions, classes) and introduces pointers and templates only after the basics are solid.
Should I learn C or C++ first?
Both teach low-level thinking, but they lead in different directions. C is smaller and forces you to confront memory and pointers immediately. C++ is larger but supports a more gradual ramp through classes and the STL before you have to manage memory by hand. If your goal is application or game development, start with C++; for embedded or OS work, C is closer to the metal.
How long does it take to learn C++?
C++ basics — syntax, control flow, functions, simple classes — take three to six weeks of daily practice. Comfortable use of pointers, templates, and the STL usually takes three to six months. Mastery (modern C++ idioms, performance work, complex codebases) is a multi-year arc.
Can I learn C++ online for free?
Yes. Coddy's interactive C++ course is free — lessons, coding exercises, quizzes, and a certificate. The editor runs in your browser, so you don't need to install GCC, Clang, or Visual Studio locally to start writing C++.
Do I need to install a compiler to take this C++ course?
No. Every C++ exercise compiles server-side in a sandboxed environment and shows the output next to your code. No toolchain, no makefile, no IDE — just open the lesson and start coding.
Do I get a C++ certificate after the course?
Yes — when you finish Coddy's C++ course you receive a free certificate of completion. It's a verifiable proof point you can add to your resume or LinkedIn alongside portfolio code.