COMP-3002 Details

COMP 3002 - C++ Programming II

Course description

This course takes students with a basic understanding of C++ (functions, types, I/O) and expands on that knowledge with more advanced programming concepts such as Object Oriented programming and more advanced data structures. Specific areas covered throughout the course are:

  • Object inheritance
  • Introduction to classes, definitions, usage, etc.
  • Rule of five, C++ class templates, inheritance
  • Function overloading and function templates
  • Friends of classes, operator overloading in classes
  • Class inheritance
  • Namespaces and implementing inherited classes
  • Dynamic memory usage in classes and with class instantiation
  • Destructors, copy constructors, assignment operators
  • Data structure usage, exception handling
  • Low-level details of inheritance in classes (why we need the rule of five)
  • More advanced data structures in C++: linked lists, vectors, etc.
  • Virtual functions and their usage
  • Exception handling
  • Multithreading, introduction to the STL

Course learning objectives

After completion of this course, students will be able to demonstrate the following:

  • Ability to identify problems that can be solved using an object oriented approach.
  • Translate appropriate problem elements into classes and functions.
  • Use inheritance, virtual functions and templates to create reusable, composable components of their code.
  • Correctly implement classes and instantiate objects, including allocation and deallocation of dynamic memory in programs.
  • Identify parts of programs that need exception handling, and create appropriate code to handle exceptions.
  • Use more advanced data structures to reduce new code creation and utilize existing libraries.
  • Implement overloaded operators and virtual functions to create reusable and extensible libraries.
  • Utilize abstraction concepts to simplify code re-use and encourage modularity.
  • Be able to identify existing libraries and data structures (such as from the standard libraries) that can simplify solving complex problems.