Author: Michael D. Adams
Publisher: Michael Adams
ISBN: 1550586254
Category :
Languages : en
Pages : 2142
Book Description
This document, which consists of over 2000 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), concurrency (memory models, and happens-before and synchronizes-with relationships). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy), code sanitizers (e.g., ASan, UBSan, and TSan), debugging and testing tools (e.g., Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), and version control systems (e.g., Git). OTHER TOPICS. An assortment of other programming-related topics are also covered, including: data structures, algorithms, computer arithmetic (e.g., floating-point arithmetic and interval arithmetic), cache-efficient algorithms, vectorization, good programming practices, and software documentation.
Lecture Slides for Programming in C++ (Version 2018-02-15)
Author: Michael D. Adams
Publisher: Michael Adams
ISBN: 1550586254
Category :
Languages : en
Pages : 2142
Book Description
This document, which consists of over 2000 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), concurrency (memory models, and happens-before and synchronizes-with relationships). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy), code sanitizers (e.g., ASan, UBSan, and TSan), debugging and testing tools (e.g., Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), and version control systems (e.g., Git). OTHER TOPICS. An assortment of other programming-related topics are also covered, including: data structures, algorithms, computer arithmetic (e.g., floating-point arithmetic and interval arithmetic), cache-efficient algorithms, vectorization, good programming practices, and software documentation.
Publisher: Michael Adams
ISBN: 1550586254
Category :
Languages : en
Pages : 2142
Book Description
This document, which consists of over 2000 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), concurrency (memory models, and happens-before and synchronizes-with relationships). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy), code sanitizers (e.g., ASan, UBSan, and TSan), debugging and testing tools (e.g., Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), and version control systems (e.g., Git). OTHER TOPICS. An assortment of other programming-related topics are also covered, including: data structures, algorithms, computer arithmetic (e.g., floating-point arithmetic and interval arithmetic), cache-efficient algorithms, vectorization, good programming practices, and software documentation.
Lecture Slides for Programming in C++ (Version 2020-02-29)
Author: Michael D. Adams
Publisher: Michael Adams
ISBN: 1550586645
Category : Computers
Languages : en
Pages : 2565
Book Description
This document, which consists of approximately 2500 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard.
Publisher: Michael Adams
ISBN: 1550586645
Category : Computers
Languages : en
Pages : 2565
Book Description
This document, which consists of approximately 2500 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard.
Lecture Slides for Programming in C++ (Version 2019-02-04)
Author: Michael D. Adams
Publisher: Michael Adams
ISBN: 1550586416
Category :
Languages : en
Pages : 2538
Book Description
This document, which consists of approximately 2500 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), concurrency (memory models, and happens-before and synchronizes-with relationships), compile-time computation, and various other topics (e.g., copy elision and initialization). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy and Clang Static Analyzer), code sanitizers (e.g., ASan, LSan, MSan, TSan, and UBSan), debugging and testing tools (e.g., Valgrind, LLVM XRay, and Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), version control systems (e.g., Git), code coverage analysis tools (e.g., Gcov, LLVM Cov, and Lcov), online C++ compilers (e.g., Compiler Explorer and C++ Insights), and code completion tools (e.g., YouCompleteMe, and LSP clients/servers).
Publisher: Michael Adams
ISBN: 1550586416
Category :
Languages : en
Pages : 2538
Book Description
This document, which consists of approximately 2500 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), concurrency (memory models, and happens-before and synchronizes-with relationships), compile-time computation, and various other topics (e.g., copy elision and initialization). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy and Clang Static Analyzer), code sanitizers (e.g., ASan, LSan, MSan, TSan, and UBSan), debugging and testing tools (e.g., Valgrind, LLVM XRay, and Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), version control systems (e.g., Git), code coverage analysis tools (e.g., Gcov, LLVM Cov, and Lcov), online C++ compilers (e.g., Compiler Explorer and C++ Insights), and code completion tools (e.g., YouCompleteMe, and LSP clients/servers).
An Introduction to Knowledge Graphs
Author: UMUTCAN. FENSEL SERLES (DIETER.)
Publisher: Springer Nature
ISBN: 3031452569
Category : Electronic books
Languages : en
Pages : 440
Book Description
This textbook introduces the theoretical foundations of technologies essential for knowledge graphs. It also covers practical examples, applications and tools. Knowledge graphs are the most recent answer to the challenge of providing explicit knowledge about entities and their relationships by potentially integrating billions of facts from heterogeneous sources. The book is structured in four parts. For a start, Part I lays down the overall context of knowledge graph technology. Part II “Knowledge Representation” then provides a deep understanding of semantics as the technical core of knowledge graph technology. Semantics is covered from different perspectives, such as conceptual, epistemological and logical. Next, Part III “Knowledge Modelling” focuses on the building process of knowledge graphs. The book focuses on the phases of knowledge generation, knowledge hosting, knowledge assessment, knowledge cleaning, knowledge enrichment, and knowledge deployment to cover a complete life cycle for this process. Finally, Part IV (simply called “Applications”) presents various application areas in detail with concrete application examples as well as an outlook on additional trends that will emphasize the need for knowledge graphs even stronger. This textbook is intended for graduate courses covering knowledge graphs. Besides students in knowledge graph, Semantic Web, database, or information retrieval classes, also advanced software developers for Web applications or tools for Web data management will learn about the foundations and appropriate methods.
Publisher: Springer Nature
ISBN: 3031452569
Category : Electronic books
Languages : en
Pages : 440
Book Description
This textbook introduces the theoretical foundations of technologies essential for knowledge graphs. It also covers practical examples, applications and tools. Knowledge graphs are the most recent answer to the challenge of providing explicit knowledge about entities and their relationships by potentially integrating billions of facts from heterogeneous sources. The book is structured in four parts. For a start, Part I lays down the overall context of knowledge graph technology. Part II “Knowledge Representation” then provides a deep understanding of semantics as the technical core of knowledge graph technology. Semantics is covered from different perspectives, such as conceptual, epistemological and logical. Next, Part III “Knowledge Modelling” focuses on the building process of knowledge graphs. The book focuses on the phases of knowledge generation, knowledge hosting, knowledge assessment, knowledge cleaning, knowledge enrichment, and knowledge deployment to cover a complete life cycle for this process. Finally, Part IV (simply called “Applications”) presents various application areas in detail with concrete application examples as well as an outlook on additional trends that will emphasize the need for knowledge graphs even stronger. This textbook is intended for graduate courses covering knowledge graphs. Besides students in knowledge graph, Semantic Web, database, or information retrieval classes, also advanced software developers for Web applications or tools for Web data management will learn about the foundations and appropriate methods.
Programming Languages and Systems
Author: Luís Caires
Publisher: Springer
ISBN: 3030171841
Category : Computers
Languages : en
Pages : 820
Book Description
This open access book constitutes the proceedings of the 28th European Symposium on Programming, ESOP 2019, which took place in Prague, Czech Republic, in April 2019, held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2019.
Publisher: Springer
ISBN: 3030171841
Category : Computers
Languages : en
Pages : 820
Book Description
This open access book constitutes the proceedings of the 28th European Symposium on Programming, ESOP 2019, which took place in Prague, Czech Republic, in April 2019, held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2019.
Runtime Verification
Author: Christian Colombo
Publisher: Springer
ISBN: 303003769X
Category : Computers
Languages : en
Pages : 474
Book Description
This book constitutes the refereed proceedings of the 18th International Conference on Runtime Verification, RV 2018, held in Limassol, Cyprus, in November 2018. The 21 full papers presented together with 3 short papers and 3 tool papers were carefully reviewed and selected from 49 submissions. The RV conference is concerned with all aspects of monitoring and analysis of hardware, software and more general system executions. Runtime verification techniques are lightweight techniques to assess correctness, reliability, and robustness; these techniques are significantly more powerful and versatile than conventional testing, and more practical than exhaustive formal verification. Chapter “Hardware-based Runtime Verification with Embedded Tracing Units and Stream Processing” is available open access under a Creative Commons Attribution 4.0 International License via link.springer.com.
Publisher: Springer
ISBN: 303003769X
Category : Computers
Languages : en
Pages : 474
Book Description
This book constitutes the refereed proceedings of the 18th International Conference on Runtime Verification, RV 2018, held in Limassol, Cyprus, in November 2018. The 21 full papers presented together with 3 short papers and 3 tool papers were carefully reviewed and selected from 49 submissions. The RV conference is concerned with all aspects of monitoring and analysis of hardware, software and more general system executions. Runtime verification techniques are lightweight techniques to assess correctness, reliability, and robustness; these techniques are significantly more powerful and versatile than conventional testing, and more practical than exhaustive formal verification. Chapter “Hardware-based Runtime Verification with Embedded Tracing Units and Stream Processing” is available open access under a Creative Commons Attribution 4.0 International License via link.springer.com.
Wireless Communications Systems
Author: Randy L. Haupt
Publisher: John Wiley & Sons
ISBN: 1119419174
Category : Technology & Engineering
Languages : en
Pages : 464
Book Description
A comprehensive introduction to the fundamentals of design and applications of wireless communications Wireless Communications Systems starts by explaining the fundamentals needed to understand, design, and deploy wireless communications systems. The author, a noted expert on the topic, explores the basic concepts of signals, modulation, antennas, and propagation with a MATLAB emphasis. The book emphasizes practical applications and concepts needed by wireless engineers. The author introduces applications of wireless communications and includes information on satellite communications, radio frequency identification, and offers an overview with practical insights into the topic of multiple input multiple output (MIMO). The book also explains the security and health effects of wireless systems concerns on users and designers. Designed as a practical resource, the text contains a range of examples and pictures that illustrate many different aspects of wireless technology. The book relies on MATLAB for most of the computations and graphics. This important text: Reviews the basic information needed to understand and design wireless communications systems Covers topics such as MIMO systems, adaptive antennas, direction finding, wireless security, internet of things (IoT), radio frequency identification (RFID), and software defined radio (SDR) Provides examples with a MATLAB emphasis to aid comprehension Includes an online solutions manual and video lectures on selected topics Written for students of engineering and physics and practicing engineers and scientists, Wireless Communications Systems covers the fundamentals of wireless engineering in a clear and concise manner and contains many illustrative examples.
Publisher: John Wiley & Sons
ISBN: 1119419174
Category : Technology & Engineering
Languages : en
Pages : 464
Book Description
A comprehensive introduction to the fundamentals of design and applications of wireless communications Wireless Communications Systems starts by explaining the fundamentals needed to understand, design, and deploy wireless communications systems. The author, a noted expert on the topic, explores the basic concepts of signals, modulation, antennas, and propagation with a MATLAB emphasis. The book emphasizes practical applications and concepts needed by wireless engineers. The author introduces applications of wireless communications and includes information on satellite communications, radio frequency identification, and offers an overview with practical insights into the topic of multiple input multiple output (MIMO). The book also explains the security and health effects of wireless systems concerns on users and designers. Designed as a practical resource, the text contains a range of examples and pictures that illustrate many different aspects of wireless technology. The book relies on MATLAB for most of the computations and graphics. This important text: Reviews the basic information needed to understand and design wireless communications systems Covers topics such as MIMO systems, adaptive antennas, direction finding, wireless security, internet of things (IoT), radio frequency identification (RFID), and software defined radio (SDR) Provides examples with a MATLAB emphasis to aid comprehension Includes an online solutions manual and video lectures on selected topics Written for students of engineering and physics and practicing engineers and scientists, Wireless Communications Systems covers the fundamentals of wireless engineering in a clear and concise manner and contains many illustrative examples.
Large-Scale Convex Optimization
Author: Ernest K. Ryu
Publisher: Cambridge University Press
ISBN: 1009191063
Category : Mathematics
Languages : en
Pages : 320
Book Description
Starting from where a first course in convex optimization leaves off, this text presents a unified analysis of first-order optimization methods – including parallel-distributed algorithms – through the abstraction of monotone operators. With the increased computational power and availability of big data over the past decade, applied disciplines have demanded that larger and larger optimization problems be solved. This text covers the first-order convex optimization methods that are uniquely effective at solving these large-scale optimization problems. Readers will have the opportunity to construct and analyze many well-known classical and modern algorithms using monotone operators, and walk away with a solid understanding of the diverse optimization algorithms. Graduate students and researchers in mathematical optimization, operations research, electrical engineering, statistics, and computer science will appreciate this concise introduction to the theory of convex optimization algorithms.
Publisher: Cambridge University Press
ISBN: 1009191063
Category : Mathematics
Languages : en
Pages : 320
Book Description
Starting from where a first course in convex optimization leaves off, this text presents a unified analysis of first-order optimization methods – including parallel-distributed algorithms – through the abstraction of monotone operators. With the increased computational power and availability of big data over the past decade, applied disciplines have demanded that larger and larger optimization problems be solved. This text covers the first-order convex optimization methods that are uniquely effective at solving these large-scale optimization problems. Readers will have the opportunity to construct and analyze many well-known classical and modern algorithms using monotone operators, and walk away with a solid understanding of the diverse optimization algorithms. Graduate students and researchers in mathematical optimization, operations research, electrical engineering, statistics, and computer science will appreciate this concise introduction to the theory of convex optimization algorithms.
Exercises for Programming in C++ (Version 2021-04-01)
Author: Michael D. Adams
Publisher: Michael Adams
ISBN: 098791975X
Category : Computers
Languages : en
Pages : 162
Book Description
This book presents a large collection of exercises for learning to program in C++. A study plan for learning C++ based on a collection of video lectures and supplemental reading is also provided.
Publisher: Michael Adams
ISBN: 098791975X
Category : Computers
Languages : en
Pages : 162
Book Description
This book presents a large collection of exercises for learning to program in C++. A study plan for learning C++ based on a collection of video lectures and supplemental reading is also provided.
Lecture Slides for Programming in C++ (Version 2021-04-01)
Author: Michael D. Adams
Publisher: Michael Adams
ISBN: 0987919741
Category : Computers
Languages : en
Pages : 2924
Book Description
This document, which consists of approximately 2900 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++20 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, namespaces, and comparison), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), concepts, lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), coroutines, concurrency (memory models, and happens-before and synchronizes-with relationships), modules, compile-time computation, and various other topics (e.g., copy elision and initialization). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, ranges, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy and Clang Static Analyzer), code sanitizers (e.g., ASan, LSan, MSan, TSan, and UBSan), debugging and testing tools (e.g., Valgrind, LLVM XRay, and Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), version control systems (e.g., Git), code coverage analysis tools (e.g., Gcov, LLVM Cov, and Lcov), online C++ compilers (e.g., Compiler Explorer and C++ Insights), and code completion tools (e.g., YouCompleteMe, and LSP clients/servers). OTHER TOPICS. An assortment of other programming-related topics are also covered, including: data structures, algorithms, computer arithmetic (e.g., floating-point arithmetic and interval arithmetic), cache-efficient algorithms, vectorization, good programming practices, software documentation, software testing (e.g., static and dynamic testing, and structural coverage analysis), and compilers and linkers (e.g., Itanium C++ ABI).
Publisher: Michael Adams
ISBN: 0987919741
Category : Computers
Languages : en
Pages : 2924
Book Description
This document, which consists of approximately 2900 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++20 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, namespaces, and comparison), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), concepts, lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), coroutines, concurrency (memory models, and happens-before and synchronizes-with relationships), modules, compile-time computation, and various other topics (e.g., copy elision and initialization). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, ranges, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy and Clang Static Analyzer), code sanitizers (e.g., ASan, LSan, MSan, TSan, and UBSan), debugging and testing tools (e.g., Valgrind, LLVM XRay, and Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), version control systems (e.g., Git), code coverage analysis tools (e.g., Gcov, LLVM Cov, and Lcov), online C++ compilers (e.g., Compiler Explorer and C++ Insights), and code completion tools (e.g., YouCompleteMe, and LSP clients/servers). OTHER TOPICS. An assortment of other programming-related topics are also covered, including: data structures, algorithms, computer arithmetic (e.g., floating-point arithmetic and interval arithmetic), cache-efficient algorithms, vectorization, good programming practices, software documentation, software testing (e.g., static and dynamic testing, and structural coverage analysis), and compilers and linkers (e.g., Itanium C++ ABI).