Modern-CPP-Programming README

The project's README from github.com/federico-busato/Modern-CPP-Programming. As one markdown file: README.md.

Modern C++ Programming

C++03 / C++11 / C++14 / C++17 / C++20 / C++23 / C++26

This open-access course is directed at those who are already familiar with C and object-oriented programming aiming for a proficiency level of C++ programming. The course covers the basics of C++ programming and moves on to advanced C++ semantics and concepts.

Key features:

If you enjoy the course or you find it useful, please add a Star

stars - Modern-CPP-Programming

Roadmap:

  1. Move from Latex to Typst.
  2. Fully-open source the material and allow direct contribution.

Table of Contents

CHAPTERS

# TITLE MAIN FOCUS
1 Introduction (html) History of C/C++, Areas of applications, Course introduction
2 Preparation (html) Books, How to compile, Hello world
3 Basic Concepts I (html) Type System, Fundamental types, and Operators
4 Basic Concepts II (html) Integral types and arithmetic
5 Basic Concepts III (html) Floating-point types and arithmetic
6 Basic Concepts IV (html) Entities, Enumerators, Structures, Control flow statements
7 Basic Concepts V (html) Heap, Stack, Pointers, References, Const properties, Conversion operators
8 Basic Concepts VI (html) Functions, Lambda expressions, Preprocessing directives
9 Object-Oriented Programming I (html) Class hierarchy, Constructor, Destructor, Class keywords
10 Object Oriented Programming II (html) Polymorphism, Operators overloading
11 Templates and Meta-programming I (html) Function template, Type traits, Compile-time utilities
12 Templates and Meta-programming II (html) Class template, SFINAE
13 Translation Units I (html) Linkage and One Definition Rule
14 Translation Units II (html) Dealing with multiple translation units and files,#include, Modules
15 Code Conventions I (html) Project organization, Code conventions intro, Entities conventions
16 Code Conventions II (html) Template, Namespace, Modern C++, Maintainability, Naming, and Formatting conventions
17 Debugging and Testing (html) Execution/memory debugging, Sanitizers, Hardening techniques, Unit tests, Test-Driven Development
18 Ecosystem (html) Cmake, Documenting, and Other Tools
19 Utilities (html) Main std libraries
20 Containers, Iterators, and Algorithms (html) Containers, Iterators, Algorithms, Ranges
21 Advanced Topics I (html) Move semantics, Universal reference, Type deduction
22 Advanced Topics II (html) Error handling, C++ idioms, Smart pointers
23 Performance Optimizations I (html) Amdahl's Law, Performance bounds, Architecture concepts (ILP, SIMD, etc.), Memory hierarchy
24 Performance Optimizations II (html) Arithmetic optimizations, Memory optimizations, etc.
25 Performance Optimizations III (html) Compiler optimizations, Profiling, Benchmarking tools
26 Software Design I (html) Basic Concepts, Principles, Use cases
27 Software Design II (html) Design Patterns and Idioms
28 Binary Size (html) Binary size aspects
29 Build Time (html) Build time aspects

ALL-IN-ONE BOOK: modern-cpp.pdf (could be a few commits behind), html

TOPICS IN DETAILS

1. Introduction

2. Preparation

3. Basic Concepts I - Type System, Fundamental Types, and Operators

4. Basic Concepts II - Integral Types

5. Basic Concepts III - Floating-point Types

6. Basic Concepts IV - Entities and Control Flow

7. Basic Concepts V - Memory Concepts

8. Basic Concepts VI - Functions and Preprocessing

9. Object-Oriented Programming I - Class Concepts

10. Object-Oriented Programming II - Polymorphism and Operator Overloading

11. Templates and Meta-programming I - Function Templates and Compile-Time Utilities

12. Templates and Meta-programming II - Class Templates and SFINAE

13. Translation Units I - Linkage and One Definition Rule

Modern-CPP-Programming (federico-busato/Modern-CPP-Programming)

cpp14
Searching Database…

What is this?A free, open-access Modern C++ Programming course by Federico Busato covering standards from C++03 to C++26 — from language basics to advanced features, tools and optimization.
What form does the course take — videos, slides, a book?Slides only, no videos: 29 lectures with 2000+ slides, each chapter published as HTML, plus an all-in-one modern-cpp.pdf book that may lag a few commits behind.
Is the material fully open source — can I fix a typo myself?Not yet — today you consume the published slides and PDF. The roadmap is to move from LaTeX to Typst, fully open-source the material and allow direct contributions.
I know C and some OOP — is this course aimed at me?Yes — it targets people already familiar with C and object-oriented programming. It starts from C++ basics and moves to advanced semantics, so no prior C++ is needed.
What performance material does it go into?Three dedicated chapters: Amdahl's Law and performance bounds, architecture concepts such as ILP and SIMD, the memory hierarchy, then arithmetic, memory and compiler optimizations with profiling and benchmarking tools.
Does it teach debugging and testing too?Yes — a dedicated chapter covers execution and memory debugging, sanitizers, hardening techniques, unit tests and Test-Driven Development.
Size
683.8 MB
Stars
16.2K
Age
8y
Commits · 90 Days