DOUGLAS COLLEGE CMPT 1209: COMPUTER PROGRAMMING II Course Outline Summer 2023 Instructor: Mohammad Aboofazeli Office: Room S3926 (NW Campus) E-Mail: aboofazelim@douglascollege.ca Textbook: “Starting out with C++, from control structures through objects:” by Tony Gaddis, 10th edition, Pearson Canada COURSE DESCRIPTION This is a second course in computing science and programming, presented using an objectoriented 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 OBJECTIVES Upon completion of this course, students will be able to: Explain the importance of modular programming and compare procedural and objectoriented 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 Evaluation will be carried out in accordance with Douglas College policies. Evaluation will be based on the following criteria: Labs (and participation): 15% Homework Assignments: 20% Midterm examination: 30% Final examination: 35% NOTE: A student MUST attempt at least 70% of the total weighted percentage for this course, otherwise a grade of UN will be assigned. Missing the final exam will automatically lead to a UN grade. Please refer to the appropriate pages of the current year’s College Calendar for additional information on transcript grades and the grading system. 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 quiz, midterm and final examinations). REGULATIONS Attendance and Participation: Students are expected to attend, and actively participate in all class sessions. Class Announcements: Students are responsible for class announcements concerning course assignment requirements, and/or schedule changes even if they are not in attendance. Academic Dishonesty: The Academic Dishonesty policy is available through the Douglas College website and will be the policy that is followed in this course. Working on Assignments: In this course, all assignments are individual assignments. The instructor takes no responsibility for lost assignments. Backups of your work should always be kept on another storage device or computer. Late assignments: Assignments must be handed in on or before the date and time specified on the assignment. For every late assignment, a student will receive a 0. There will be no chance of re-writing missed assignments. Missed exams: Exams (midterm and final) will be offered ONLY during the scheduled date and time. For any exception to be arranged, the instructor must be notified BEFORE the time of the test (by e-mail to or discussion with the instructor) and only for very good reasons (i.e. medical). The instructor may request to see proof of the reason for absence. Final exam: Please check the exam schedule as soon as it becomes available for potential scheduling conflicts. Course Schedule This course schedule is subject to change. Changes will be made based on our class experiences. Students will be informed about any possible changes. Week 1 Weeks 2 and 3 Weeks 4 and 5 Week 6 Week 7 Week 8 Week 9 Weeks 10 and 11 Week 12 Week 13 Review of pointers and dynamic memory allocation Introduction to object-oriented programming, classes, objects, private and public members, inline member functions, accessors, mutators, constructors, passing arguments to constructors, destructors, pointers to objects, arrays of objects Static members vs. instance members, Copy constructors, Operator overloading, friend functions, aggregation Inheritance and polymorphism, exception handling, testing and debugging Function templates, class templates Review Midterm exam (June 29) Rvalue references and move semantics, Lambda expressions C++ STL Event-driven programming and GUI applications C programming for embedded systems