C: memory, representation and systems
Progress from representation and pointers through allocation, text, binary protocols, files, owned structures and instrumented parsers.
20 units · Plus, Pro · 20 programming subjects + 2 security tracks
Branches show this unit’s authored theory, coding and assessment work.
Unit 1 / 20
Prove arithmetic fits before evaluating it
Make widths, signedness and text grammar explicit, and preserve the caller output whenever a C arithmetic or parsing operation is invalid.
0 prerequisite skills · Reading, guided completion and independent success remain separate evidence.
The course, in order
Open a unit in the map to inspect its activities. Reading, guided completion, independent work and review remain distinct evidence.
- Prove arithmetic fits before evaluating it
Make widths, signedness and text grammar explicit, and preserve the caller output whenever a C arithmetic or parsing operation is invalid.
Open this unit - Parse the whole scalar before publishing it
Validate fixed grammar, range and calendar rules without accepting prefixes, locale variation or a partially written output.
Open this unit - Carry the bound with every borrowed pointer
Validate length, capacity, termination and aliasing before touching a C buffer, including a source range inside the destination allocation.
Open this unit - State the valid range before the first read
Express iteration with size_t bounds that handle empty and singleton ranges without underflow, distinguish not-found from index zero, and touch only the declared span.
Open this unit - Validate encoded text before normalizing it
Read exactly the supplied byte span as strict UTF-8 or a portable ASCII identifier, with explicit NUL and capacity policy.
Open this unit - Decode into a staged text buffer
Validate percent escapes, HTTP field controls and quoted-field grammar before overlap-safe publication with one explicit terminator policy.
Open this unit - Decode bits and prefixes without host assumptions
Read canonical variable-length integers and bounded signed bit fields using explicit byte order, width and publication rules.
Open this unit - Treat formatted length as a checked result
Measure complete formatted output, preserve variadic type information and write borrowed sinks only after one bounded record is ready.
Open this unit - Validate the whole source before touching the destination
Normalize portable relative paths lexically and stage bounded file input so oversize or malformed source data cannot partially publish.
Open this unit - Name borrowed views and detached copies separately
Return span offsets into caller storage when borrowing and allocate or fill independent preview bytes only after complete capacity validation.
Open this unit - Commit new ownership only after allocation succeeds
Preserve prior valid state across allocation failure and unwind each successfully acquired allocation exactly once in reverse construction order.
Open this unit - Drain the record and publish only a valid decode
Own FILE state across short input and errors, enforce byte and grammar bounds before retention, and leave destination data untouched when a complete record cannot be decoded.
Open this unit - Verify integrity before copying payload bytes
Compute portable network checksums and validate a record CRC before publishing an overlap-safe payload or its used length.
Open this unit - Validate every edit before moving bytes
Apply alias-safe range replacements or an index-removal batch only after shape, size, order and capacity have all been proved.
Open this unit - Move list ownership without recreating nodes
Filter and merge acyclic malloc-owned lists while preserving survivor identity, deterministic tie order and exactly-once deallocation.
Open this unit - Keep identity valid across reuse and growth
Reject stale pool handles with generations and return stable interned string pointers whose storage is owned independently of caller buffers.
Open this unit - Stage complete records across file boundaries
Import whole big-endian records atomically and find a byte pattern incrementally even when it crosses an internal read boundary.
Open this unit - Observe cancellation between effects and unwind all ownership
Check cancellation before each callback effect and consume registered cleanups in reverse order even after one cleanup reports failure.
Open this unit - Treat instrumentation and atomic publication as evidence
Combine bounded framing, integrity, checked state transitions and final publication, while interpreting supplied instrumentation output without mistaking silence for a clean run.
Open this unit - Plan the whole bounded state change before commit
Produce a deterministic dependency order and apply a registry command batch with private staging and complete rollback on any invalid command.
Open this unit
