Computer Programming II

Curriculum guideline

Effective Date:
Course
Discontinued
No
Course code
CMPT 1209
Descriptive
Computer Programming II
Department
Computing Science
Faculty
Science & Technology
Credits
3.00
Start date
End term
Not Specified
PLAR
No
Semester length
15 Weeks
Max class size
35
Course designation
None
Industry designation
None
Contact hours

Lecture: 2 hours/week

Lab: 2 hours/week

Method(s) of instruction
Lecture
Lab
Learning activities

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

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 (such as C++) to efficiently program applications that have an intermediate level of difficulty. Topics include classes, encapsulation, data hiding, move semantics, inheritance, aggregation, polymorphism, virtual functions, object-oriented exception handling, templates, and event-driven programming.
Course content
  • Review of pointers and dynamic memory allocation
  • Classes as abstract data types
  • Static and non-static class members
  • Encapsulation, data hiding, and accessor/mutator member functions
  • Constructors, destructors, and copy constructors
  • Separation of class specification from its implementation
  • Operator overloading and object type conversion
  • Rvalues, Rvalue references, and move semantics
  • Inheritance, class hierarchies, and protected members
  • Aggregation
  • Polymorphism and virtual functions
  • Abstract base classes and pure virtual functions
  • Object-oriented exception handling
    • C++ standard exceptions
    • Programmer-defined exception classes
  • Function and class templates
    • Parameter and non-parameter generic types
    • Specialized class templates
  • STL arrays and vectors
  • Function pointers, function objects, and lambda expressions
  • Event-driven programming and GUI applications
  • Basics of embedded systems programming and bit-wise operators
Learning outcomes

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

  • Compare and contrast procedural and object-oriented programming paradigms;
  • Describe encapsulation, abstraction, and information hiding;
  • Apply inheritance, polymorphism, virtual functions, templates, and other object-oriented-related concepts to write effective programs;
  • Implement class constructors, destructors, copy constructors, accessors, mutators, overloaded operators, and move semantics;
  • Utilize Standard Template Library (STL) arrays and vectors;
  • Compare Command Line Interface (CLI) and Graphical User Interface (GUI) applications, and implement simple GUI applications;
  • Apply object-oriented exception handling concepts using C++ standard exceptions and programmer-defined exception classes;
  • Employ function pointers, function objects, and lambda expressions;
  • Identify the fundamental requirements of embedded systems programming.
Means of assessment

Assessment will be in accordance with the Douglas College Evaluation 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%
Term Test(s) 25% - 35%
Final Exam 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, term tests, and final exam).

Textbook materials

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

Sample textbooks and materials may include:

  • Starting Out with C++ from Control Structures to Objects (current edition), Tony Gaddis, Pearson
  • Introduction to C++ Programming and Data Structures (current edition), Daniel Liang, Pearson
Prerequisites

Minimum C grade in CMPT 1109* or CMPT 1110 or CMPT 1105 or CSIS 1175

* CMPT 1109 is strongly preferred.