01. Environment Setup — one evening, then never think about it again¶
Time: ~2 hours total. Prerequisites: none.
Why this course exists¶
Your Windows toolchain is MinGW GCC 6.3 from 2016. It does not support most of C++17
(no std::optional, no std::string_view, no std::filesystem, no std::shared_mutex, broken
threads). Everything on your resume says Linux, GCC, CMake, GDB. You already have the answer
installed: WSL Ubuntu 24.04 with GCC 13.3, Clang 18, CMake 3.28, Ninja, GDB 15, Valgrind 3.22,
Docker, Python 3.12 and the PostgreSQL 16 client. Checked on 2026-10-03; nothing to install.
From now on all C and C++ in this curriculum is built and run inside WSL, edited from VS Code on Windows through the Remote-WSL extension. Windows-only topics (WinDbg, MSVC, Win32 threads) stay on Windows and are covered in their own modules.
Modules¶
| # | Module | Time |
|---|---|---|
| 01 | VS Code + WSL development loop | 1 h |
| 02 | Verify the toolchain: build, test, debug, sanitize | 1 h |
You are done when you can¶
- Open a folder that lives in
/home/shakir/...in VS Code with the green "WSL: Ubuntu-24.04" badge. - Build
code/hello.cppwithg++ -std=c++17 -Wall -Wextra -Werror -pthreadand run it. - Build the tiny CMake project in
code/cmake_hello/with Ninja and run its test withctest. - Hit a breakpoint in VS Code inside WSL, and separately in plain
gdbin the terminal. - Run a program under Valgrind and under AddressSanitizer and read both reports.
- Say in one sentence why the code must live in the Linux filesystem, not under
/mnt/d.
Resume lines this course backs up¶
"Linux, GCC, CMake, GDB" in Platforms & Tools, and "Building modern C++17 systems projects on Linux".