CSE687 - Object Oriented Design

Revised: 27 March 2007
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

CSE681-SWMAA  CSE686-IP  CSE687-OOD  CSE691-CP  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

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 2007:

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