Course Overview
Welcome to Computer Science 206: Introduction to Computer Programming (C++), a 3-credit, university-level course
that introduces C++ programming. You are about to embark on a course that is challenging and rewarding.
Programming is a practical skill that does not come naturally to most people. You will have to work at learning
programming.
In a classroom, you have classmates to help you; in a professional setting, you have colleagues to help you. When you
write an essay, an editor can validate your ideas, find problems and check your work. In the same way, a second pair
of eyes is helpful in programming. While the instruction for this course is individualized study, you are welcome to
form small, online groups (forums) to study the problems, discuss designs to solve the problems, and share errors
encountered. However, you are expected to develop your own code and to document and test your code by yourself.
Learning Outcomes
Upon successful completion of this course, you will 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.
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.
Course Outline
There are 15 units in this course, each of which teaches new programming skills and builds upon previous ones.
Course Materials
Primary Textbook
The primary textbook for this course is an Open Educational Resource (OER):
Downey, A. B. (1999). Think C++ (version 1.1.0).
Readings from this OER are prefaced in the Study Guide with ThinkCScpp.
Additional and Further Reading
Additional and further readings for the course are found in the following two OERs:
Busbee, K. L. (2013). Programming fundamentals — A modular structured approach using C++ (version 1.22).
Readings from this OER are prefaced in the Study Guide with ProgFund.
Hansen, J. A. (2013, November). The rook’s guide to C++ (version 1.0).
Readings from this OER are prefaced in the Study Guide with RooksGuide.
IMPORTANT NOTE
All three OERs listed above represent excellent reference materials for this course. While it may seem odd that the
oldest of the books is the primary textbook, it represents the most universal coverage of C++. The other two OERs are
used where modern features of C++ are required in this course.
Each chapter in the primary textbook (Think C++ by A. B. Downey) ends with a glossary of terms covered in the
chapter. This can be used as a handy memory aide when reviewing the topics covered.
,Discussion Forums
There are many discussion forums in this course. Please make use of them to share ideas and help each other
throughout the course.
The General Discussion Forum is for overall course-related questions and questions about coding style, guidelines,
editors and compilers. Make a point of checking this forum every time you log into COMP 206.
The Assignment Forums are specific to each assessment. Use these forums to discuss issues and help each other with
specific assignment questions. Note that, in the end, each assignment must still represent your own work.
The “Points to Ponder” Forums are for discussions and reflections on each Study Guide unit. The Course Professor
will post discussion topics and questions in these forums to generate discussion.
IMPORTANT NOTE
What you put into, and get out of, the discussion forums is a wealth of information that you are encouraged to
include in your Assignment Journal for this course.
Evaluation
Your final grade in COMP 206 is based on the marks you achieve on four assignments and a final exam. You must
achieve at least 50% on each assignment and the exam and an overall course grade of at least 50% to pass the course.
Assignments
Read the Assignment Requirements (located under Assessment on the course home page) for specifics regarding
assignment deliverables—that is, the items you must submit for marking and what is required to obtain maximum
credit on the assignments.
Note that 30% of each assignment comprises an Assignment Journal submission. Familiarize yourself with this Journal
and work on it regularly as you move through this course. You will find detailed information about the Assignment
Journal in the Assignment Requirements link on the course home page.
Examination
You are required to write one final, online exam. Please request your exam well in advance of the write date.
The final exam is a closed-book exam to be written without any printed material or electronic devices. You will have
three (3) hours to complete it. It is worth 15 per cent of your final grade. The final exam will ask you to provide a
detailed description of how you arrived at your final assignment. You must score 50 per cent to pass the final exam.
Bring your student ID number and a picture identification with you to your exam.
Marking Scheme
The following chart summarizes the evaluation activities and their credit weight:
Activity Credit Weight
Assignment 1 15%
Assignment 2 20%
Assignment 3 20%
Assignment 4 30%
Final Exam 15%
Total 100%
Study Plans
Students who approach their studies in a systematic and organized manner are more likely to complete their courses
successfully than those who do not plan their activities. You are advised, therefore, to follow one or both of the Study
Plans devised for this course. Alternatively, you may develop your own study plan to assist you in budgeting your time
,and scheduling your progress. When designing your study plan, keep in mind that you must complete the course
within the contracted period. It is best to aim for a shorter period in case an unforeseen circumstance arises.
There are two study plans devised for this course. The first is a map of the Study Guide units divided into a
standard 12-week study schedule representing a typical university semester. This is the Semester-Based Study Plan.
As there are more than 12 Study Guide units, you will be covering multiple units in a given week. While this may
sound challenging, the amount of material covered is not as much as it seems; the Study Guide units are based on
actual topic coverage.
The second study plan is the Assignment-Based Study Plan. It provides a detailed list of course activities and
assignment programming techniques based upon the course materials. This study plan maps the assignment
questions to the Study Guide units and sections of the course materials you will need to review prior to working on
the questions.
Semester-Based Study Plan
A study schedule based on a 12-week study plan is outlined below. This study schedule suggests when to start each
assignment but does not imply that you have covered all the content of the units needed to complete the assignment.
Refer to the Assignment-Based Study Plan to ensure that you have completed all required Study Guide units before
you complete each assignment.
IMPORTANT NOTE
The course materials are not intended to be strictly sequential. It is permissible and, indeed, encouraged that you skip
around through the various units as you work through the course.
Week Units
1 Units 1 and 2 (Introduction and Key Concepts)
2 Unit 3 (Functions)
Begin work on Assignment 1.
3 Unit 4 (Conditionals)
4 Unit 5 (Function Return Values)
5 Unit 6 (Iteration)
Begin work on Assignment 2.
6 Unit 7 (Strings)
7 Units 8 and 9 (Structures)
Begin work on Assignment 3.
8 Unit 10 (Vectors)
Unit 11 (Object Member Functions)
Begin work on Assignment 4.
9 Units 12 and 13 (Vectors of Objects and Objects of Vectors)
10 Unit 14 (Classes)
11 Unit 15 (Input / Output Classes)
12 Addendum and Additional Readings
Assignment-Based Study Plan
As you work on various assignment questions, you will find that the questions utilize material from later units (i.e.,
units you have not completed yet). You may not need all of the material from these later units to begin work on the
assignment questions.
, Only the most important and pertinent units required to solve the assignment questions are listed in the following
table.
Assignment Problem Required Techniques Key
Units
Assignment 1 Problem 1 Loops and nested loops; if–else decisions; display to 2, 3, 6
Formatted standard output
Multiplication Table
Assignment 1 Problem 2 Input; input parsing; floating point calculations; 2, 3, 6,
Temperature display to standard output 7
Conversion
Assignment 1 Problem 3 Loops and nested loops; floating point calculations; 2, 3, 6,
Formatted display to standard output 7
Temperature
Conversion
Assignment 1 Problem 4 Loops and nested loops; switch; decision (if– 2, 3, 6,
Help System Menu else); input; display to standard output 7
Assignment 1 Problem 5 Loops and nested loops; modulus operator; 2, 3, 6,
Prime Number Table decision (if–else); display to standard output 7
Assignment 2 Problem 1 Classes and class instances; constructors; default 14
Animal Sound Class constructor; method overriding; display to standard
output
Assignment 2 Problem 2 Classes and class instances; private instance 11, 14
Book Class variables; get/set methods; display to standard
Demonstration output
Assignment 2 Problem 3 Classes and class instances; class termination 11, 14
Elevator Simulation condition; display to standard output
Assignment 2 Problem 4 Classes and class instances; class inheritance; 11, 14
Rodent Inheritance method overriding; display to standard output
Assignment 2 Problem 5 Classes and class instances; class inheritance; 11, 14
Geometry Exercise method overriding; display to standard output
Assignment 3 Problem 1 File Input and input parsing; display to standard 7, 15
Document Whitespace output
Count
Assignment 3 Problem 2 File and keyboard input and input parsing; display 7, 15
File Line-by-Line to standard output
Display
Assignment 3 Problem 3 File and keyboard input and input parsing; multiple 7, 15
Text File Reader classes and constructors; arrays; String handling;
display to standard output