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
Contact hours

Weekly Distribution:

  • Lecture: 2 hours
  • Lab: 2 hours
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 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
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
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.)

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

Prerequisites

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

* CMPT 1109 is strongly preferred.

Corequisites

Not Specified