Flowsmith

6-month track

C++

Six months from your first compiler error to a real systems project, in modern C++.

What is C++?

C++ is a compiled, high-performance systems language that adds object orientation, templates and fine-grained memory control on top of C. It still powers game engines, trading systems, browsers and embedded firmware because it gives you direct control over memory and hardware without making you write everything from scratch.

What you'll learn

  • Read and write idiomatic modern C++ (C++17/20), not just C-with-classes
  • Manage memory safely with RAII and smart pointers instead of raw new/delete
  • Use the STL's containers and algorithms instead of hand-rolling your own
  • Debug a real program with gdb and reason about undefined behaviour

Curriculum

month 1

Foundations

Get comfortable with the compiler, the syntax and the basic building blocks.

  • Variables, types and operators
  • Control flow: if/else, loops, switch
  • Functions and header files
  • Compiling and linking with g++

month 2

Memory & Pointers

Move from values to addresses — the part of C++ most languages hide from you.

  • Pointers and references
  • Arrays, the stack and the heap
  • Dynamic allocation with new/delete
  • Debugging a segfault

month 3

Object-Oriented C++

Model real problems with classes instead of loose functions.

  • Classes, constructors and destructors
  • Inheritance and polymorphism
  • Operator overloading
  • Encapsulation and access control

month 4

The Standard Library

Stop reinventing containers and algorithms — use the STL.

  • vector, map, set and string
  • Iterators and ranged for
  • <algorithm>: sort, find, transform
  • Working with strings properly

month 5

Modern C++

Write C++ the way it's actually written today, not in 1998.

  • Smart pointers: unique_ptr, shared_ptr
  • Move semantics and RAII
  • Templates and generic functions
  • Exceptions and error handling

month 6

Capstone Project

Put six months together into one real, working program.

  • Design a small systems project (e.g. a key-value store)
  • Multithreading basics
  • Debugging with gdb
  • Ship and document the project