Skip to content

ichadha8/learn-cpp

 
 

Repository files navigation

C and C++ Systems Training

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++.

Course Shape

  • 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.md explains what code is provided and what is intentionally left blank.
  • .devcontainer/ configures GitHub Codespaces.
  • .github/workflows/ contains a starter CI workflow.

Fast Start

For a full setup walkthrough, read INSTRUCTIONS.md.

Open the repository in GitHub Codespaces, then run:

cmake --preset dev
cmake --build --preset dev

To work on one assignment with its unit tests:

cmake --preset hw01
cmake --build --preset hw01
ctest --preset hw01 --output-on-failure

Repeat 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.

Recommended Timeline

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.

Design Philosophy

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.

About

Quick guide / lesson plan on learning fundamentals of C and C++ with project based learning.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 58.9%
  • C 23.4%
  • Python 9.2%
  • CMake 7.4%
  • Other 1.1%