Learn to build safety-critical systems in C. Prove first, code second.
  • C 90.3%
  • Shell 5.7%
  • Makefile 2.9%
  • Python 1.1%
Find a file
2026-01-24 22:12:56 +00:00
assets Add book promotion - C From Scratch now available on Leanpub 2026-01-24 22:12:56 +00:00
projects Complete framework: Modules 4-7 + fixes 2026-01-10 18:30:03 +00:00
.gitignore Remove tarball, add *.tar.gz to gitignore 2026-01-07 10:16:55 +00:00
CONTRIBUTING.md Update docs for Module 7, SPEC v1.1.0 2026-01-10 18:02:41 +00:00
LICENSE Initial commit: Pulse heartbeat liveness monitor 2026-01-05 12:40:01 +00:00
PHILOSOPHY.md Add Module 2: Baseline statistical normality monitor 2026-01-07 00:50:58 +00:00
README.md Add book promotion - C From Scratch now available on Leanpub 2026-01-24 22:12:56 +00:00
scaffold.sh Initial commit: Pulse heartbeat liveness monitor 2026-01-05 12:40:01 +00:00
SPEC.md Update docs for Module 7, SPEC v1.1.0 2026-01-10 18:02:41 +00:00

C From Scratch

Learn to build safety-critical systems in C.

Not "Hello World". Real kernels. Mathematical rigour. Zero dependencies.

"Math → Struct → Code → Test"


📘 The Book

C From Scratch Book Cover

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 int kills 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
  • malloc in safety-critical code
  • Tutorials that teach bad habits

📖 Buy the book on Leanpub →


Philosophy

Most tutorials teach you to write code that seems to work.
This course teaches you to write code that provably works.

The method:

  1. Define the problem mathematically
  2. Prove correctness formally
  3. Design structs that embody the proof
  4. Transcribe the math into C
  5. Test against the contracts
┌─────────────────────────────────────────────────────────────┐
│                    THE APPROACH                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Problem  ──►  Math Model  ──►  Proof  ──►  Structs        │
│                                                │            │
│                                                ▼            │
│                           Verification  ◄──  Code           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

The Seven Foundation Modules

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.


The Safety Stack

┌─────────────────────────────────────────────────────────────────────┐
│                    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"     │
└─────────────────┘ └─────────────────┘ └─────────────────┘

Core Properties

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

Getting Started

# 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 run

Start with Pulse Lesson 1: The Problem.


Specification

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

Who This Is For

  • 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"

Prerequisites

  • Basic C syntax (variables, functions, structs)
  • Comfort with command line
  • Willingness to think before coding

Author

William Murray — 30 years UNIX systems engineering

License

MIT — See LICENSE


"Sensors report. The Captain decides."

📘 Buy the Book · 🌐 SpeyTech · 💻 GitHub