Master C++ by working on real projects

Learn to write idiomatic, performing, well-tested code that can be shipped to production 🚀

Practice template metaprogramming, Object Oriented Design, asynchronous and concurrent programming: We guide you with highly curated project notes, test cases, API skeletons — and give you access to all the code.

See our Projects
Project snippets: C++ source file, CMake file, continuous integration
Project snippets: C++ source file, CMake file, continuous integration

Become a professional C++ developer

You will be ready to ship well-tested code to production, reason about performance and optimization, manage a robust build and testing system.

Turn an idea into code

Build something real.

Our projects start with a plain-English description of a problem. We help you turn it into a set of formal requirements and think about the scenarios and corner cases your implementation will have to support.

And just like in real life, requirements will get more sophisticated and your code will have to adjust.

Following the approach of Test-Driven Development, we invite you to write tests right from the beginning and provide you with our own test cases to check your work.

From requirements to implementation
Example of Project task, with included test cases

Learn by doing

You are the developer.

Template metaprogramming, polymorphism, concurrent programming are only tools: You will master them by solving practical problems.

We guide you with high-quality project notes, test cases, API skeletons. You won't feel alone throughout the whole project — but we encourage you to write all the code.

Unsure about your code? You have always access to our reference implementation.

Not just a tutorial

Ready to deploy.

Work on all stages of a real-world project. You will solve interesting technical problems but also learn to tackle the hard challenges of software development: Performance and space optimization, API design, scalability, testability.

You will also learn how to build a robust build and test automation pipeline, both locally and in the cloud.

These are not beginner's guides: You will build a professional piece of software end-to-end — ready to be shipped.

Not just C++: Use git, ninja, CMake to build a robust CI/CD pipeline
Every Project touches advanced C++ topics that you can dive deeper into

Master C++

Your way.

Each project covers a curated selection of C++ programming patterns, libraries, and tools that you will use to solve the problem at hand.

For some topics, we also dig deeper into theoretical concepts and their practical applications, with specialised references in case you want to know more.

But you are not forced to follow every step we propose. Feel free to explore the topics you are most interested in. All of them will help you become a professional C++ developer.

We are constantly working on new content

Our Projects

Each Project is an end-to-end text-based walkthrough, taking you from requirements to deployment

Live transport network monitor

The city transport company wants to distribute the number of passengers across their lines to balance the network load. They want to create a program that receives live information about passengers' trips and produces travel suggestions that will help keep the network balanced.

Learn to write asynchronous code in C++ that can handle tens of thousands of events from different sources and dispatch operations in reaction to them.

Expected dev time: 30-40 hours

Things we'll cover in this project
Every project always covers
What you get
Things you should know

Professional, portable build system


Create a professional build system based on industry-standard tools (CMake, ninja). We will add support for multiple operating systems, build targets and configurations, static and shared libraries. We will also explore different options for packaging, distributing, and installing your software.


Continuous Integration and Delivery system


Make sure your work is ready to be shipped with a state-of-the-art CI/CD pipeline: From local test development to remote test automation and continuous deployment, the only thing left will be to add your own code to test.

Subscribe to know about new project releases
You are almost there! Check your inbox to confirm the subscription.
Sorry! Something went wrong while submitting the form.
Please try again using this link.

About us

We learned C++ through projects.

We are software developers who have worked on tens of C++ projects in different industries, from scientific research to finance and embedded systems.

We only became better developers when we learned to work on the full life cycle of a project, dealing with the nuances of software testing and delivery and with the reality of design and performance trade-offs.

We have converged these ideas in Learn C++ Through Projects to offer the kind of content we wished we had when we made the jump to professional software development.

Project snippets: C++ source file, CMake file, continuous integration