TENTATIVE TOPICS * procedural programming review * object-based programming review * UML diagrams: class, object, state * object-oriented programming - inheritance - polymorphism and virtual functions - overloading and overriding - abstact operations and classes - private vs. public inheritance, multiple inheritance - type covariance - implementation hiding/PIMPL idiom, nested classes - push and pull communication methods between objects - double dispatch - smart pointers - delegation * design patterns - singleton - abstract factory/factory method - template method - bridge - adapter - prototype - state - chain of responsibility - observer - decorator - strategy - command - memento - visitor - composite - flyweight * generic programming - iterators - templates - implementing design patterns using templates - metaprogramming * programming with standard template library - containers - generic algorithms - extending STL * C++ concepts - casting - (forward) class declaration, elaborated type specifier SPRING 2023 TENTATIVE SCHEDULE 1. Jan 16 Jan 18 2. Jan 23 Jan 25 3. Jan 30 Feb 1 Quiz I 4. Feb 6 Feb 8 5. Feb 13 Feb 15 6. Feb 20 Quiz II Feb 22 7. Feb 27 Feb 29 midterm 8 Mar 5 Mar 7 9. Mar 12 Mar 14 10. Mar 19 Mar 21 Quiz III Mar 26 no classes Mar 28 spring break 11. Apr 2 Apr 4 12. Apr 9 Apr 11 13. Apr 16 Quiz IV Apr 18 14. Apr 23 Apr 25 15. Apr 30 May 2 CS3 final: 7:45 - 10:00 a.m. Mon. May 6