Four design and implementation projects are required that are progressively more challenging. A lot of work outside of class is expected. Students that complete this course with good grades will have the skills to work in almost any commercial or industrial organization in this country.
Syllabus CSE687 - Object Oriented Design | |||
---|---|---|---|
Lecture | Topics | Read before class | Project |
Introduction: Lecture #1, Tue Jan 15 |
Syllabus, projects, examination, grading, notation, packages, Handouts | skim CPPPL chp 1-9 skim CPPP 1-6, CPPSL 2 |
hand out Pr1 |
Language Survey: Lecture #2, Thur Jan 17 |
classes, object model, templates, references, streams | CPPP 7, 16 links on lecture page CppR - language |
Pr1 |
Encapsulation: Lecture #3, Tue Jan 22 |
Encapsulation Principle, interfaces, object factories | CPPP 7 links on lecture page |
Pr1 |
Abstraction: Lecture #4, Thur Jan 24 |
Value Types, simulating support for native types | CPPP 7, 13, 14 links on lecture page CppR - class |
Pr1 |
Overloading: Lecture #5, Tue Jan 29 |
operator model, overloading, std::string | CPPP 14, CPPSL 13 links on lecture page CppR - Operators |
Pr1 |
Templates: Lecture #6, Thur Jan 31 |
templates, binding time, software reuse | CPPP 16 links on lecture page CppR - Templates |
Pr1 |
Template Applications: Lecture #7, Tue Feb 05 |
Template pollicies, traits, Containers, smart pointers, reference counted objects | CPPP 16 links on lecture page CppR - Templates |
Pr1 due |
Hierarchy: Lecture #8, Thur Feb 07 |
relationships between classes | CPPP 15 links on lecture page |
Pr2 |
Inheritance & Composition: Lecture #9, Tue Feb 12 |
Inheritance & Composition examples, initialiation | CPPP 15 links on lecture page CppR - Derived Classes |
Pr2 |
Liskov Substitution Principle: Lecture #10, Thur Feb 14 |
Inheritance examples, initialization, polymorphism, Liskov Substitution Principle (ISP) | CPPP 15 links on lecture page |
Pr2 |
Open/Closed Principle: Lecture #11, Tue Feb 19 |
Open/Closed Principle (OCP), design for OCP | links on lecture page | Pr2 |
Interfaces: Lecture #12, Thur Feb 21 |
Depencency Inversion Principle (DIP), interfaces and object factories again | links on lecture page | Pr2 |
Processes and Threads: Lecture #13, Tue Feb 26 |
Win32 Processes, Threads and Locking classes | links on lecture page | Pr2 |
Processes and Threads: Lecture #14, Thur Feb 28 |
Win32 Processes, Threads and Locking classes continued | CPPPL 41, 42 links on lecture page |
Pr2 |
Midterm Review: Lecture #15, Tue Mar 05 |
Review last year's exam | CPPP, CPPSL Class Notes |
Pr2 due |
Midterm Exam: Lecture #16, Thur Mar 07 |
Midterm Exam | You may bring in one page of notes. Write on both sides if you wish. | Pr3 |
Tue Mar 12 | Spring Break | no classes | Pr3 |
Thur Mar 14 | Spring Break | no classes | Pr3 |
Sockets: Lecture #17, Tue Mar 19 |
Win32 Sockets | links on lecture page | Pr3 |
Sockets: Lecture #18, Thu Mar 21 |
Socket Communication | links on lecture page | Pr3 |
Managed C++: Lecture #19, Tue Mar 26 |
(Managed) C++/CLI, Syntax and Example Applications, Framework Class Libraries | links on lecture page | Pr3 |
WPF Lecture #20, Thu Mar 28 |
Windows Presentation Foundation using (managed) C++/CLI | links on lecture page | Pr3 |
Midterm Results: Lecture #21, Tue Apr 02 |
Exams returned, solutions discussed, Midterm Makeup Examination | solutions handed out | Pr3 |
Components: Lecture #22, Thu Apr 04 |
components, interfaces, Interface Segregation Principle (ISP), Exceptions | CPPPL 13 links on lecture page |
Pr3 |
Streams: Lecture #23, Tue Apr 09 |
Exceptions, iostreams | CPPP 8, 18 links on lecture page |
Pr3 due |
Standard Template Library: Lecture #24, Thu Apr 11 |
Standard Template Library (STL), STL containers, iterators | CPPSL 6,7 CPPP 9-11 links on lecture page |
Pr4 |
STL Details: Lecture #25, Tue Apr 16 |
STL details | CPPSL 8-12 links on lecture page |
Pr4 |
Template Metaprogramming: Lecture #26, Thu Apr 18 |
compile-time functions, selection, type lists | links on lecture page | Pr4 |
Applications of Template Metaprogramming: Lecture #27, Tue Apr 23 |
Typelists, functors, smart pointers, Loki Library | links on lecture page | Pr4 |
Wrap-up: Lecture #28, Thu Apr 25 |
Where do we go from here? | links on lecture page | Pr4 |
Wrap-up: Lecture #29, Tue Apr 30 |
Help with Project #4 | links on lecture page | Pr4 due |