C++ Learning Guide// for Android

Master the core of high-performance code.

Learn C++ from your first program onwards, with lessons that make you think and challenges that make you look closer. Then practise with algorithms, design patterns and the questions interviewers really ask.

Free to start, with an optional one-time Pro upgrade. No ads, no subscription.

main.cpp path.h
#include <iostream>
#include <string>
#include <vector>

int main() {
    std::vector<std::string> path{
        "pointers", "classes", "templates"};

    for (const auto& topic : path)
        std::cout << "Learned " << topic << '\n';

    return 0;
}

      
  • [ OK ]Free to start// Pro is a one-time purchase
  • [ OK ]No ads// and no subscription
  • [ OK ]Works offline// everything is in the app
  • [ OK ]No account// progress stays on your phone

// try a lesson, right here

One lesson, every kind of question

This is how lessons work in the app: a short read, then one of each kind of question. Check your answer, and if it's wrong you get one more try before the explanation.

// interview prep

Walk into the interview ready

266 questions interviewers really ask, from junior to senior roles. Every one has a clear answer and a code example. Here are six from the app, try them:

// the learning path

From Hello, World! to modern C++

Short sections that build on each other, each with its own review. A few stops along the way:

{} int *p class STL 20 main() types pointers classes templates modern C++
terminal
  1. $ build learning-path
  2. [ ok ]Anatomy of a C++ Program
  3. [ ok ]Variables, Types, and Constants
  4. [ ok ]Program Flow
  5. [ ok ]Functions
  6. [ ok ]Pointers and References
  7. [ ok ]OOP: Classes and Objects
  8. [ ok ]Inheritance and Polymorphism
  9. [ ok ]Smart Pointers
  10. [ ok ]The Standard Template Library
  11. [ ok ]Lambda Expressions and Templates
  12. [ ok ]Threading
  13. [ ok ]Modern C++
  14. Build finished. Next: algorithms, patterns and interview prep.

// how a lesson works

Every lesson asks something of you

Read a little, then answer. These are the kinds of questions you'll meet.

int count = 0; for (int i = 0; i < n; ++i) if (count = 10) if (count == 10) alarm(); ?

predict_output()

Read the code and say what it prints.

find_the_bug()

One line is wrong. Which one, and why?

compare_snippets()

Two versions of the same code. Pick the right one.

fill_the_gaps()

Choose the right words to finish the code.

match_pairs()

Match each term to what it means.

order_the_lines()

Put scrambled lines back in the right order.

trace_the_table()

Follow the values through the code, step by step.

choose_the_answer()

A straight question with one clear answer.

// beyond the lessons

Everything else is included

<challenges> <algorithms> <patterns> <cheatsheets> <interview> <progress> #include
int count = 0;
if (count = 10)
    alarm();   // always runs

#include <challenges>

Debugging challenges

Junior, medior and senior challenges. Find the wrong line and learn the mistake before your compiler teaches it to you.

while (lo <= hi) {
    int mid = lo + (hi - lo) / 2;
    if (v[mid] < key) lo = mid + 1;
    else hi = mid - 1;
}

#include <algorithms>

Algorithms

Searching, sorting and data structures, traced step by step so you see what each line does.

class Logger {
public:
    static Logger& get() {
        static Logger instance;
        return instance;
    }
};

#include <patterns>

Design patterns

The classic patterns, creational, structural and behavioural, with the problem each one solves and how it looks in C++.

std::sort(v.begin(), v.end());
auto it = std::find(v.begin(), v.end(), 42);
auto node = std::make_unique<Node>();

#include <cheatsheets>

Cheat sheets

The syntax and the standard library you keep looking up, collected by topic and ready when you need it.

// Q: Pointer or reference?
// A: A reference can't be null
//    and can't be reseated.
//    [ mark as mastered ]

#include <interview>

Interview Q&A

266 questions for junior, medior and senior roles, with answers you can mark as mastered. Try a few

streak.days += 1;
section.progress = 100;
badges.push_back("Pointers");

#include <progress>

Streaks and progress

See how far you are in every section, keep your streak going and collect badges as you finish.

// inside the app

Made for your phone

C++ Learning Guide
The C++ Learning Guide: the learning path, algorithms, debugging challenges and interview questions

// how it's paid for

Start free, pay once

Start for free. Pro unlocks the full curriculum and everything else in the app, for a single payment that's yours to keep. There are no ads and no subscription.

plan.h
struct Plan {
    bool free_to_start = true;
    bool pro_is_one_time = true;   // pay once, keep it
    bool subscription = false;
    int  ads = 0;
};

// learning Python too?

The Python Learning Guide works the same way

Its own lessons, challenges and interview questions, in the same style.