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.