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…

这是什么?Federico Busato 推出的免费开放 Modern C++ 编程课程,内容覆盖从 C++03 到 C++26 的各个标准——从语言基础一直讲到高级特性、工具和性能优化。
这门课是什么形式——有视频、幻灯片还是书?只有幻灯片,没有视频:共 29 讲、2000 多页幻灯片,每一章都以 HTML 形式发布,另外还有一本整合成一册的 modern-cpp.pdf 电子书(可能比最新内容落后几个提交)。
这些资料完全开源吗——我能自己改个错别字吗?暂时还不行——目前你只能阅读已发布的幻灯片和 PDF。按路线图,以后会从 LaTeX 迁移到 Typst,把资料完全开源,并允许大家直接参与贡献。
我懂 C,也会一点面向对象编程——这门课适合我吗?适合——这门课就是面向已经熟悉 C 和面向对象编程的人。它从 C++ 基础讲起,逐步深入到高级语义,所以不需要任何 C++ 基础。
课程里讲了哪些性能方面的内容?有三个专门章节:Amdahl 定律和性能上限、ILP 和 SIMD 等体系结构概念、存储器层次结构,然后是算术、内存和编译器优化,还会用到性能分析和基准测试工具。
也教调试和测试吗?教——有一个专门的章节讲解执行调试和内存调试、sanitizer、安全加固技术、单元测试以及测试驱动开发(TDD)。
Size
683.8 MB
Stars
16.2K
Age
8y
Commits · 90 Days