"Building systems from first principles"
A 9-month systems engineering roadmap from data structures to distributed systems, with a focus on concurrency, networking, and distributed systems.
Progress: Active
| Metric | Value |
|---|---|
| Current Phase | Phase 3: Networking |
| Status | Active |
| Hours Invested | 46h 50m |
| Current Item | DNS Server |
Phases:
- Phase 1: The Basics - Timeline
- Phase 2: Concurrency - Timeline
- Phase 3: Networking - Timeline
- Phase 4: Beyond (Optional)
Resources:
Project Adam is a comprehensive journey through systems programming, progressing from fundamental data structures to sophisticated distributed systems. Each project builds on previous work, creating a cohesive path from basic algorithms to production-grade networking and distributed systems.
- Duration: October 24, 2025 - June 2027
- Core Projects (Phases 1-3): 6 projects
- Optional Projects (Phase 4): 6 additional projects
- Primary Languages: C++ (Phases 1-2), C (Phase 3)
- Hardware: Raspberry Pi 5 (16GB RAM)
Note: Phase 1 implementations are educational artifacts only. Production code in later phases uses industry-standard libraries (STL, Boost, Folly,
absl, etc.).
C++ provides the low-level control necessary for deep systems understanding. Unlike high-level languages that abstract away hardware details, C++ requires explicit management of memory, hardware resources, and performance optimization.
The skills developed through C++ systems programming transfer broadly to other languages and domains. Understanding pointers, memory management, concurrency primitives, and hardware interaction creates a foundation that makes higher-level abstractions more intuitive.
Building essential data structures and algorithms. C++ implementation mastery with manual memory management.
Projects: Dynamic Array, LinkedLists, Stack, Queue, Hash Table, Trie, LRU Cache, Red-Black Tree, Bloom Filter, Ring Buffer, Skip List, Sliding Window Protocol
Time: ~68-85 hours
Building concurrency primitives and exploring parallel computing.
Projects: Thread Pool with Work-Stealing, Lock-Free Data Structures (Capstone)
Time: ~45-55 hours
Building network protocols from scratch using C to master POSIX networking APIs. This foundational knowledge will be essential when working with C++ libraries like Boost.Asio.
Projects: DNS Server, UDP from Scratch, TCP (Capstone, using Level-IP to focus on learning)
- Language: C (POSIX API focus)
- Time: ~190-240 hours
Optional advanced projects for continued learning after mastering the core roadmap.
Projects: BitTorrent Client, Custom Memory Allocators, HTTP/2 Server, gRPC Server, Service Mesh Data Plane, QUIC Protocol
Recommendation: Prioritize open source contributions over solo projects for maximum career impact.
Languages: C++17 (Phases 1-2), C (Phase 3), ARM Assembly Systems: Linux, bare-metal ARM Hardware: Raspberry Pi 5 (16GB, Cortex-A76) Tools: GCC, GDB, Valgrind, Git Standards: Google C++ Style Guide for C++ projects, GoogleTest
2025-2026
- Oct 2025 - Jan 2026: Phase 1 (The Basics)
- Jan 2026 - Apr 2026: Phase 2 (Concurrency)
- May 2026 - Dec 2026: Phase 3 (Networking)
Phase 1:
- DS&A Reference Implementations
Phase 2: 2. [x] Thread Pool with Work-Stealing 3. [x] Lock-Free Data Structures (Capstone)
Phase 3: 4. [ ] DNS Server 5. [ ] UDP from Scratch 6. [ ] TCP from Scratch (Capstone)
- BitTorrent Client
- Custom Memory Allocators
- HTTP/2 Server
- gRPC Server
- Service Mesh Data Plane
- QUIC Protocol
- Open Source Contributions - See recommendations
- Memory-Mapped Files (CSE 451)
- Distributed KV Store (CSE 452)
- MiniJava Compiler (CSE 401)
- Software-Defined Networking (CSE 461)
- Data Center Systems (CSE 453)
- SimpleDB (CSE 444)
- Open Source Recommendations - C/C++, Rust, Go, and Java projects to contribute to
- Books & Resources - Reading progress and learning resources
- Technical: Master systems programming from algorithms to hardware
- Academic: Apply coursework to real-world projects
- Professional: Build portfolio demonstrating complete systems mastery
- Personal: Achieve technical excellence through deliberate practice
- Daily: 1 hour on personal projects
- Class Projects: As needed (separate from daily hour)
- Total Time Investment: ~730 hours over 20 months
- Philosophy: Quality over quantity
Status: Phase 3: Networking (Active) Last Updated: April 9, 2026 Next Milestone: DNS Server