CPP – C++ Certified Professional Programmer Certification
CPP – C++ Certified Professional Programmer certification is a professional certificate that measures your ability to accomplish coding and design tasks related to advanced topics of the C programming language, as well as advanced programming techniques, including the library functions and the usage of the preprocessor.
A test candidate should demonstrate sufficient knowledge of the following concepts:
- Handling variable number of parameters ()
- Low level IO ()
- Memory and strings ( et al.)
- Processes and threads
- Floats and ints once again (, , et al.)
- Network sockets –the absolute basics
Exam Information
CPP – C++ Certified Professional Programmer
Associated certifications:
CPE – C++ Certified Entry-Level Programmer,
CPA – C++ Certified Associate Programmer
CPA – C++ Certified Associate Programmer Certification
65 minutes (exam) + approx. 10 minutes (Non-Disclosure Agreement/Tutorial)
Single-choice questions, multiple-choice questions
1. C++ Advanced - Skills for ALL (coming soon)
2. C++ Advanced (Advanced) (Edube, self-enroll/self-study)
CPP – C++ Certified Professional Programmer Certification: Exam Syllabus
Exam block #1: Sequence Containers and Container Adapters
Objectives covered by the block
- basic concepts of using:
- std::vector
- std::deque
- std::list
- std::queue
- std::priority_queue
- std::stack
- methods of vector, deque, list, queue, priority_queue, and stack;
- using vector, deque, list, queue, priority_queue, and stack with simple and complex (i.e., their own classes) types;
- iterators for vector, deque, list, queue, priority_queue, and stack;
- accessing data stored in vector, deque, list, queue, priority_queue, and stack.
Exam block #2: Associative Containers
Objectives covered by the block
- basic concepts of using associative containers, like std::set, std::multiset, std::map, and std::multimap;
- methods of set, multiset, map, and multimap;
- using set, multiset, map and multimap with simple, and complex (i.e., their own classes) types;
- iterators for set, multiset, map, and multimap;
- accessing data stored in set, multiset, map, and multimap.
Exam block #3: Algorithms: Non-Modifying Sequence Operations
Objectives covered by the block
- concept of non-modifying iterating through containers, using std::for_each function;
- using std::find, std::find_if, std::find_end, std::find_first_of, std::adjacent_find, std::search, and std::search_n operations for finding elements in a wide spectrum of containers;
- using std::count and std::count_if operations for counting elements in containers;
- using std::mismatch and std::equal to compare two ranges of containers.
Exam block #4: Algorithms: Modifying Sequence Operations
Objectives covered by the block
- using std::copy, std::copy_backward, std::fill, std::fill_n, std::generate, and std::generate_n for creating data;
- using std::swap_ranges, std::swap, std::iter_swap, std::transform, std::replace, std::remove, std::remove_if, std::unique, std::unique_copy, std::reverse, std::reverse_copy, std::rotate, std::partition, and std::stable_partition for creating and modifying data.
Exam block #5: Algorithms: Sorting and Binary Search
Objectives covered by the block
- using std::sort and std::stable_sort for sorting containers;
- using std::lower_bound, std::upper_bound, and std::binary_search for searching in ordered containers.
Exam block #6: Algorithms: Merge, Heap, Min, Max
Objectives covered by the block
- using std::merge and std::inplace_merge for merging data;
- using std::includes, std::set_union, std::set_intersection, std::set_difference, and std::set_symmetric for manipulating sets of simple and complex types;
- using std::min_element and std::max_element for finding extreme values in containers of simple and complex types.
Exam block #7: STL Functional Objects and Utilities
Objectives covered by the block
- using different utilities to transform data with std::transform (plus(), minus(), and ptr_fun bounded functions) for simple and complex types.
Exam block #8: Advanced I/O
Objectives covered by the block
- advanced use cases of cout/cin and other stream objects;
- using setf and unsetf flag methods to manipulate I/O stream format;
- using operators like boolalpha, noshowpoint, setprecision, fixed, and setw to manipulate I/O stream format.
Exam block #9: Templates
Objectives covered by the block
- defining template functions and specialized functions;
- defining template classes and instantiating them;
- using functions and operator functions from other classes with template classes;
- using template classes inside other template classes.
Exam block #10: Smart Pointers
Objectives covered by the block
- basic syntax and semantics of std::unique_ptr and std::shared pointers;
- typical use cases;
- possibilities of conversion between shared and unique pointers.
Exam block #11: Selected Important Language Features
Objectives covered by the block
- using auto specifier for declaring variables with automatically deducted types;
- range-based for loops;
- using lambdas for creating shorter and more readable code;
- using constexpr specifier for declaring possibility to evaluate value of the function or variable at compile time;
- using tuples for grouping data together;
- using strongly-typed enums for better enumerating of elements.
First published: September 10, 2013
Last updated: April 25, 2024
Aligned with CPP-22-02