Lecture Slides for Programming in C++ (Version 2018-02-15): The C++ Language, Libraries, Tools, and Other Topics

Michael Adams
14

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.
Read more
4.9
14 total
Loading...

Additional Information

Publisher
Michael Adams
Read more
Published on
Feb 15, 2018
Read more
Pages
2124
Read more
ISBN
9781550586251
Read more
Read more
Best For
Read more
Language
English
Read more
Content Protection
This content is DRM free.
Read more
Eligible for Family Library

Reading information

Smartphones and Tablets

Install the Google Play Books app for Android and iPad/iPhone. It syncs automatically with your account and allows you to read online or offline wherever you are.

Laptops and Computers

You can read books purchased on Google Play using your computer's web browser.

eReaders and other devices

To read on e-ink devices like the Sony eReader or Barnes & Noble Nook, you'll need to download a file and transfer it to your device. Please follow the detailed Help center instructions to transfer the files to supported eReaders.
This book is intended for use in the teaching of graduate and senior undergraduate courses on multiresolution signal and geometry processing in the engineering and related disciplines.  It has been used for several years for teaching purposes in the Department of Electrical and Computer Engineering at the University of Victoria and has been well received by students.

This book provides a comprehensive introduction to multiresolution signal and geometry processing, with a focus on both theory and applications.  The book has two main components, corresponding to multiresolution processing in the contexts of: 1) signal processing and 2) geometry processing.

The signal-processing component of the book studies one-dimensional and multi-dimensional multirate systems, considering multirate structures such as sampling-rate converters, filter banks, and transmultiplexers.  A particularly strong emphasis is placed on filter banks.  Univariate and multivariate wavelet systems are examined, with the biorthogonal and orthonormal cases both being considered.  The relationship between filter banks and wavelet systems is established.  Several applications of filter banks and wavelets in signal processing are covered, including signal coding, image compression, and noise reduction.  For readers interested in image compression, a detailed overview of the JPEG-2000 standard is also provided.  Some other applications of multirate systems are considered, such as transmultiplexers for communication systems (e.g., multicarrier modulation).

The geometry-processing component of the book studies subdivision surfaces and subdivision wavelets.  Some mathematical background relating to geometry processing is provided, including topics such as homogeneous coordinate transformations, manifolds, surface representations, and polygon meshes.  Several subdivision schemes are examined in detail, including the Loop, Kobbelt sqrt(3), and Catmull-Clark methods.  The application of subdivision surfaces in computer graphics is considered.

A detailed introduction to functional analysis is provided, for those who would like a deeper understanding of the mathematics underlying wavelets and filter banks.  For those who are interested in software applications of the material covered in the book, appendices are included that introduce the CGAL and OpenGL libraries.  Also, an appendix on the SPL library (which was developed for use with this book) is included.  Throughout the book, many worked-through examples are provided.  Problem sets are also provided for each major topic covered.
This document constitutes a detailed set of lecture slides on programming using the C++ programming language.  The topics covered are quite broad, including the history of C++, the C++ language itself, the C++ standard library and various other libraries, and software tools, as well as numerous other programming-related topics.  Coverage of C++ is current with the C++14 standard.

Many aspects of the C++ language are covered from introductory to more advanced.  This material includes: language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, alias, and variable templates; template specialization; and variadic templates), lambda expressions, inheritance and run-time polymorphism, exceptions (exception safety, RAII, and smart pointers), rvalue references (move semantics and perfect forwarding), concurrency (sequential consistency, atomic memory operations, data races; threads, mutexes, condition variables, promises and futures, atomics, and fences; happens-before and synchronizes-with relationships; and sequentially-consistent and other memory models).  A number of best practices, tips, and idioms regarding the use of the language are also presented.  Some aspects of the C++ standard library are covered, including: containers, iterators, and algorithms; the std::vector and std::basic_string classes; I/O streams; time measurement; and smart pointers.  Various general programming-related topics are also presented, such as material on: good programming practices, finite-precision arithmetic, software documentation, software build tools (such as CMake and Make), and version control systems (such as Git).
 
This book is intended for use in the teaching of graduate and senior undergraduate courses on multiresolution signal and geometry processing in the engineering and related disciplines.  It has been used for several years for teaching purposes in the Department of Electrical and Computer Engineering at the University of Victoria and has been well received by students.

This book provides a comprehensive introduction to multiresolution signal and geometry processing, with a focus on both theory and applications.  The book has two main components, corresponding to multiresolution processing in the contexts of: 1) signal processing and 2) geometry processing.

The signal-processing component of the book studies one-dimensional and multi-dimensional multirate systems, considering multirate structures such as sampling-rate converters, filter banks, and transmultiplexers.  A particularly strong emphasis is placed on filter banks.  Univariate and multivariate wavelet systems are examined, with the biorthogonal and orthonormal cases both being considered.  The relationship between filter banks and wavelet systems is established.  Several applications of filter banks and wavelets in signal processing are covered, including signal coding, image compression, and noise reduction.  For readers interested in image compression, a detailed overview of the JPEG-2000 standard is also provided.  Some other applications of multirate systems are considered, such as transmultiplexers for communication systems (e.g., multicarrier modulation).

The geometry-processing component of the book studies subdivision surfaces and subdivision wavelets.  Some mathematical background relating to geometry processing is provided, including topics such as homogeneous coordinate transformations, manifolds, surface representations, and polygon meshes.  Several subdivision schemes are examined in detail, including the Loop, Kobbelt sqrt(3), and Catmull-Clark methods.  The application of subdivision surfaces in computer graphics is considered.

A detailed introduction to functional analysis is provided, for those who would like a deeper understanding of the mathematics underlying wavelets and filter banks.  For those who are interested in software applications of the material covered in the book, appendices are included that introduce the CGAL and OpenGL libraries.  Also, an appendix on the SPL library (which was developed for use with this book) is included.  Throughout the book, many worked-through examples are provided.  Problem sets are also provided for each major topic covered.
©2018 GoogleSite Terms of ServicePrivacyDevelopersArtistsAbout Google|Location: United StatesLanguage: English (United States)
By purchasing this item, you are transacting with Google Payments and agreeing to the Google Payments Terms of Service and Privacy Notice.