Weekly Distribution:
- Lecture: 2 hours
- Lab: 2 hours
Lectures, labs, and self-directed learning (programming assignments)
- 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
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
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.)
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
Not Specified