Guided timed challenges built around the training path.
Higher-level challenge tracks for advanced practice.
Build your C basics: output, arguments, and the alphabet.
Strings, conversions, and bitwise operations in C.
Strings, lists, math, and number bases in C.
The deep end: interpreters, parsers, and harder algorithms. Twice as long, twice as deep.
Reimplement C's string toolkit by hand: searching, concatenation, and the bounded strn-functions with their classic pitfalls.
Work directly with raw bytes through void pointers: filling, copying, the overlap-safe move, and dynamic allocation.
The capstone: reimplement the heart of libc by hand, from the ctype predicates all the way to a working printf.
A timed C challenge covering text transforms and libc-style utilities
A timed C challenge covering stream parsing, recursion, combinatorics, and search
A timed C challenge covering process pipelines, signals, and compact parsers
A single-task C challenge: build a non-blocking TCP server that relays messages between many simultaneous clients on the loopback interface, with zero memory or file-descriptor leaks
A timed C challenge on parsing a 2D grid, dynamic programming over it, and running a cellular simulation
A timed C challenge on reaching values through pointers, walking arrays inside their bounds, and owning every byte you allocate
A timed C challenge on integer types, conversions and overflow, then on modelling data with structs, unions and enums
A timed C challenge on walking and re-linking nodes, then on the stacks and trees that evaluators are built from
A timed C challenge on the invariant a sort establishes, the bricks it is built from, what it costs, and sorting anything at all