Modern C++
Values and ownership, containers, algorithms and the systems underneath.
Free programming courses & practice
Understand how things work, then make them work. Learn a language, solve problems and build your way into systems programming. The lessons and practice here are free.
THE PRACTICE LOOP
CHOOSE A STARTING POINT
Start with the fundamentals, or pick the tool you want to get better at. Each course shows what to learn first. Python, SQL, Git, Bash and Lua have their own learning sequences.
Values and ownership, containers, algorithms and the systems underneath.
Build a Python foundation, then design experiments with NumPy and PyTorch.
Query real tables, join data and reason about NULLs, transactions and indexes.
Work with real history, integrate changes and recover when things go wrong.
Handle quoting, pipelines, files and processes. Build useful command-line tools.
Learn values, tables and modules before metatables, coroutines and resources.
Make the bits make sense. Learn binary, hexadecimal, one’s complement and two’s complement, with diagrams and practice.
Number foundations →BUILD ON THE FUNDAMENTALS
Learn Go or JavaScript from the beginning, or bring your Python and SQL foundations into focused courses. Every course names its prerequisites and ends with a graded project.
Understand HTTP exchanges and build deterministic URL, JSON, pagination and retry-policy tools over supplied offline responses.
Design small Python programs with real classes, explicit ownership, stable interfaces and dependable failure behavior.
Extend Python functions and iterators into reusable, deterministic data transformations.
Turn messy CSV and JSON into validated records, safe joins and an auditable sales report using Python's standard library.
Parse local HTML, resolve and classify URL references, and produce deterministic link reports in Python.
Native Go language practice from typed values and shared slices to explicit errors and a deterministic JSON log-summary capstone.
An independent Node.js language course from explicit values to a tested local data CLI.
Package and review a tiny Python service through processes, images, build inputs, argv, ports, configuration, storage and lifecycle. Graded work uses honest offline fixtures.
Design durable relational schemas with native SQLite keys, dependencies, integrity, migrations and order-level reports.
Reason about request, identity, data and output boundaries with deterministic Python policy fixtures and real in-memory SQLite.
Investigate structured logs, metric support and trace fixtures; write a reproducible report that separates observations, hypotheses and limits.
Build deterministic Python models of bounded work admission, delivery ownership, retry budgets and idempotent effects, then integrate a restartable job-state simulation.
PUT THE PIECES TO WORK
Choose a C++ container, investigate Git recovery or follow real rows through a SQL join.
Connect free courses around backend, systems, embedded or data work, with preparation and a concrete outcome.
Trace a small program, choose an explanation and use the feedback to decide what to practice next.
Take a contract into a project. Preview an original C++/Linux artifact publisher, with starter code and tests.
Free project preview →MORE THAN READING
Read worked examples, explore diagrams and use videos when another explanation helps. Connect the code to the idea behind it.
Answer checks, debug broken code and build in the editor. Test feedback shows what to work on next.
Use spaced coding review and flashcards to revisit the decisions: which type, which container, which command, and why.
Try flashcards →FOLLOW YOUR CURIOSITY
Move from language fundamentals to the systems they run on.
Yes. CodeRigor’s courses, lessons, exercises and flashcards are free. You can keep using them whether or not you choose an external paid course.
No. Python, SQL, Git, Bash and Lua have independent sequences. Inside each sequence, prerequisite links help you find the right order.
Choose a language: Python values and objects or C++ values and references. If the bits are unfamiliar, keep the binary and hex lessons alongside your study.