C++ is a high-level general-purpose programming language released in 1985 designed with systems programming and embedded systems in mind. Its main highlights are performance, efficiency, and flexibility of use. In this course, we will achieve an in-depth understanding of the language, from basic types and functions to more advanced topics such as template metaprogramming and concurrency.
Textbook: A tour of C++, 3rd edition by Bjarne Stroustrup. Covers the following topics:
-
Basics: programs, functions, types, variables, arithmetic, scope and lifetime, constants, pointers, arrays and references, tests, mapping to hardware
-
User-defined types: structs, classes, enums, unions
-
Modularity: separate compilation, namespaces, function arguments and return variables
-
Error handling: exceptions, invariants, error-handling alternatives, assertions
-
Classes: concrete and abstract types, virtual functions, class hierarchies
-
Essential operations: copy and move, resource management, operator overloading, conventional operations, user-defined literals
-
Templates: parameterized types, parameterized operations, template mechanisms
-
Generic programming: concepts, generic programming, variadic templates, template compilation
-
Library overview: standard library components and organization
-
Strings and regular expressions: strings, string views, regular expressions
-
Input and output: I/O state, I/O of user-defined types, output formatting, streams, file system
-
Containers: vector, list, forward_list, map, unordered_map, allocators
-
Algorithms: iterators, predicates, parallel algorithms
-
Ranges: views, generators, pipelines
-
Pointers and containers: pointers, containers, alternatives
-
Utilities: Time, function adaption, type functions, move() and forward(), bit manipulation
-
Numerics: mathematical functions, numerical algorithms, complex numbers, random numbers, vector arithmetic, numeric limits, type aliases, mathematical constants
-
Concurrency: tasks and threads, sharing data, waiting for events, communicating tasks, coroutines