OOP344 Course Outline

Course Code: OOP344
Course Name: Object Oriented Programming II Using C++
Offered Date: Summer - 2015 | Other versions
Print Outline
Course Description:

This subject expands the student's skill-set in object-oriented programming and introduces the student to threaded programming.  The student learns to model relationships between classes using containers, inheritance hierarchies and polymorphism in the C++ programming language and to write C++ programs that execute on multiple threads.

Credit Status: 1 Credit for CPA/CPD Diploma Students.
Prerequisite: OOP244
Mode of Instruction:

2 hours interactive lecture per week.
2 hours activity-based learning per week.

Learning Outcomes:

  • design collections of model objects using sequential containers and multi-dimensional arrays to solve a systems or business problem
  • create function objects and closures to customize a programming solution for a particular application
  • model generalization and specialization using inheritance hierarchies to minimize the duplication of code
  • model polymorphic behavior using interfaces, virtual functions and templates (generics) to amplify the reusability of code
  • implement design components using algorithms from the standard template library to utilize existing technologies
  • create program components of quadratic complexity to solve non-linear problems
  • create program components using raw pointers, pointer arithmetic and smart pointers to access data in program memory
  • design multi-tasked solutions using threading libraries to improve the performance of a program
Topic Outline:

  • Introduction – 8%
    • variable and object scope
      • program, file, class, function and block scope
      • namespaces (review, anonymous, inline)
    • stages of compilation
      • pre-processing
        • macros, conditionals, pragmas
      • compilation
        • static assertions
      • linkage
        • external, internal, no linkage
      • options (g++, Visual Studio)
  • Fundamental Types – 8%
    • scalar types
      • integral representation
      • floating-point representation (IEEE 754)
      • size specifiers
      • range specifiers (signed, unsigned)
      • unicode, wide characters
    • pointer types
      • nullptr
      • generic
    • enumerations
    • synonyms
    • auto
    • storage duration and linkage (extern, static)
  • Compound Types - 8%
    • arrays
      • multi-dimensional
      • dynamic allocation
      • ragged
      • representation of matrices and vectors
    • classes
      • initializer lists
      • class variables, class methods
  • Class Relationships – 20%
    • inheritance
      • generalization and specialization
      • review of abstract base classes and interfaces
      • virtual functions
    • polymorphism
      • review of polymorphism and type systems
      • class templates and specialization
    • composition
      • container classes
      • flexibility of low coupling
  • Logic - 12%
    • expressions
      • lvalues, rvalues, constant operands
      • constexpr
      • post-fix, pre-fix, unary, binary, ternary
      • bit-wise operations
      • constrained casts
    • range-based for
    • functions
      • linkage
      • function pointers
      • function objects
      • closures (lambda expressions)
      • optional return type syntax
      • decltype
    • error handling
      • command line input
      • return codes to operating systems
      • exceptions (throw, try, catch)
      • exit
  • Standard Template Library – 12%
    • components (containers, function objects, iterators)
      • conceptual description of linked lists
    • sequential containers
      • array
      • vector
      • deque
    • applications
      • custom container classes
      • algorithms (find, sort, copy)
      • iterators
  • Performance - 16%
    • core language facilities
      • rvalue references and move semantics
      • alignment control
    • multi-threading
      • concurrent programming concepts
      • thread, mutex, condition_variable classes
      • future template
      • OpenMP directives
  • Memory Model - 8%
    • review of raw pointers and references
    • pointer arithmetic
    • smart pointers
  • Related Topics - 8%
    • file stream objects (text and binary access)
    • C11 language
      • structs, unions
        • anonymous
        • bit-fields
      • linking multi-language binaries
      • break, continue, goto
      • comparison of C++ and C syntax
    • C++14 and C++17
Prescribed Text(s):

  • Intermediate C++11 - June 2014 Edition by Chris Szalwinski (available at the Seneca bookstore)
Reference Material:

Sutter, H. and Alexandrescu, A. 2005. C++ Coding Standards. Addison-Wesley. EAN 978-0-321-11358-0

The C++ Resources Network. http://www.cplusplus.com/reference/

Promotion Policy:
To obtain a credit in this subject, a student must:
  •     Achieve a grade of 50% or better on the final exam
  •     Satisfactorily complete all assignments
  •     Achieve a weighted average of 50% or better for the tests and final exam
  •     Achieve a grade of 50% or better on the overall course

Grading Policy
A+ 90%  to  100%
A 80%  to  89%
B+ 75%  to  79%
B 70%  to  74%
C+ 65%  to  69%
C 60%  to  64%
D+ 55%  to  59%
D 50%  to  54%
F 0%    to  49% (Not a Pass)
EXC Excellent
SAT Satisfactory
UNSAT Unsatisfactory

For further information, see a copy of the Academic Policy, available online (http://www.senecacollege.ca/academic-policy) or at Seneca's Registrar's Offices.


  • Assignments (minimum 3) - 30%
  • Workshops (minimum 10) - 20%
  • Test and Quizzes - 20%
  • Final Exam - 30%
Approved By:
Mary-Lynn Manton
Cheating and Plagiarism:
Each student should be aware of the College's policy regarding Cheating and Plagiarism. Seneca's Academic Policy will be strictly enforced.

To support academic honesty at Seneca College, all work submitted by students may be reviewed for authenticity and originality, utilizing software tools and third party services. Please visit the Academic Honesty site on http://library.senecacollege.ca for further information regarding cheating and plagiarism policies and procedures.
Discrimination and Harassment:
All students and employees have the right to study and work in an environment that is free from discrimination and/or harassment. Language or activities that defeat this objective violate the College Policy on Discrimination/Harassment and shall not be tolerated. Information and assistance are available from the Student Conduct Office at student.conduct@senecacollege.ca.
Accomodation for Students with Disabilities
The College will provide reasonable accommodation to students with disabilities in order to promote academic success. If you require accommodation, contact the Counselling and Disabilities Services Office at ext. 22900 to initiate the process for documenting, assessing and implementing your individual accommodation needs.

Program Information