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 - pattern/anti-pattern - god object * design patterns - singleton - abstract factory/factory method - template method - bridge - adapter - prototype - state - chain of responsibility - observer - decorator - strategy - command - memento - visitor - composite - flyweight - mediator - registry - facade * 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 19 Jan 21 2. Jan 26 Jan 28 3. Feb 2 Feb 4 Quiz I 4. Feb 9 Feb 11 5. Feb 16 Feb 18 6. Feb 23 Quiz II Feb 25 7. Mar 2 Mar 4 midterm 8. Mar 9 Mar 11 9. Mar 16 Mar 18 10. Mar 23 Quiz III Mar 25 11. Mar 30 Apr 1 12. Apr 6 Apr 8 Quiz IV X Apr 13 no classes Apr 15 spring break 13. Apr 20 Apr 22 14. Apr 27 Apr 29 15. May 4 CS3 final: 7:45 - 10:00 a.m. Wed. May 12