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 ÌÇÐÄvlog´«Ã½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 ÌÇÐÄvlog´«Ã½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.