# Mission: C Programming — Understanding the Machine

## Why
Become a fundamentally better programmer by learning how memory and the machine actually work under the hood. C is the vehicle: it hides nothing, so every lesson is also a lesson in what higher-level languages do for you (and what they cost). Secondary aims: dabble in algorithms in C later, and eventually build small internal tools/apps for personal use.

## Success looks like
- Read and write C confidently, including pointers, without spooky-action-at-a-distance bugs
- Reason about where every byte of a program lives (stack / static / heap) and who owns it
- Spot undefined behavior on sight and explain why it's undefined
- Build a small, correct C program end-to-end (e.g. a CLI tool) with no memory errors under basic tooling
- Use that mental model to learn other systems languages (Rust, Go, Zig) faster

## Constraints
- Hobbyist schedule — lessons must be self-contained and quick to complete
- Working from "A Little Book of C" PDF as primary text; supplement with trusted online resources
- Prefers hands-on coding over pure reading

## Out of scope (for now)
- Algorithms & data structures as a focused track (deferred — revisit once memory model is solid)
- Large app architecture / build systems beyond a single translation unit
- C++ (separate language; would dilute the foundations-first goal)
- GUI programming
