EEC Logo

Practical C++ Programming

Duration: 4 days


Software engineers, programmers, and analysts who have written some simple C++ programs or have been performing maintenance on applications of small to medium size. This course focuses on common techniques in C++ and not on language features themselves, thus it is a good choice for individuals responsible for day-to-day programming who are not interested in advanced design or programming techniques. (Those individuals should consider our Advanced C++ course.)

This course is more about "hands on implementation" than "language features". Note that all hands-on exercises are performed in a POSIX environment (typically Ubuntu Linux).

Course Contents

  1. Why C++ Programming?
  2. Container Classes of the Standard Template Library
    1. Basics of Iterators
    2. Sequence Containers, Background and Examples
      1. std::vector
      2. std::list
      3. std::deque
      4. New in C++11: std::array, std::forward_list
      5. Available in Boost (boost::bimap, boost::circular_buffer, boost::multi_array)
    3. Associative Containers, Background and Examples
      1. std::map, std::multimap
      2. std::set, std::multiset
      3. New in C++11: std::unordered_map, std::unordered_set
    4. Using STL containers in applications
  3. Introduction to Generic Algorithms in STL
  4. Other Data Types of the STL
    1. Iterators
    2. Smart Pointers
    3. Function Objects (a.k.a. functors)
  5. Combining Generic Algorithms with STL Data Types
  6. Introduction to the Boost Framework
    1. Purpose of Boost
    2. Scope of the Framework
    3. Overview of All Component Categories
  7. Boost: Shared Pointers (replacements for auto_ptr)
  8. Boost: String Processing (regex and format)
  9. Boost: Concurrency (mutexes, condition variables, threads)

Course Objectives

Upon completion of this course, the student will be able to:

Instructional Technique

Students are invited to bring their current ideas and questions to the classroom for discussion. Lecture, group problem solving, and online laboratories will be used. Students will be encouraged to enhance their skills utilizing the techniques presented through classroom problem solving and controlled online workshops. This course is approximately 60% labwork.

This course does not concentrate on the use of any one particular development tool. Instead, the students are encouraged to learn the proper design and implementation techniques by hand-coding their applications. If development tools are available at the training site and the instructor is familiar with them, their use will be demonstrated and the students guided in the use of such tools.


This course teaches the student techniques for improving performance and/or readability by utilizing newer language features or through practice with unfamiliar techniques. Therefore, at least 3 months experience writing C++ code is required for the student to gain the maximum benefit from this course. If the student's experience is primarily maintenance on existing code, at least 9 months experience is required.

This course does not cover any particular compiler environment or IDE (such as Eclipse, VisualStudio, or similar). Students will be given the necessary information to use the development tools employed in our Linux-based lab environment. Contact our office with any questions.