This repository is a project-based training regimen for learning C, modern C++, Linux systems programming, debugging, performance work, and resume-grade project delivery.
It is designed for two learners who already know basic programming and want a compressed, job-focused path. The normal track is six weeks. The capstone track adds two larger projects: one in C and one in C++.
lessons/contains notes and implementation guidance.assignments/contains five scaffolded homeworks, one C++ warmup bonus, starter code, and tests.capstones/contains two portfolio projects with C/C++ cores and Python tooling.STARTER_SCOPE.mdexplains what code is provided and what is intentionally left blank..devcontainer/configures GitHub Codespaces..github/workflows/contains a starter CI workflow.
For a full setup walkthrough, read INSTRUCTIONS.md.
Open the repository in GitHub Codespaces, then run:
cmake --preset dev
cmake --build --preset devTo work on one assignment with its unit tests:
cmake --preset hw01
cmake --build --preset hw01
ctest --preset hw01 --output-on-failureRepeat with hw02, hw03, bonus-cpp-warmup, hw04, hw05,
capstone-c, or capstone-cpp.
The scaffold build is expected to pass before any homework is solved. Individual homework tests are intentionally written against the TODOs, so they may fail until you implement that assignment. The GitHub Actions workflow runs the scaffold build automatically and exposes the full assignment-test matrix as a manual workflow.
Week 1: C tooling, pointers, arrays, testing, and debugging.
Week 2: C memory, structs, ownership, parsing, and validation.
Week 3: Unix files, processes, redirection, signals, and timeouts.
Week 4: profiling, caches, mutation, fuzzing, and sanitizer workflows.
Week 5 bridge: basic C++ syntax, strings, vectors, classes, and tests.
Week 5 core: modern C++, RAII, STL, move semantics, and CMake.
Week 6: threads, sockets, synchronization, and service design.
Capstone C: FuzzLab, a coverage-guided process fuzzer with Python triage.
Capstone C++: PulseKV, a multithreaded key-value server with Python load tools.
Each homework is intentionally smaller than the hardest CSE320-style projects, but keeps the systems-course flavor: precise specs, strict output, unit tests, integration tests, and debugging requirements.
The capstones are where the gloves come off. They are milestone-based, resume-worthy projects meant to demonstrate engineering judgment, testing, tooling, and documentation.