Learn to build safety-critical systems in C.
Not "Hello World". Real kernels. Mathematical rigour. Zero dependencies.
"Math β Struct β Code β Test"
C From Scratch: Learn Safety-Critical C the Right Way
The complete guide to writing C that doesn't just work β it provably works.
What you'll learn:
- The MATH β STRUCT β CODE β TEST methodology
- Fixed-width integers and why
intkills rockets (Ariane 5) - Contracts, preconditions, and invariants
- State machines that can't enter invalid states
- Memory safety without garbage collection
- The path from learning to DO-178C / IEC 62304 / ISO 26262 certification
What you won't find:
- "It works on my machine"
- Undefined behaviour swept under the rug
mallocin safety-critical code- Tutorials that teach bad habits
π Buy the book on Leanpub β
Most tutorials teach you to write code that seems to work.
This course teaches you to write code that provably works.
The method:
- Define the problem mathematically
- Prove correctness formally
- Design structs that embody the proof
- Transcribe the math into C
- Test against the contracts
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β THE APPROACH β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Problem βββΊ Math Model βββΊ Proof βββΊ Structs β
β β β
β βΌ β
β Verification βββ Code β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Module | Question | Role | Tests |
|---|---|---|---|
| Pulse | Does it exist? | Sensor | β |
| Baseline | Is it normal? | Sensor | 18/18 |
| Timing | Is it regular? | Sensor | β |
| Drift | Is it trending toward failure? | Sensor | 15/15 |
| Consensus | Which sensor to trust? | Judge | 17/17 |
| Pressure | How to handle overflow? | Buffer | 16/16 |
| Mode | What do we do about it? | Captain | 17/17 |
Plus: Integration Example β All modules working together.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MODULE 7: MODE MANAGER β
β "The Captain" β
β Decides: What mode? What actions allowed? β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MODULE 6: PRESSURE β
β "The Buffer" β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MODULE 5: CONSENSUS β
β "The Judge" β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββΌββββββββββββββββββββ
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β CHANNEL 0 β β CHANNEL 1 β β CHANNEL 2 β
β Pulse β Base β β Pulse β Base β β Pulse β Base β
β β Timing β β β Timing β β β Timing β
β β Drift β β β Drift β β β Drift β
β "Sensors" β β "Sensors" β β "Sensors" β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
Every module is:
- Closed β No external dependencies at runtime
- Total β Handles all possible inputs
- Deterministic β Same inputs β Same outputs
- O(1) β Constant time, constant space
- Contract-defined β Behaviour is specified, not implied
# Clone
git clone https://github.com/SpeyTech/c-from-scratch.git
cd c-from-scratch
# Try any module
cd projects/pulse
make && make test && make demo
# Or run the full integration
cd projects/integration
make runStart with Pulse Lesson 1: The Problem.
See SPEC.md for the complete framework specification:
- Core principles
- Module structure
- Contract definitions
- Composition rules
- Certification alignment (DO-178C, IEC 62304, ISO 26262)
This course is part of the SpeyTech ecosystem for deterministic, certifiable systems:
| Project | Description |
|---|---|
| Fixed-Point Fundamentals | Free course on fixed-point arithmetic |
| certifiable-* | Deterministic ML pipeline with cryptographic verification |
| C-Sentinel | Semantic security monitoring in pure C |
- Developers building safety-critical software
- Systems programmers who want provable correctness
- Students learning C the rigorous way
- Anyone tired of "it works on my machine"
- Basic C syntax (variables, functions, structs)
- Comfort with command line
- Willingness to think before coding
William Murray β 30 years UNIX systems engineering
- GitHub: @SpeyTech
- LinkedIn: William Murray
- Website: speytech.com
MIT β See LICENSE
"Sensors report. The Captain decides."
