Computer Programming II

Faculty
Science & Technology
Department
Computing Science
Course Code
CMPT 1209
Credits
3.00
Semester Length
15 Weeks
Max Class Size
35
Method Of Instruction
Lecture
Lab
Typically Offered
To be determined

Overview

Course Description
This is a second course in computing science and programming, presented using an object-oriented perspective and intensive hands-on experience. Students will learn how to apply fundamental object-oriented concepts using a high-level programming language like C++ to efficiently program applications that have an intermediate level of difficulty. Topics include encapsulation, inheritance, aggregation, polymorphism, templates, and virtual functions. Software development lifecycle and modelling, code efficiency analysis, event-driven programming, and exception handling are also introduced in this course.
Course Content
  • A brief review of C++ basics and procedural programming:
    • Data types and operators
    • Decision-making and loop structures
    • Arrays, strings, and pointers
    • Static vs. dynamic memory allocation
    • Iterative and recursive functions
    • Basic IO and file processing
    • Exception handling
    • Modular programming: Procedural vs. object-oriented programming
  • Classes as abstract data types
  • Static class members vs. non-static instance members
  • Information hiding, private attributes, and getter/setter methods
  • Constructors, destructors, and copy constructors
  • Separating class specification from its implementation
  • Operator overloading and object type conversion
  • Rvalue references and move semantics
  • Inheritance, class hierarchies, and protected members
  • Aggregation
  • Polymorphism and virtual functions
  • Abstract base classes and pure virtual functions
  • Exception classes and object-oriented exception handling 
  • Generics, templates, and C++ STL
  • Lambda expressions and function pointers
  • Event-driven programming
    • CLI vs. GUI applications
    • C++ GUI API’s
    • Basic GUI controls
  • Program testing and code debugging techniques
  • An introduction to code quality factors
    • Efficiency analysis of algorithms
    • Good coding style, and conventions
    • Assertions, invariants, and correctness
  • An introduction to documentation systems
  • Basics of C++ programming for embedded systems
Methods Of Instruction

Lectures, labs, and self-directed learning (programming assignments)

Means of Assessment

Evaluation will be carried out in accordance with Douglas College policy. The instructor will present a written course outline with specific evaluation criteria at the beginning of the semester. Evaluation will be based on the following.

Labs

10% - 20%
Assignments 10% - 20%
Quizzes 0% - 10%
Midterm Exam 25% - 35%
Final Examination 30% - 40%
Total 100%

**In order to pass the course, in addition to receiving an overall course grade of 50%, students must achieve a grade of at least 50% on the combined weighted examination components (including quizzes, midterm and final examinations.)

Learning Outcomes

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

  • Explain the importance of modular programming and compare procedural and object-oriented methodologies
  • Discuss encapsulation, abstraction, information hiding, inheritance, polymorphism, virtual functions, templates, and other object-oriented-related terminology
  • Identify different types of methods and their roles in a class: constructors, destructors, copy constructors, getters and setters, and operator-overloading methods
  • Design, develop, implement, and document programs efficiently according to current best practices
  • Identify and use some of the basic data structures implemented in C++ STL (Standard Template Library) to develop software
  • Analyze and compare the efficiency of algorithms
  • Explain the importance of assertions and invariants to ensure program correctness
  • Explain the role of documentation systems
  • Compare CLI (Command Line Interface) and GUI (Graphical User Interface) applications, and implement simple GUI applications
  • Define exception classes to utilize object-oriented exception handling
  • Apply lambda expressions and function pointers
Textbook Materials

Consult the Douglas College Bookstore for the latest required textbooks and materials.

Sample text:

Introduction to C++ Programming and Data Structures (latest edition), Daniel Liang, Pearson, ISBN: 978-0-13-466985-4

Requisites

Course Guidelines

Course Guidelines for previous years are viewable by selecting the version desired. If you took this course and do not see a listing for the starting semester / year of the course, consider the previous version as the applicable version.

Course Transfers

Institution Transfer Details Effective Dates
Alexander College (ALEX) ALEX CPSC 112 (4) 2020/05/01 to -
Athabasca University (AU) AU COMP 3XX (3) 2020/05/01 to -
Camosun College (CAMO) CAMO COMP 139 (3) 2020/05/01 to -
College of New Caledonia (CNC) CNC CSC 110 (3) or CNC CSC 1XX (3) 2020/05/01 to -
College of the Rockies (COTR) COTR COMP 1XX (3) 2020/05/01 to -
Coquitlam College (COQU) COQU CSCI 200 (3) 2020/05/01 to -
Kwantlen Polytechnic University (KPU) KPU CPSC 1103 (3) 2020/05/01 to -
LaSalle College Vancouver (LCV) DOUG CMPT 1109 (3) & DOUG CMPT 1209 (3) = LCV VGP 101 (6) 2019/09/01 to -
North Island College (NIC) NIC CPS 1XX (3) 2020/05/01 to -
Northern Lights College (NLC) NLC CPSC 1XX (3) 2020/05/01 to -
Okanagan College (OC) OC COSC 121 (3) 2020/01/01 to -
Quest University (QU) QU IND 3156 (3) 2020/05/01 to -
Simon Fraser University (SFU) SFU CMPT 135 (3) 2020/05/01 to -
Simon Fraser University (SFU) SFU CMPT 125 (3) 2020/05/01 to -
Thompson Rivers University (TRU) TRU COMP 1XXX (3) 2020/05/01 to -
University Canada West (UCW) UCW CMPT 2XX (3) 2020/05/01 to -
University of British Columbia - Okanagan (UBCO) UBCO COSC 1st (3) 2020/05/01 to -
University of British Columbia - Vancouver (UBCV) UBCV CPSC 1st (3) 2020/05/01 to -
University of Northern BC (UNBC) UNBC CPSC 1XX (4) 2020/05/01 to -
University of the Fraser Valley (UFV) UFV COMP 1XX (3) 2020/05/01 to -
University of Victoria (UVIC) UVIC CSC 115 (1.5) 2020/05/01 to -
Vancouver Community College (VCC) VCC CMPT 1020 (3) 2020/05/01 to -
Vancouver Island University (VIU) VIU CSCI 161 (4) 2020/05/01 to -

Course Offerings

Fall 2021

CRN
Days
Dates
Start Date
End Date
Instructor
Status
36960
Wed Fri
07-Sep-2021
- 08-Dec-2021
07-Sep-2021
08-Dec-2021
Khosravi
Shahriar
Open
Max
Enrolled
Remaining
Waitlist
35
17
18
0
Days
Building
Room
Time
Wed Fri
New Westminster - North Bldg.
N6111
8:30 - 10:20
CRN
Days
Dates
Start Date
End Date
Instructor
Status
36961
Tue Thu
07-Sep-2021
- 08-Dec-2021
07-Sep-2021
08-Dec-2021
Khosravi
Shahriar
Open
Max
Enrolled
Remaining
Waitlist
35
22
13
0
Days
Building
Room
Time
Tue Thu
New Westminster - North Bldg.
N6111
16:30 - 18:20