Students who are concerned about not meeting the prerequisites for this course are encouraged to contact the Course Professor before registering.
Overview
COMP 306 is designed to extend students’ knowledge and practice in programming in C++. The course progresses from first principles to advanced topics in object-oriented programming using C++. To be able to complete this course, students should have prior programming experience in a third-generation language such as C or Java, and solid programming skills in that language.
Outline
There are 20 units in this course, each of which teaches new programming skills and builds upon previous ones. Units 1–15 are introductory material and can be reviewed quickly. Advanced topics in the course are covered in Units 16–20.
Learning outcomes
Upon successful completion of the course, you should be able to
outline the essential features and elements of the C++ programming language.
explain programming fundamentals, including statement and control flow and recursion.
articulate the principles of object-oriented problem solving and programming.
apply the concepts of class, method, constructor, instance, data abstraction, function abstraction, inheritance, overriding, overloading and polymorphism.
program with basic data structures using array, vector, and other structures.
program using objects and data abstraction, class, and methods in function abstraction.
program using advanced topics, including exceptions, templates and the Standard Template Library.
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 approach.
Evaluation
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:
Activity
Weight
Assignment 1
15%
Assignment 2
20%
Assignment 3
20%
Assignment 4
30%
Final Examination
15%
Total
100%
The final examination for this course must be requested in advance and written under the supervision of an AU-approved exam invigilator. Invigilators include either ProctorU or an approved in-person invigilation centre that can accommodate online exams. Students are responsible for payment of any invigilation fees. Information on exam request deadlines, invigilators, and other exam-related questions, can be found at the Exams and grades section of the Calendar.
To learn more about assignments and examinations, please refer to Athabasca University’s online Calendar.
Materials
This course either does not have a course package or the textbooks are open-source material and available to students at no cost. This course has a Course Administration and Technology Fee, but students are not charged the Course Materials Fee.
Downey, A. B. (1999). Think C++ (version 1.1.0). (PDF)
Brokken, F. B. (2022). C++ annotations (version 12.2.0). (PDF)
Busbee, K. L. (2013). Programming fundamentals — A modular structured approach using C++ (version 1.22). (PDF)
Hansen, J. A. (2013, November). The rook’s guide to C++ (version 1.0). (PDF)
The textbooks for this course are Open Educational Resources (OER).
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.