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 Week 1. Jan 18, 2. Jan 25 3. Feb 1, quiz (Friday) 4. Feb 8, 5. Feb 15, 6. Feb 22, quiz (Friday) 7. Feb 29, 8. Mar 7, midterm (Wednesday, March 9th) 9. Mar 14, 10. Mar 21, spring break 11. Mar 28 12. Apr 4 quiz (Wednesday?) 13. Apr 11 14. Apr 18 quiz (Wednesday?) 15. Apr 25 16. May 2 Consultation: Friday, May 6th, 9:15am-2:30pm MSB 356 Final Exam: 10:15-12:30pm, Wed May 11