Computer Science (COMP) 306

C++ for Programmers (Revision 1)

COMP 306 Course website

Revision 1 is closed for registrations, replaced by current version

Delivery Mode: Individualized study online

Credits: 3

Area of Study: Science

Prerequisite: Prior computer programming training and/or experience in a third generation language such as C or Java and approval by the course professor. Note: Students who are concerned about not meeting the prerequisite for this course are encouraged to contact the course coordinator before registering.

Precluded Course: COMP 206, COMP 307 and COMP 389. (COMP 306 cannot be taken for credit if credit has already been obtained for COMP 206, COMP 307 or COMP 389).

Students in this course are required to contact their tutor using email or the course (Moodle) forums. Please see the Tutor and Coordinator Support page for more information.

Centre: School of Computing and Information Systems

SCIS Orientation

COMP 306 is not available for challenge.

Course website

check availability


COMP 306 is designed to extend the students' knowledge and practice in programming to the C++ computer programming language. The course progresses from first principles to advanced topics in Object Oriented programming using C++. To be able to complete this course, a student should have prior programming experience in a third generation language such as C or Java, and some good programming skills in that language.

Learning Outcomes

Upon successful completion of the course, students will be able to

  • articulate the principles of object-oriented problem solving and programming.
  • outline the essential features and elements of the C++ programming language.
  • explain programming fundamentals, including statement and control flow and recursion.
  • apply the concepts of class, method, constructor, instance, data abstraction, function abstraction, inheritance, overriding, overloading, polymorphism, and templates.
  • program with basic data structures using array, list, and linked structures.
  • explain the object-oriented design process and the concept of software engineering.
  • program using objects and data abstraction, class, and methods in function abstraction.
  • analyze, write, debug, and test basic C++ codes using the approaches introduced in the course.
  • analyze problems and implement simple C++ applications using an object-oriented software engineering approach.


COMP 306 consists of the following units:

  • Unit 0: Introduction to C++ for Programmers
  • Unit 1: Introduction to Objects
  • Unit 2: Making & Using Objects
  • Unit 3: The C in C++
  • Unit 4: Data Abstraction
  • Unit 5: Hiding the Implementation
  • Unit 6: Initialization & Cleanup
  • Unit 7: Function Overloading & Default Arguments
  • Unit 8: Constants
  • Unit 9: Inline Functions
  • Unit 10: Name Control
  • Unit 11: References & the Copy-Constructor
  • Unit 12: Operator Overloading
  • Unit 13: Dynamic Object Creation
  • Unit 14: Inheritance & Composition
  • Unit 15: Polymorphism & Virtual Functions
  • Unit 16: Introduction to Templates

All units are closely based on material from Thinking in C++, 2nd Edition by Bruce Eckel.


To receive credit for COMP 306, you must achieve a course composite grade of at least “D” (50 percent), including a grade of 50 percent on each assignment, at least 50 percent on the final examination. The weighting of the composite grade is as follows:

Assign. 1 Assign. 2 Assign. 3 Assign. 4 Final Exam Total
15% 15% 20% 20% 30% 100%

The final examination for this course must be taken online with an AU-approved exam invigilator at an approved invigilation centre. It is your responsibility to ensure your chosen invigilation centre can accommodate online exams. For a list of invigilators who can accommodate online exams, visit the Exam Invigilation Network.

To learn more about assignments and examinations, please refer to Athabasca University's online Calendar.

Course Materials


Eckel, B. (2000) Thinking in C++, 2nd ed. Prentice Hall, Upper Saddle River, NJ.

Other Materials

The remainder of the learning materials for COMP 306 is distributed in electronic format or is available from the course or other Web sites. The materials in these categories presently include:

Distributed in Electronic Format:

  • Computer Science 306 Study Guide.

Available from the Course website:

  • Tutor Marked Exercises and Instructions.
  • A Course Evaluation Form.
  • Links to Other Web-based Course Resources.

Available from Other websites:

  • C++ Compiler and development environment tools.
  • Online version of Thinking in C++
  • Program examples from Thinking in C++

Additional supporting materials of interest to students may occasionally be made available electronically.

Special Course Features

COMP 306 is offered by computer mediated communications (CMC) mode, and can be completed at the student's workplace or home. It is an elective in all Computing and Information Systems programs.

Athabasca University reserves the right to amend course outlines occasionally and without notice. Courses offered by other delivery methods may vary from their individualized-study counterparts.

Opened in Revision 1, November 27, 2008.