CPPA / CPP / 01
C++ for Teens
Fundamentals, STL and games.
Open the syllabusAustralia · Ages 13 to adult · Modern C++
C++ gives a programmer control that most languages hide: where data lives in memory, when it is copied, and how much each line costs. That control is why it is used for games, simulations, contest programming and systems software, and why small mistakes can be expensive. In our classes, Australian teenagers and adults work through modern C++ over live video, starting with a first program and ending with the standard library and their own classes. This page shows what we cover, measures what one missing character costs, and explains where C++ fits for Australian students and adults.
Live teaching since 2020 · 10,000+ students · Modern C++, measured
In short
C++ classes online teach the C++ language: types, functions, references and memory, the standard library, object-oriented design and writing fast code, usually in modern C++17 or later. C++ is one of the four languages allowed in the Australian Informatics Olympiad. Modern Age Coders runs these lessons over live video for learners across Australia, either in a small level-matched group or privately, beginning with a free class.
Start here
Chosen by age and goal. Each card opens the syllabus.

CPPA / 01
Ages 13 to 18 from zero: fundamentals, the STL, algorithms and real games.
Open the syllabus →
CPPA / 02
For 18 and over: fundamentals to modern C++ and systems programming.
Open the syllabus →
CPPA / 03
Pointers, memory and structs: the C underneath C++, for adults.
Open the syllabus →Why C++
C++ trades convenience for control. Learners who understand that trade write code that is both fast and correct.
| Idea | In Python or JavaScript | In C++ |
|---|---|---|
| Types | Decided while the program runs | Declared and checked when compiling |
| Copies | Mostly hidden | Every copy is a choice you make |
| Memory | Managed for you | Managed by the language rules and by you |
| Speed | Good enough for most tasks | Close to what the hardware allows |
| Errors | Often at run time | Many at compile time, some very subtle |
Australian Curriculum content description AC9TDI10P09 asks Years 9 and 10 students to "implement, modify and debug modular programs, applying selected algorithms and data structures, including in an object-oriented programming language".
C++ is a full object-oriented language, so it can carry that work well beyond what the curriculum requires.
The Australian Informatics Olympiad lists its languages plainly: "Allowed languages are C, C++, Java or Python 3."
Students preparing for contests should also read our competitive programming page.
A worked example
In C++ a function can receive a copy of its argument or a reference to the original. With big data the difference is dramatic; with small data it is nothing.
We loaded the 17,218 station-name rows (383 different stations, repeated across months) from Transport for NSW's monthly usage file into a std::vector<std::string> and wrote two identical counting functions. One takes std::vector<std::string> v, so every call copies all 17,218 strings. The other takes const std::vector<std::string>& v, a reference to the original. Each was called 2,000 times; we kept the fastest of five runs.
| Function parameter | Data | Calls | Fastest time |
|---|---|---|---|
| std::vector<std::string> (by value) | 17,218 strings | 2,000 | 2,766 ms |
| const std::vector<std::string>& (by const reference) | 17,218 strings | 2,000 | 31.3 ms |
| int (by value) | one number | 50,000,000 | 21.6 ms fastest |
| const int& (by const reference) | one number | 50,000,000 | 20.8 ms fastest |
Copying the vector on every call made the function about 88 times slower. The counting itself was the same; almost all the time went on copying strings.
For a single int, the two versions swapped places between runs, from about 21 to 45 ms either way. Passing a small value by value is just as good, and simpler.
Pass large objects you only read by const reference; pass small built-in types by value. Then measure, because compilers and machines differ.
cppreference describes a reference declaration as one that "Declares a named variable as a reference, that is, an alias to an already-existing object or function".
It adds that "References are not objects", which is why passing one does not copy the data.
A plain reference would let the function change the caller's vector. Adding const promises it will not, and the compiler enforces the promise.
Learners try removing const, then changing the vector inside the function, and read the compiler error.
Sources, read 14 October 2026: cppreference, reference declaration; data from Transport for NSW, station monthly usage (Creative Commons Attribution). The benchmark and timings are our own.
What we teach
We teach the safe, modern parts first and the sharp edges once learners can see why they matter.
| Stage | Topics | A project |
|---|---|---|
| Foundations | Types, input and output, conditions, loops, functions | A unit converter that rejects bad input |
| The standard library | std::vector, std::string, std::map, algorithms | A word counter for a long text |
| References and memory | References, const, scope, object lifetime | The copy benchmark on this page |
| Classes | Constructors, member functions, encapsulation | A small bank account or inventory class |
| Performance | Measuring, choosing data structures, complexity | Speeding up a slow program without changing its output |
Raw pointers and manual memory are important, but modern C++ offers safer tools for most tasks. Beginners who start with the standard library write working programs sooner and make fewer memory mistakes.
Pointers come once references and object lifetime are clear.
C++ compilers catch many mistakes before a program runs, but their messages can be long. Learners practise reading them from the first line that mentions their own code.
It is one of the most useful habits in the language.
Where it is used
Learners come to C++ for different reasons. The course adapts the projects; the language stays the same.
| Learner | Goal | Where to look next |
|---|---|---|
| Secondary student | Contests such as the AIO, or stretching beyond school | AIO preparation and competitive programming pages |
| University student | A unit that uses C or C++, or systems interest | The adult C++ and C courses |
| Game-curious teen | Understanding how games run fast | C++ for Teens and game programming |
| Working adult | Performance-sensitive or embedded work | The C++ Masterclass |
School students heading for the olympiad should read AIO preparation. Learners interested in games can see the game programming course. Those who would rather start with an easier language can begin with JavaScript classes or Python.
Compiler errors
C++ compilers report many mistakes before the program runs. Their messages can be long, so learners practise reading them.
| Message mentions | Usual cause | Usual fix |
|---|---|---|
| was not declared in this scope | A typo, a missing include or a variable used outside its block | Check the spelling and where it was declared |
| expected a semicolon | The previous line is missing its semicolon | Look one line above the reported one |
| no matching function for call | Arguments of the wrong type or number | Compare the call with the function's parameters |
| discards qualifiers | Changing something passed as const | Remove the change or make a copy |
| undefined reference | A function declared but never defined or linked | Write the function body or add the file to the build |
Errors about the standard library often run to dozens of lines. The useful line is usually the first one that names a file the learner wrote.
Learners highlight that line before reading anything else.
Turning on compiler warnings catches mistakes that are legal but probably wrong, such as an unused variable or a comparison between signed and unsigned values.
We compile with warnings on from the first lesson.
Getting started
C++ needs a compiler as well as an editor. The first lesson gets both working so the learner can practise between lessons.
| Item | Notes |
|---|---|
| A computer | Windows, macOS or Linux; a school or home laptop is fine |
| A compiler | A free, modern C++ compiler set up together in lesson one |
| An editor | A free code editor with C++ highlighting |
| A practice folder | One folder per project, kept under version control later |
Running the compiler by hand shows what an editor's build button hides: source file in, program out, errors in between.
Once that is clear, editor shortcuts make sense.
Learners rerun the copy benchmark from this page on their own computer. The exact times will differ; the point is to see the gap between copying and referencing for themselves.
Measuring for yourself is the habit we want.
Learners who already know another language usually move faster through the first stage and spend more time on references, object lifetime and the standard library, where C++ differs most from Python, Java or JavaScript.
Progress
A learner moves on once a project shows the level has been reached.
| Level | What you can do |
|---|---|
| 1. Beginner | Write programs with loops, functions and input checks |
| 2. Library user | Solve problems with vectors, strings, maps and standard algorithms |
| 3. Careful programmer | Use references and const correctly and explain object lifetimes |
| 4. Performance-minded | Measure a program, find the slow part and fix it without breaking it |
It is harder than Python, but motivated teens and adults can start with it. Many learn Python first and move to C++ once loops and functions feel natural.
The free class helps decide.
Any modern compiler and a free editor. We help set them up in the first lesson, on Windows, macOS or Linux.
Nothing has to be bought.
The catalogue
Laid out by age and by stage; the trial lesson settles which one comes first.
CPPA / CPP / 01
Fundamentals, STL and games.
Open the syllabusCPPA / CPP / 02
Modern C++ and systems, 18+.
Open the syllabusCPPA / CPP / 03
Pointers and memory, 18+.
Open the syllabusCPPA / ALG / 01
Logic first, then structures.
Open the syllabusCPPA / ALG / 02
Trees, graphs and complexity in depth.
Open the syllabusCPPA / ALG / 03
Where fast C++ pays off.
Open the syllabusCPPA / OTH / 01
An easier first language.
Open the syllabusCPPA / OTH / 02
Object-oriented design, 13 to 18.
Open the syllabusCPPA / OTH / 03
Core Java to Spring Boot, 18+.
Open the syllabusHow lessons run
Teaching happens from India during the hours that line up with Australian afternoons and evenings, booked in your own state's clock and moved when daylight saving changes.
After school
For teens in term time.
Evening
For uni students and adults, by arrangement.
Weekend
Longer projects and reviews.
A compiler set up and a first program running.
Between five and ten classmates, all at a similar stage.
For a contest, a uni unit or a project.
Learners time their programs, as on this page.
Every error message is read, not guessed at.
Every line is typed by the learner, with the teacher steering.
Student work
Apps and sites made by our learners. The student labs hold many more.

AI and ML
An AI nutrition coach that reads what you eat and works you toward a target.

AI and ML
A chatbot that answers mathematics and programming questions, built and deployed by a student.

AI and ML
An assistant that helps a young person recognise unsafe situations online.

Web app
A weather forecasting site with live conditions for any location.
Fees
Outside India, C++ lessons are billed monthly in US dollars. You pay nothing to sign up and can leave at the end of any month.
Free first class
USD 0
no card required
Group batch
USD 100
a month, billed in US dollars
One to one
USD 150
a month, billed in US dollars
What families say
Families and learners in their own words, from our Google profile.
★★★★★
"The one step solution for my son. Modern Age Coders make learning coding so simple that kids love it. The teachers explain complex concepts clearly with practical exercises and interactive content."
Ria Mukherjee
Parent
★★★★★
"Modern Age Coders has been a game-changer for me. I struggled to grasp IT concepts and coding before joining, but their classes transformed everything. I can now confidently write complex programs with ease."
Samriddha Mondal
Student
★★★★★
"One of the most wonderful education centres out there. Education is not limited to school syllabus but focuses on skill development."
Vansh Agarwal
Student
★★★★★
"My child Dhairya is really enjoying the Modern Age Coders classes. This is his first online class and he eagerly looks forward to it. I can already see his improvement, and the teachers are very cooperative."
Sonam Oswal
Parent of Dhairya
★★★★★
"Modern Age Coders have wonderful teachers who teach in a clear, easy and practical way. The teacher boosts students' confidence and inspires them to learn without hesitation."
Sonu Goyal
Parent
★★★★★
"I highly recommend this computer coding class! The teachers are incredibly knowledgeable and passionate about coding."
Ritu Kedia
Parent
Learners ask
Core language, references and memory, the standard library, classes and objects, and measuring and improving performance, in modern C++.
By value copies the argument; by reference gives the function the original. In our test, copying a vector of 17,218 strings on each call took 2,766 ms for 2,000 calls, against 31.3 ms by const reference.
No. For small built-in types such as int, passing by value is just as fast and simpler; our int test showed no consistent difference.
Yes. The AIO allows C, C++, Java or Python 3.
Many learners do, because Python is gentler. Motivated beginners can start with C++ directly.
Modern C++, C++17 and later, with notes where older code differs.
Teens from 13 and adults. Younger students usually begin with Scratch or Python.
Our C++ for Teens course includes real games, and our game programming course page covers the wider route from Scratch to engines.
We make no job or salary promises. The classes build skills and projects you can show and explain.
Your first class is free and needs no card. Monthly fees for small groups and private lessons are in the fees panel.
Also on this site
Pages beside this one.
Contest skills for every age.
The school olympiad.
Building games step by step.
The language of the web.
Testing, Git and debugging.
Every Australian page, grouped by place and topic.
Start here
Send us a few details and we will arrange a call. In the first class we install a compiler with you, run a program and suggest a starting course.
Read how we teach or see all courses.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
WhatsApp is the easiest way to reach us from Australia. The +91 number is our India-based teaching team; there is no Australian shopfront.
A priority demo is a full class of about 45 to 60 minutes. After the class the mentor sends a written skill report and a personal learning roadmap on WhatsApp. If you enrol, the demo fee is adjusted against your first month's fee. Share your demo Order ID with us on WhatsApp and we take it off.
Book a priority demo