C Systems Lab Course — Overview

A ground-up systems programming curriculum targeting developers with OOP backgrounds (Java, C#, JavaScript). The project has two deliverables:

Web App (complete)

A free, self-hosted React/Vite site with a dark terminal aesthetic. 10 modules, each containing 5 lessons + 1 capstone project. Deployed to Cloudflare Pages. Progress tracking via localStorage. Key design choice: inline styles + CSS variables (no Tailwind). Fonts: JetBrains Mono (body/code), Bebas Neue (headings).

Content is data-driven — each module lives in src/data/modules/m{N}.js exporting a structured object with lessons and sections. Section types include text, heading, code, callout, breakdown, stages, list, action, shell, expect. A simulated terminal (terminalScripts.js) provides interactive practice per lesson.

Companion PDF (complete — pre-publish)

A paid Typst-based PDF sold on Gumroad. Adds what the static site can’t: exercises with annotated solutions, deeper “why” explanations, real-world codebase connections (SQLite, Redis, CPython, Linux kernel), a debugging chapter, and interview prep. All 11 chapters written plus Appendices A (Debugging) and B (Interview Prep). Appendix C (repo guide) pending public GitHub URL.

Module Map

#TitleSubtitleLessonsProject
1m01-c-is-not-javaMindset shift for OOP developers5CLI Calculator
2m02-pointers-memory-modelThe core of C6Implement the String Library
3m03-dynamic-memoryYou own the heap5vec_t — Dynamic Array
4m04-structs-unions-bitfieldsLaying out data in memory5Free-List Allocator
5m05-c-preprocessorA separate language inside .c files5Debug Logging System
6m06-file-io-syscallsYour code talking to the OS5xxd — Hex Dumper
7m07-processes-signalsThe Unix process model5Minimal Shell
8m08-sockets-networkingNetwork code that works5HTTP/1.1 Static File Server
9m09-concurrencyThreads, mutexes, race conditions5Thread Pool with Work Queue
10m10-going-below-cRegisters, assembly, hardware5Coroutine Library

Concept Progression

The curriculum follows a deliberate bottom-up path: compilation model → types → pointers → heap → data layout → preprocessor → OS interface (files → processes → network) → concurrency → hardware. Each module assumes mastery of previous ones.

Key Design Decisions

  • OOP audience framing: Every concept is introduced relative to what a Java/C# developer already knows, then stripped down to what C actually does.
  • No textbook structure: Lessons read like guided walkthroughs, not reference material.
  • Projects are substantial: Shell, HTTP server, thread pool, coroutine library — these are real systems, not toys.
  • PDF as paid upsell: The web app is free and complete; the PDF adds structured practice and depth for serious learners.

Open Work

  • meta-project-status: Detailed completion tracking
  • Game Boy emulator ch12 — PDF-exclusive capstone chapter; recommended Option A. Not yet written. See meta-gb-emulator.
  • Terminal rework — simulated terminal is honest but not functional. Phased plan: WASM for Modules 1–4, local companion binary for Modules 5–10. See meta-terminal-plan.
  • Strategic questions — PDF versioning, long-term pricing, exercises repo as independent product, expansion beyond C. See source-product-strategy.