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 SCHEDULE 1. Jan 15 Jan 17 2. Jan 22 Jan 24 3. Jan 29 Jan 31 Quiz I 4. Feb 5 Feb 7 5. Feb 12 Feb 14 6. Feb 19 Quiz II Feb 21 7. Feb 26 Feb 28 8. Mar 5 Mar 7 midterm 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:00am Mon May 6