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)

Searching Database…

Что это такое?Бесплатный курс по современному C++ от Federico Busato в открытом доступе, охватывающий стандарты от C++03 до C++26 — от основ языка до продвинутых возможностей, инструментов и оптимизации.
В каком виде идёт курс — видео, слайды, книга?Только слайды, без видео: 29 лекций с более чем 2000 слайдов, каждая глава опубликована в формате HTML, плюс книга modern-cpp.pdf со всем материалом сразу, которая может отставать на несколько коммитов.
Материалы полностью в открытом исходном коде — могу я сам поправить опечатку?Пока нет — сейчас можно только пользоваться готовыми слайдами и PDF. В планах — перейти с LaTeX на Typst, полностью открыть исходники материалов и разрешить принимать правки напрямую.
Я знаю C и немного ООП — этот курс для меня?Да — он рассчитан на тех, кто уже знаком с C и объектно-ориентированным программированием. Курс начинается с основ C++ и доходит до сложной семантики, так что знание C++ заранее не требуется.
Чему он учит по части производительности?Три отдельные главы: закон Амдала и пределы производительности, архитектурные концепции вроде ILP и SIMD, иерархия памяти, а затем оптимизации вычислений, работы с памятью и компиляции с инструментами профилирования и бенчмаркинга.
А отладке и тестированию там тоже учат?Да — отдельная глава посвящена отладке выполнения и памяти, санитайзерам, техникам защитного программирования (hardening), юнит-тестам и разработке через тестирование (Test-Driven Development).
Size
683.8 MB
Stars
16.2K
Age
8y
Commits · 90 Days