What You Should Know Now — and What's Next
What You Should Know Now
- Core syntax: variables, control flow, arrays, functions
- Pointers in depth: addresses, dereferencing, pointer arithmetic, and passing by pointer
- Manual memory management with
malloc/free, and the bugs (leaks, double-frees, use-after-free) that come with it - Structs, unions, enums, and building your own data structures (linked lists, stacks, trees, hash tables) from scratch
- Multi-file programs, Make/CMake, and linking static and shared libraries
- Concurrency with
pthreads, processes withfork, and raw sockets - Undefined behavior, sanitizers, and what "safe C" actually means
What Should You Learn Next?
- A related language — C++ builds directly on everything here, adding classes, templates, and a much larger standard library on top of the same underlying memory model.
- Rust — a modern systems language that enforces the memory-safety rules this course asked you to track by hand, at compile time instead.
- Operating systems concepts — now that pointers, processes, and memory are concrete, a real OS course (or Operating Systems: Three Easy Pieces, a well-regarded free text) will make far more sense.
Build Something
Pick a project idea that solves an actual problem you personally have —
and build it in C from the start, running it under Valgrind and with
-fsanitize=address,undefined enabled from day one, rather than only
reaching for them after something breaks.