Show HN: A Modern C++ course with videos and interactive GitHub homeworks
github.com/cpp-for-yourselfHi HN. Over the last couple of years in my free time, I’ve been designing and recording a complete modern C++ course. I wanted to share it here in case people still care about things like this in this brave new age of AI.
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.
Comments
Hey HN, author here. It's always a bit nerve wrecking to post to HN, so please to not hesitate to tell me what you think about all the things above. I'm happy to answer any questions or get your criticism directly! Thank you!
An if you like what you see and know someone who could benefit from this - do share it!