The course is absolutely free and consists of: A GitHub org that holds written lectures and all other resources and tools: https://github.com/cpp-for-yourself
The accompanying YouTube course (43 videos to date): https://www.youtube.com/playlist?list=PLwhKb0RIaIS1sJkejUmWj...
My main goal was to design a course that leaves nobody behind. Every single lecture relies strictly on concepts explained in previous ones. We start from an absolute beginner baseline (a simple "hello world", variables, functions, and control flow), move through manual command-line compilation, libraries, CMake, and unit testing with Google Test, and then push into deeper territory: memory management, smart pointers, the mechanics of move semantics, dynamic vs. static polymorphism, and parallelism.
While there is always more to know with C++, I believe that the course, as it stands now, covers the majority of the things a C++ engineer should know to succeed at an average work place. At least when talking about C++17 (and C++20 to a degree). I chose C++17 as the baseline partially because I started the course some years ago and partially to also cover the needs of people in automotive, military, and medical branches as those are usually lagging behind in their allowed standard version.
Throughout the course, I aimed to use simple yet realistic examples, both in the lectures and for the interactive projects. I also deliberately favored simplified intuitive explanations over rigorous pedantic language, which I found makes modern C++ far less intimidating to learn, while hopefully not encouraging bad habits.
A few practical details on how it’s built:
- The Lectures: The material lives in Markdown files containing full lecture scripts and code snippets. All code is checked validated to build and every animation is typescript code written with Motion Canvas. The repo with code is here: https://github.com/cpp-for-yourself/lectures-and-homeworks
- The Homeworks: The course includes practical projects. You create your own homework repository from a provided template, work on the assignments, and open PRs there. A custom CI setup automatically builds your code, runs your tests, injects my own test suite to validate your solution, and reports the results back in a dashboard directly on your PR. See the template repo here: https://github.com/cpp-for-yourself/homeworks
Because this project spanned a couple of years, things changed along the way. For example, I lost some hair and gained glasses. But jokes aside, my recording setup and teaching style evolved a lot. The earliest videos feel quite different from the later ones. I stand by the technical content of the early lectures but vastly prefer the later style of delivery, geared a bit more towards entertainment while staying factual. If you want to sample this newer style, start from the second half of the course, somewhere after the move semantics lecture.
Please tell me if you think such an endeavor is useful and if the format suits your liking. I take HN community criticism very seriously and will definitely account for it in any future videos that I record (or rerecord) for this course. Thank you for your time!
P.S. I went back and forth on whether to use "Show HN" here, but ultimately decided to use it because the course is completely original, built from scratch, and structured around an interactive GitHub codebase akin to an open-source technical book. Happy to adjust if the moderators feel otherwise.
soinus•49m ago
An if you like what you see and know someone who could benefit from this - do share it!