Intro to C++ Programming
Objects, Variables and Types
An introduction to the building blocks of our software - objects, and the variables that can be associated with them.
Intro to C++ Programming
Creating Variables
Creating variables to store and update the data that describes our objects. We also introduce comments, allowing us to describe our code in plain language.
Working with Bits
Working with Bits
Learn to use bitwise operators to pack multiple states into a single byte, reducing memory bandwidth use.
Working with Bits
Fast Filtering and Branchless Logic
Replace slow logical operators with fast bitwise arithmetic. Learn how to filter data without branching, avoiding pipeline flushes and speeding up queries.
Working with Bits
Quantization and Delta Encoding
Trade CPU cycles for memory bandwidth by compressing data using bit packing, quantization, and delta encoding.
Working with Bits
Advanced Bitwise Techniques
Use bloom filters for fast rejection, hierarchical bitmasks for spatial skipping, and hardware intrinsics using C++20's <bit> library.
Managing C++ Projects Using CMake
Object Files and the Linking Process
The linker's role in the build process, how it resolves symbols to combine object files, and how to troubleshoot common errors.
Managing C++ Projects Using CMake
Static and Shared Libraries
The difference between static and dynamic libraries, how to create them, and the trade-offs between them.
Managing C++ Projects Using CMake
Organizing a C++ Project
Learn how to structure your C++ projects for scalability and maintainability, from basic directory layouts to managing multiple modules.
Managing C++ Projects Using CMake
Managing Libraries and Dependencies
Learn to manage third-party libraries in C++, covering include/library paths, static vs. shared libraries, versioning, and platform differences.
Managing C++ Projects Using CMake
Automated Build Systems and Their Limitations
An introduction to traditional build tools like Makefiles and IDE projects, highlighting the maintenance, scalability, and cross-platform challenges that result