Have OOPL, Will Travel

ude.saxetu.sc@gninwod


This is a class in the syntax and semantics of C++ and the Standard Template Library (STL).


Audience

  • software developers and technical managers

Exercises and Quizzes

  • in-class exercises
  • in-class quizzes

Pedagogy


Prerequisites

  • knowledge of Java or Python helpful

Resources

  • a class website
  • a Canvas site with discussions and quizzes
  • a Docker image with GCC 8.2 and other tools
  • a GitLab site with programming examples
  • a HackerRank site with programming exercises

Tools


Topics

  • assertions
    • why they're inappropriate for unit testing
    • why they're inappropriate for user errors
  • unit testing
    • Google Test
    • TEST
    • ASSERT_EQ
    • ASSERT_DEATH
    • INSTANTIATE_TEST_CASE_P
    • TEST_P
    • TYPED_TEST_CASE
    • TYPED_TEST
  • recursion
    • tail recursion
  • iteration
    • for
    • for range
  • exceptions
    • why they're appropriate for user errors
    • try catch block
    • catch by reference
    • re-throw exceptions
  • types
    • C++11 auto
    • built-in
    • user-defined
    • unions
  • operators
    • r-values
    • l-values
  • variables
    • values
    • addresses
    • references
  • arguments
    • by value
    • by address
    • by reference
    • why by reference is almost always better than by address
  • consts
    • many-location read/write pointer
    • many-location read-only pointer
    • one-location read/write pointer
    • one-location read-only pointer
    • one-location read/write reference
    • one-location read-only reference
  • algorithms
    • std::all_of
    • std::copy
    • std::equal
    • std::fill
    • C++11 lambdas
  • iterators
    • input
    • output
    • forward
    • bidirectional
    • random access
  • arrays
    • initialization on the stack
    • initialization on the heap
    • arrays are not copyable
    • arrays are not assignable
    • arrays are not comparable
    • motivation for vector
  • classes
    • variables, static and non-static
    • allocation, initialization, lifetime, and scope
    • constructors
    • member initialization list
    • copy constructor
    • destructor
    • copy assignment operator
    • C++11 = default
    • C++11 = delete
    • implicit type conversion
    • explicit constructors
    • friend functions
  • methods
    • static methods
    • non-static methods
    • const methods
    • this
  • containers
    • vector<>
    • list<>
    • forward_list<>
  • vector
    • C++11 using
    • equality operator
    • utility library
    • constructors
    • copy constructor
    • copy assignment operator
    • destructor
    • index operator
    • at()
    • begin()
    • empty()
    • end()
    • size()
    • const_cast
  • inheritance
    • refinement overriding
    • replacement overriding
    • static_cast
    • static binding
    • method shadowing
  • virtual methods
    • dynamic binding
    • virtual function table
    • dynamic cast
    • static binding
      • object
      • scope operator
      • constructor
      • destructor
    • inline methods
  • pure virtual methods
    • derived class definition
    • optional definition in base class
  • abstract classes
  • pure virtual destructors
  • abstract classes
  • non-virtual inheritance

Copyright © Glenn P. Downing, 1989-2020