C
The language that built the modern world — master pointers, memory, and systems programming from the ground up.
C was created at Bell Labs in the early 1970s and used to rewrite the Unix kernel. Fifty years later it still powers operating system kernels, embedded firmware, database engines, language runtimes, and nearly every piece of software you interact with daily. Python's interpreter is written in C. The Linux kernel is C. SQLite is C.
Learning C is not about writing C every day. It is about understanding what every other language is built on top of — what a pointer really is, why memory must be managed explicitly, what the compiler actually does to your source file, and how the OS hands control to your program. Those mental models transfer directly to debugging Rust ownership errors, understanding why Go avoids garbage collection pauses, and recognising when a Python performance problem is really a memory access pattern problem.
Work through the Fundamentals track alongside this one. The mental models there — how programs run, what the stack and heap are, what a compiler does — map precisely onto what you will see here in code.
Three tiers
- Beginner — Hello, C through Arrays and strings: the toolchain, primitive types, control flow, functions, scope, recursion, arrays, and C strings. After this tier you can write and compile real C programs.
- Intermediate — Pointers through File I/O: the concepts that make C distinctive and dangerous — pointers, pointer arithmetic, manual memory management with
malloc/free, structs, enums, and file I/O with error handling. - Advanced — Compilation model through Systems patterns: the four compilation stages, Makefiles, function pointers, memory alignment, POSIX threads, signals,
fork/exec, and pipes. After this tier you can read and reason about production systems code.
Pick a tier from the sidebar to begin.