C++Craft
Demystifying the dark art

C++Craft is a depth-first C++ course for people who prefer understanding “why?” over blindly learning rules. It proposes to rebuild the language from its bare metal so as to present the soundness of its logical construction, offering mental models that explain its difficulties rationally.

The course

If we define the success of a C++ course by how quickly its students become able to write functional C++ code, the focus is on providing the shortest path to delivery. Although it is a perfectly valid approach, C++Craft does something radically different.

C++Craft aims at empowering its readers with the tools to understand deeply the basics of the language. Instead of attempting to cover a lot of ground quickly, it builds the language from its most elementary pieces, and defines its success by how little is left unexplained.

Instead of handing you as many keys as possible to unlock the quickest path to producing code, it invites you to earn them, one at a time. Instead of telling you how to avoid a difficulty, it guides you through solving its puzzle so that you become able to choose how to deal with it. The dark corners of the language often disappear when they are illuminated by the principles, mechanisms, and compromises of the underlying problem.

By the time you write your first function in this course, you will know what a function actually is, what happens when it is called, and why. That understanding is the point.

This is not a typical C++ course.
It will not give you working code in the first ten minutes.

It will give you a clear understanding of what that code actually does.
Which takes longer.
At first.

It is built on the conviction that excellence comes from solid basics.
Depth rather than breadth.

C++Craft is meant to be a humble stepping stone on your road to mastering C++. Nothing more, nothing less.

Who it is for

  • Complete beginners who want to understand programming, not just make it work.
  • Programmers from other languages (especially python, C#, java, web) who want to understand how C++ is different.
  • Intermediate C++ programmers whose foundations feel shaky and want to rebuild them more solidly.

If you are looking for quick results, project-oriented, recipes, tutorials, or working code to copy, this is not the right place. Give it a try, but don't insist too much if it's not for you.
learncpp.com is excellent and might serve you better. Come back when you are ready to go deeper.

Box guide

Lessons use colour-coded boxes to signal the register of what is being said. Think of them as tone or gesturing, independently of the content.

↩ Illus. A worked illustration: "let's see this in practice."
◎ Aside A tangent or optional reference: "by the way."
→ Principle A particularly important idea: "remember this."
⚠ Pitfall Where people get bitten: "easy mistake to make."
ℹ Recap A summary of what was just covered: "here is what we established."

Any box can be foldable. Boxes that are folded by default are optional depth; the lesson works without opening them. Don't hesitate to leave them be, you can always return later.

Questions & support

Found an error or imprecision? Open a GitHub issue. Corrections are welcome and help future readers.

Have a question about the content? Send an email.