ERRATA LIST This document is the errata list for: Michael D. Adams Lecture Slides for Programming in C++ (Version 2018-02-15) 2018 Below is a list of errors in the lecture slides that have been identified to date. ################################################################################ Name: Michael Adams Date: 2018-03-03 Description: Slide 1476: In the diagram, the head_ pointer for the iterator should be null (not pointing to the list head pointer), since the iterator does not name the before-begin position. ################################################################################ Name: Eli Brooks Date: 2018-03-12 Description: slide 89, third bullet-point from the top: It reads "integral type to used to hold enumerator values can be explicitly specified" when it should read "integral type used to hold enumerator values can be explicitly specified". ################################################################################ Name: Michael Adams Date: 2018-03-27 Description: slide 1520 "Balanced Binary Trees" bullet 1 should more accurately read something like: binary tree said to be perfectly balanced if left and right subtrees of each (interior) node contain same number of nodes (i.e., perfect tree) bullet 2 should more accurately read something like: binary tree said to be strictly balanced if can be formed by discarding zero or more leaf nodes from perfect tree ################################################################################ Name: Michael Adams Date: 2018-03-27 Description: slide 265 "Constexpr Function Requirements" list is missing item: there exists at least one set of argument values such that an invocation of the function could be an evaluated expression of a core constant expression (e.g., cannot call non-constexpr functions) ################################################################################ Name: Michael Adams Date: 2018-04-09 Description: slide 1697 "Cache-Oblivious Matrix Transposition" bullet 4 should read ... n = max{mn,} ... number of columns bullet 5 should read ... m = max{mn,} ... number of rows ################################################################################ Name: Michael Adams Date: 2018-04-21 Description: slide 252 (Example: Constexpr Constructors and Member Functions) The example on this slide is not strictly compliant with the C++ standard, since std::sqrt is not supposed to be a constexpr function. This code compiles with GCC, as it provides constexpr math functions in spite of this being noncompliant with the C++ standard. This problem can be fixed by making norm into squared_norm and dropping the sqrt function call. ################################################################################ Name: Erik Bedard Date: 2018-05-10 Description: on slide 60 titled "The Preprocessor", bullet point 1 says "prior to compliation..." but should say "prior to compilation" ################################################################################ Name: erikbedard Date: 2018-05-10 Description: slide 327 Parameter Packs (Continued 1) bullet 4 "correponds" should be "corresponds"; slide 353 Partially-Specialized Class Template line 22 "verion" should be "version"; slide 557 optional Member Functions slide 562 variant Member Functions slide 565 any Member Functions table header "Destructon" should be "Destruction" slide 600 Operator New Examples line 8 "dellocate" should be "deallocate"; slide 1136 C++ Compatibility bullet 2 "incompatibilties" should be "incompatibilities"; slide 1172 Boost Iterator Library bullet 1.2 "componenets" should be "components"; slide 1202 MP_Float Class bullet 9 "extracter" should be "extractor"; slide 1486 Doubly-Linked List With Sentinel Node bullet 10 "has has" should be "has"; slide 1690 Remarks on Tall Caches bullet 3 "possibily" should be "possibly"; slide 1704 Cache-Oblivious Matrix Multiplication: Performance bullet 1 "mutiply" should be "multiply"; slide 1706 Discrete Fourier Transform (DFT) bullets 4.1 and 4.3 "summmation" should be "summation"; slide 1710 References I bullet 4 "edition edition" should be "edition"; slide 1866 Hardware Event Skid bullet 3 "pointpoint" should be "pinpoint"; slide 1888 Additional Remarks bullet 5 "cacheing" should be "caching"; slide 1930 Call Graph Information (Continued) bullet 3.2 "chidlren" should be "children" slide 1945 KCachegrind bullet 5 "intepretation" should be "interpretation"; slide 1968 CMake Basics bullet 5 "targetting" should be "targeting" slide 1971 The cmake Command (Continued 1) bullet 4 "corrresponding" should be "corresponding"; slide 1977 Variables bullet 9 "varaible" should be "variable"; slide 1985 Commonly-Used Commands (Continued 1) bullet 1.5 "properies" should be "properties"; also some errors previously found by author: slide 653 bullet 3 "descendents" should be "descendants"; This has been corrected already. So, I cannot give bonus for it. (I think that this was an error that I found previously.) slide 655 Fixed-Size Arena Allocator: Example bullet 2 "minumum" should be "minimum"; This has also been corrected already. slide 1574 Disadvantages of Intrusive Containers bullet 6.2 "disasterous" should be "disastrous"; This error has already been corrected earlier. slide 1756 Vectorization Example (Version 1) bullet 2 "correcly" should be "correctly"; This error has already been fixed earlier. slide 1762 OpenMP simd Pragma bullet 5.2 "varaible" should be "variable"; This error has already been fixed earlier. slide 1764 bullet 3 "prefered" should be "preferred"; This error has already been fixed earlier. ################################################################################ Date: 2018-06-13 Name: Noah Silvera Description: slide 1620 Multiplication row 4, column 1 should have "a_1 \geq 0" instead of "a_2 \geq 0" ################################################################################ Date: 2018-06-13 Name: Michael Adams Description: slide 1621 Multiplication (Continued) row 4, column 1 should have "a_1 \geq 0" instead of "a_2 \geq 0" slides 1620 and 1621 Multiplication + (Continued) bottom left entry in table has an infinity without a sign; the sign should be positive ################################################################################ Date: 2018-06-24 Name: Michael Adams Description: on slide 1695 titled "Naive Matrix Transposition": in code example, M and N should be m and n in order to be consistent with symbols on following slide ################################################################################ Date: 2018-06-24 Name: Michael Adams Description: slide 1701 (Naive Matrix Multiplication: Performance) assuming that row of a and column of b do not fit in cache simultaneously, algorithm incurs Θ(mnp/B + n 2 p/B + mp/B) cache misses, which is Θ(n 3 /B) in case of square matrices the n^2 p / B term should be mnp the n^3 / B should probably be stated as n^3 ################################################################################ Date: 2018-07-03 Name: Michael Adams Description: slide 1173 titled Forward Iterator Example: Iterator Class Without Boost (1) The iterator class should have a member called difference_type. ################################################################################ Date: Name: Description: ################################################################################