System Programming — Ordered Learning Path (Zero → Mastery)

This learning path takes you from absolute beginner to system programming mastery. Follow the sections in order for the best learning experience. Each section builds on the knowledge from previous sections.


1. Foundations (Must Come First)

Build a solid foundation in computer science fundamentals before diving into systems programming.

Topic Description
Binary and Hexadecimal Deep Dive Understand number systems that computers use
Math for Programming Essential mathematics for systems programming
Data Structures from First Principles Core data structures every programmer needs
Algorithms Deep Dive Algorithm design and analysis
Computer Systems (CSAPP) A programmer’s perspective on computer systems
CSAPP Deep Learning Projects Hands-on projects from CSAPP 3rd Edition

2. Core C & Toolchain (Systems Baseline)

Master C programming and the essential tools for systems development.

Topic Description
C ABI Deep Dive Application Binary Interface essentials
C Linking Deep Dive Understanding the linker and linking process
Shared Libraries Projects Working with shared/dynamic libraries
C Performance Deep Dive Performance optimization in C
C Secure Coding Deep Dive Writing secure C code
GNU Make Deep Dive Build automation with Make
Build Systems Projects Modern build systems and practices
GDB Deep Dive Debugging with GDB
LLDB Deep Dive Debugging with LLDB

3. Linux / Unix Internals

Deep dive into the operating system that powers most servers and embedded systems.

Topic Description
Linux CLI Mastery Command-line proficiency
Linux/Unix Internals Deep Dive Core OS internals
Linux System Tools Mastery Essential system administration tools
systemd Projects Modern Linux init system
Linux Crash Dump Analysis Debugging system crashes
BPF/eBPF Linux Linux observability and tracing
SELinux Deep Dive Security-Enhanced Linux

4. Processes, Memory, Concurrency

Master the core concepts of process management, memory, and concurrent programming.

Topic Description
Concurrency: Threads & Semaphores Thread synchronization primitives
Concurrency & Parallel Programming Parallel computing patterns
C++ Concurrency and Parallelism Modern C++ concurrency
NUMA vs UMA Architectures Memory architecture deep dive
File Synchronization File locking and synchronization

5. Operating Systems (Deep Systems)

Build and understand operating systems from the ground up.

Topic Description
Operating Systems from First Principles OS concepts and implementation
OS Kernel Projects (Track A) Build your own kernel
Microkernels Microkernel architecture
Linux Kernel Deep Dive Linux kernel internals
SerenityOS Deep Dive Modern hobbyist OS study

6. Hardware & Architecture

Understand the hardware that runs your software.

Topic Description
CPU & ISA Architecture Processor architecture fundamentals
ARM Deep Dive ARM architecture
ARM Assembly Projects Programming in ARM assembly
Bare Metal Programming Programming without an OS
Bootloader Deep Dive System boot process
Verilog from Zero Hardware description language

7. Embedded & Firmware

Program microcontrollers and embedded systems.

Topic Description
Firmware Deep Dive Firmware development
RTOS from Scratch in C Build a real-time operating system
ESP32 Programming Projects ESP32 microcontroller projects
ESP32 Without Arduino Native ESP32 development
Embedded Linux Linux on embedded systems
Embedded Linux Deep Dive Advanced embedded Linux

8. Binary Analysis & Reverse Engineering

Analyze and understand compiled binaries.

Topic Description
Disassembly from Scratch Reading assembly code
Binary Analysis Analyzing executable files
Reverse Engineering Linux Linux reverse engineering
Windows PE/DLL Deep Dive Windows executable formats

9. Networking at the Systems Level

Low-level network programming and protocols.

Topic Description
Network Protocols: Spec to Practice Implementing network protocols
SSH Deep Dive Secure Shell protocol
SSL/TLS Network Security Transport layer security
WireGuard Deep Dive Modern VPN protocol
VPN: WireGuard & Tailscale VPN implementation

10. Virtualization & Isolation

Container and virtual machine technologies.

Topic Description
Hypervisor & Virtualization Deep Dive Hypervisor internals
Virtualization & Hyperconvergence Modern virtualization
Linux Distribution Building Build your own Linux distro

11. Advanced Runtime & Language Internals

Compiler and runtime system implementation.

Topic Description
LLVM Projects LLVM compiler infrastructure
Compilers & Interpreters Language implementation
Interpreters Deep Dive Building interpreters
Programming Language Construction Designing programming languages
Modern Garbage Collectors Memory management systems
Modern GC Deep Dive Advanced GC algorithms

12. Cross-platform System Programming

Windows systems programming.

Topic Description
Win32 API Deep Dive Windows API programming
Windows Architecture Windows OS internals
Windows Systems Programming (C++) Windows C++ development
Windows Execution Model Process and thread management

13. Mastery / Synthesis

Apply everything you’ve learned to real-world projects.

Topic Description
Systems Libraries (Phase 2, Track B) Building system libraries
Systems Integration (Sprint 5) Integration projects

Learning Tips

  1. Follow the order: Each section builds on previous knowledge
  2. Do the projects: Reading alone isn’t enough—build things
  3. Debug everything: Use GDB/LLDB constantly to understand what’s happening
  4. Read source code: Study real implementations (Linux kernel, glibc, etc.)
  5. Join communities: r/osdev, Handmade Network, OSDev.org forums

← Back to all projects