CSE687 - Object Oriented Design

Revised: 15 April 2008
Home  Courses  SWTrack  Code  Handouts  StudCult  CoreTech  Books  Articles  Math  Research  CASE Projects  Project Topics  SWDev  WebDev  News  OtherLinks  SiteDesign  Graduates  AllPages  Office Hours  Seminars  Notices  Contents

CSE382-AADS  CSE681-SWMAA  CSE686-IP  CSE687-OOD  CSE775-DO  CSE776-DP  CSE778-AWP  CSE784-SWS

Resources:

Lectures Code Syllabus
File Download ScreenShot Uploading Project Submissions Students

Course Scope:

Covers design and implementation of object oriented programs using the C++ language. This is an intensive course covering: design strategies used in object oriented design, essentially all of the Standard C++ Programming Lanaguage, and its Standard Library. A typical class will introduce some part of the C++ language, present a design principle that relates in some way to that part, and illustrate both with code examples.

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.

Required Texts and Notes:

  1. The C++ Programming Lanaguage, Bjarne Stroustrup, 3rd Edition, Addison-Wesley, 1997, ISBN 0-201-88954-4
  2. The C++ Standard Library, Nicolai Josuttis, Addison-Wesley, 1999, ISBN 0-201-37926-0
  3. Class Notes, available on www.ecs.syr.edu/faculty/fawcett/handouts/CSE687
  4. Reference: C++ Primer Plus, Stephen Prata, Waite Group Press, 1998, ISBN 1-57169-131-6, available at desk in SciTech Library
  5. C++ FAQs Boost C++ Library UML Tutorial ACCU.org C/C++ User's Journal The C++ Source STL Programming Links DinkumWare C++ Std::Lib reference

Recommended References:

  1. C++ Coding Standards, Herb Sutter, Andrei Alexandrescu, Addison-Wesley, 2005
  2. C++ Gotchas, Avoiding Common Problems in Coding and Design, Stephen Dewhurst, Addison-Wesley, 2003
  3. Effective STL, Scott Meyers, Addison-Wesley, 2002
  4. Effective C++, Scott Meyers, Addison-Wesley, 2nd Edition, 1998
  5. More Effective C++, Scott Meyers, Addison-Wesley, 1996
  6. The Design and Evolution of the C++ Language, Bjarne Stroustrup, Addison-Wesley, 1994
  7. Modern C++ Design, Andre Alexandrescu, Addison-Wesley, 2001
  8. Imperfect C++, Matthew Wilson, Addison-Wesley, 2005
  9. Exceptional C++, Herb Sutter, Addison-Wesley, 2000
  10. More Exceptional C++, Herb Sutter, Addison-Wesley, 2002
  11. Exceptional C++ Style, Herb Sutter, Addison-Wesley, 2005

Prerequisites:

Students are expected to have a good working knowledge of the C Programming Language. Some knowledge of C++ will help you, but is not required. This course is significanly more challenging than the usual undergraduate course in C++.

Syllabus - Spring 2008:

Lecture
Topics
Read before class
Project
Introduction:
Lecture #1
Mon, Jan 14
modules, notation, projects, examination, grading, Handouts skim CPPPL chp 1-9
read CPPPL 2, 3, CPPSL 2
hand out Pr1
Language Survey:
Lecture #2
Wed, Jan 16
classes, object model, templates, references, streams CPPPL 2, 3, 10
Web Notes
Pr1
Mon, Jan 21 Martin Luther King Jr. Day, no classes -
-
Encapsulation:
Lecture #3
Wed, Jan 23
Encapsulation Principle, interfaces, object factories CPPPL 2, 3, 10
Web Notes
Pr1
Abstraction:
Lecture #4
Mon, Jan 28
Abstract Data Types, simulating support for native types CPPPL 10, 11, CPPSL 11
Web Notes
Pr1
Overloading:
Lecture #5
Wed, Jan 30
operator model, overloading, std::string CPPPL 11
Web Notes
Pr1
Templates:
Lecture #6
Mon, Feb 04
templates, binding time, software reuse CPPSL 2,
CPPPL 13
Web Notes
Pr1
Template Applications:
Lecture #7
Wed, Feb 06
Template pollicies, traits, Containers, smart pointers, reference counted objects CPPPL 13
Web Notes
Pr1
Hierarchy:
Lecture #8
Mon, Feb 11
relationships between classes CPPPL 12, 15
Web Notes
Pr1 due
Inheritance & Composition:
Lecture #9
Wed, Feb 13
Inheritance & Composition examples, initialiation CPPPL 10
Web Notes
Pr2
Liskov Substitution Principle:
Lecture #10
Mon, Feb 18
Inheritance examples, initialization, polymorphism, Liskov Substitution Principle (ISP) CPPPL 12, 15
Web Notes
Pr2
Open/Closed Principle:
Lecture #11
Wed, Feb 20
Open/Closed Principle (OCP), design for OCP Web Notes
Pr2
Interfaces:
Lecture #12
Mon, Feb 25
Depencency Inversion Principle (DIP), interfaces and object factories again CPPPL 12
Notes Appendix
Pr2
Interface Segregation Principle:
Lecture #13
Wed, Feb 27
components, interfaces, Interface Segregation Principle (ISP), Exceptions CPPPL 12
Web Notes
Pr2
Streams:
Lecture #14
Mon, Mar 03
Exceptions, iostreams CPPPL 13, CPPPL 2, 3
Web Notes
Pr2
Streams Details:
Lecture #15
Wed, Mar 05
iostreams, stringstreams, manipulators CPPSL 13, CPPPL 2, 3
Web Notes
Pr2
Mon, Mar 10 Spring Break
-
Pr2 due
Wed, Mar 12 Spring Break
-
-
Review for Midterm:
Lecture #16
Mon, Mar 17
Review last year's exam CPPSL, CPPPL
Notes
Pr3
Midterm Exam:
Lecture #17
Wed, Mar 19
You may bring in one page of notes.
Write on both sides if you wish.
-
-
Standard Template Library:
Lecture #18
Mon, Mar 24
Standard Template Library (STL), STL containers, iterators CPPSL 5, 6, 7
CPPPL 16, 17, 19
Web Notes
Pr3
Sockets, Pr#3:
Lecture #19
Wed, Mar 26
STL details CPPSL 8, 9, CPPPL 18
Web Notes
Pr3
Sockets and Threads
Lecture #20
Mon, Mar 31
Win32 Sockets, Sockets Class, Threads and Locking classes Web Notes
Pr3
Sockets:
Lecture #21
Wed, Apr 02
Sockets, socketcommunicator Web Notes
Pr3
OOD Design and Design Issues
Lecture #22
Mon, Apr 07
Design Presentations, Chalk talk Web Notes
Pr3
Managed C++:
Lecture #23
Wed, Apr 09
Managed C++, Syntax and Example Applications, Framework Class Libraries Web Notes
Pr3
Review Midterm Results:
Lecture #24
Mon, Apr 14
We will go over instructor's solutions. Web Notes
Pr3due
Template Metaprogramming:
Lecture #25
Wed, Apr 16
compile-time functions, selection, type lists Web Notes
Pr3
Applications of Template Metaprogramming:
Lecture #26
Mon, Apr 21
Typelists, functors, smart pointers, Loki Library Web Notes
Pr4
Documenting OO Designs:
Lecture #27
Wed, Apr 23
Diagrams: packages, classes, activities, modules, examples Web Notes
Pr4
Wrap-up:
Lecture #28
Mon, Apr 28
Where do we go from here? Web Notes
Pr4