OOP344 - Object Oriented Programming II Using C++

Outline info
Semester
School
Last revision date 2015-01-28 03:07:37.666
Last review date 2015-04-06 00:15:11.885


Subject Title
Object Oriented Programming II Using C++

Subject 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.

Learning Outcomes
Upon successful completion of this subject the student will be able to:


  • 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

Academic Integrity
Seneca upholds a learning community that values academic integrity, honesty, fairness, trust, respect, responsibility and courage. These values enhance Seneca's commitment to deliver high-quality education and teaching excellence, while supporting a positive learning environment. Ensure that you are aware of Seneca's Academic Integrity Policy which can be found at: http://www.senecacollege.ca/about/policies/academic-integrity-policy.html Review section 2 of the policy for details regarding approaches to supporting integrity. Section 2.3 and Appendix B of the policy describe various sanctions that can be applied, if there is suspected academic misconduct (e.g., contract cheating, cheating, falsification, impersonation or plagiarism).

Please visit the Academic Integrity website http://open2.senecac.on.ca/sites/academic-integrity/for-students to understand and learn more about how to prepare and submit work so that it supports academic integrity, and to avoid academic misconduct.

Discrimination/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.

Accommodation 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 Accessibility Services Office at ext. 22900 to initiate the process for documenting, assessing and implementing your individual accommodation needs.

Prerequisite(s)
OOP244

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

Mode of Instruction

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

Prescribed Texts

  • 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/

Required Supplies
None

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)
OR
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.


Modes of Evaluation

  • Assignments (minimum 3) - 30%
  • Workshops (minimum 10) - 20%
  • Test and Quizzes - 20%
  • Final Exam - 30%

Approved by: Mary-Lynn Manton