You will be ready to ship well-tested code to production, reason about performance and optimization, manage a robust build and testing system.
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.
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.
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.
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.
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
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.
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.
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.