A complete, self-contained study path for C++ coding rounds and robotics system design conversations at robotics and AI companies. Written for someone who knows Python and is learning C++ from scratch.
Every idea starts with a picture or a story, then a small example worked by hand, then the Python you would have written, then the C++ with every new symbol explained. Every problem is a compilable, self-testing C++ file.
| Folder | Contents |
|---|---|
| tutorial/ | Seven chapters: C++ basics, memory and the STL, grids and BFS/DFS, graphs and Dijkstra, heaps/trees/design, robotics-specific builds, interview day. Plus a list of UK robotics employers. |
| code/ | One standalone .cpp per problem with assert-based tests, a Makefile that builds and runs everything, and an A* grid planner as a CMake project with GoogleTest. |
| system-design/ | Five levels of robotics system design, from "what is a system" to full design questions worked end to end. |
| line-by-line/ | A website that teaches graphs, grids and trees visually: type a line of C++ and the page draws what it did. 26 lessons from arrays to BFS, DFS, Dijkstra, grid search, trees and linked lists. Open line-by-line/index.html in a browser. |
| pdf/ | Every chapter and level rendered as a PDF, plus two combined books. |
| cpp-interview-tracker.html | A progress tracker for every topic and problem. Open it in a browser. |
Requirements: g++ with C++17, cmake, Eigen 3 and GoogleTest. On Ubuntu:
sudo apt install build-essential cmake libeigen3-dev libgtest-devBuild and run every example, including the A* test suite:
cd code
makeCompile one file by hand:
g++ -std=c++17 -Wall -Wextra -O2 code/01-cpp-basics/01_two_sum.cpp -o two_sum && ./two_sumRebuild the PDFs after editing any markdown file (needs python3-markdown and WeasyPrint):
python3 pdf/build_pdfs.py- Start with tutorial/README.md; it has the six-week plan.
- Read a chapter's concept part and do every hand trace on paper.
- For each problem, read only the statement, close the file, and solve it in C++ in 25 minutes
with
-Wall -Wextra. Then compare with the solution. - Mark progress in the tracker. Only mark a concept done when you can explain it to someone else.
- Start the system design levels after chapter 03, one level per sitting.
tutorial/ chapters 01–08 and the index
code/
Makefile make | make 03 | make astar
01-cpp-basics/ ... 06-robotics/
03-grids-bfs-dfs/astar/ CMake + GoogleTest project
system-design/ levels 1–5 and the index
pdf/ rendered PDFs and build_pdfs.py
line-by-line/ the visual learning site (open index.html)