﻿<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xsl" href="../../webpages/courses.xsl" ?>
<!--
/////////////////////////////////////////////////////////////////////////////////////////
//  CSE687codeL25.xml - provides links Lecture #25 materials                //
//                                 on the ECS college server                              //
//                                                                                                   //
//  Jim Fawcett, CST 2-187, Syracuse University, jfawcett@twcny.rr.com //
/////////////////////////////////////////////////////////////////////////////////////////
-->

<courses name="Fawcett">

  <btitle>CSE687 Lecture #26</btitle>
  <theme src="../../webpages/CodeTheme.css" />

  <visible>
  <title>CSE687 - Object Oriented Design</title>
  <subtitle>Lecture #26 - Design Strategy Examples</subtitle>
  <revised>17 April 2009</revised>
  
  <hilight>
    <ifile title="Home">../../webpages/FawcettHome.xml</ifile>&#32;
    <ifile title="Courses">../../webpages/Courses.xml</ifile>&#32;
    <ifile title="Code">../../webpages/Code.xml</ifile>&#32;
    <ilink title="Handouts">www.ecs.syr.edu/faculty/fawcett/handouts</ilink>&#32;
    <ifile title="CoreTech">../../webpages/CoreTechnologies.xml</ifile>&#32;
    <ifile title="Books">../../webpages/Books.xml</ifile>&#32;
    <ifile title="Articles">../../webpages/Articles.xml</ifile>&#32;
    <ifile title="Math">../../webpages/Mathematics.xml</ifile>&#32;
    <ifile title="Research">../../webpages/research.xml</ifile>&#32;
    <ifile title="Masters Projects">../../webpages/MastersProjects.xml</ifile>&#32;
    <ifile title="SWDev">../../webpages/swdev.xml</ifile>&#32;
    <ifile title="WebDev">../../webpages/webdev.xml</ifile>&#32;
    <ifile title="News">../../webpages/news.xml</ifile>&#32;
    <ifile title="OtherLinks">../../webpages/OtherLinks.xml</ifile>&#32;
    <ifile title="SiteDesign">../../webpages/SiteDesign.xml</ifile>&#32;
    <ifile title="Graduates">../../webpages/graduates.xml</ifile>&#32;
    <ifile title="AllPages">../../webpages/AllPages.xml</ifile>&#32;
    <ifile title="Office Hours">../../webpages/OfficeHours.xml</ifile>&#32;
    <notice title="Notices">../../webpages/notices.xml</notice>&#32;
    <html><a href="#contents">Contents</a></html>&#32;
  </hilight>

  <!-- <include src="CoursesNavBar.xml"/> -->

  <hilight>
    <ifile title="CSE681-SWMAA">../../webpages/CSE681.xml</ifile>&#32;
    <ifile title="CSE686-IP">../../webpages/CSE686.xml</ifile>&#32;
    <ifile title="CSE687-OOD">../../webpages/CSE687.xml</ifile>&#32;
    <ifile title="CSE775-DO">../../webpages/CSE775.xml</ifile>&#32;
    <ifile title="CSE776-DP">../../webpages/CSE776.xml</ifile>&#32;
    <ifile title="CSE778-AWP">../../webpages/CSE778.xml</ifile>&#32;
    <ifile title="CSE784-SWS">../../webpages/CSE784.xml</ifile>
  </hilight>

  <hilight>
    <ifile title="Lecture #01">../Lectures/CSE687CodeL1.xml</ifile>&#32;
    <ifile title="Lecture #02">../lectures/CSE687CodeL2.xml</ifile>&#32;
    <ifile title="Lecture #03">../Lectures/CSE687CodeL3.xml</ifile>&#32;
    <ifile title="Lecture #04">../Lectures/CSE687CodeL4.xml</ifile>&#32;
    <ifile title="Lecture #05">../Lectures/CSE687CodeL5.xml</ifile>&#32;
    <ifile title="Lecture #06">../Lectures/CSE687CodeL6.xml</ifile>&#32;
    <ifile title="Lecture #07">../Lectures/CSE687CodeL7.xml</ifile>&#32;<br/>
    <ifile title="Lecture #08">../Lectures/CSE687CodeL8.xml</ifile>&#32;
    <ifile title="Lecture #09">../Lectures/CSE687CodeL9.xml</ifile>&#32;
    <ifile title="Lecture #10">../Lectures/CSE687CodeL10.xml</ifile>&#32;
    <ifile title="Lecture #11">../Lectures/CSE687CodeL11.xml</ifile>&#32;
    <ifile title="Lecture #12">../Lectures/CSE687CodeL12.xml</ifile>&#32;
    <ifile title="Lecture #13">../Lectures/CSE687CodeL13.xml</ifile>&#32;
    <ifile title="Lecture #14">../Lectures/CSE687CodeL14.xml</ifile>&#32;<br/>
    <ifile title="Lecture #15">../Lectures/CSE687CodeL15.xml</ifile>&#32;
    <ifile title="Lecture #16">../Lectures/CSE687CodeL16.xml</ifile>&#32;
    <ifile title="Lecture #17">../Lectures/CSE687CodeL17.xml</ifile>&#32;
    <ifile title="Lecture #18">../Lectures/CSE687CodeL18.xml</ifile>&#32;
    <ifile title="Lecture #19">../Lectures/CSE687CodeL19.xml</ifile>&#32;
    <ifile title="Lecture #20">../Lectures/CSE687CodeL20.xml</ifile>&#32;
    <ifile title="Lecture #21">../Lectures/CSE687CodeL21.xml</ifile>&#32;<br/>
    <ifile title="Lecture #22">../Lectures/CSE687CodeL22.xml</ifile>&#32;
    <ifile title="Lecture #23">../Lectures/CSE687CodeL23.xml</ifile>&#32;
    <ifile title="Lecture #24">../Lectures/CSE687CodeL24.xml</ifile>&#32;
    <ifile title="Lecture #25">../Lectures/CSE687CodeL25.xml</ifile>&#32;
    <ifile title="Lecture #26">../Lectures/CSE687CodeL26.xml</ifile>&#32;
    <ifile title="Lecture #27">../Lectures/CSE687CodeL27.xml</ifile>&#32;
    <ifile title="Lecture #28">../Lectures/CSE687CodeL28.xml</ifile>&#32;
  </hilight>

  <hilight>
    <html><a href="#Contents">Contents</a></html>&#32;
    <html>
      <a href="../../webpages/cse687.xml#Syllabus">Syllabus</a>
    </html>&#32;
    <ifile title="SG - Design">StudyGuideDesign.xml</ifile>&#32;
    <ifile title="SG - Templates">StudyGuideTemplates.xml</ifile>&#32;
    <ifile title="SG - Class Relationships">StudyGuideClassRelationships.xml</ifile>&#32;
  </hilight>
  
  <section title="Web Resources:">
    <ilink title="Stroustrup's Home Page">www.research.att.com/~bs/homepage.html</ilink>,
    <ilink title="Assoc. of C/C++ Users">www.accu.org</ilink>,
    <ilink title="C++&#160;at&#160;Microsoft">www.gotw.ca/publications/standard_c++_meets_managed_c++.htm</ilink>, 
    <ilink title="Code&#160;Project">www.codeproject.com</ilink>,
    <ilink title="Sells&#160;Brothers">www.sellsbrothers.com</ilink>,
    <ilink title="Guru&#160;of&#160;the&#160;Week">www.gotw.ca</ilink>,
    <ilink title="C/C++&#160;User's&#160;Journal">www.cuj.com</ilink>,
    <ilink title="devCentral">devCentral.iftech.com</ilink>,
    <ilink title="Dr.&#160;Dobb's&#160;Journal">www.ddj.com</ilink>,
    <ilink title="Boost&#160;Library">www.boost.org</ilink>,
    <ilink title="techNetCast">technetcast.ddj.com</ilink>
  </section>
  
  <isection title="Office Hours:">
    <ifile title="Instructor &amp; TAs">../../webpages/officeHours.htm</ifile>
  </isection>
  
  <section title="Content:">
  <html><a name="Contents" id="Syllabus"/></html>
    This lecture continues with template metaprogramming.
    <olist>
      <litem>
        <html>
          <a href="../../webpages/cse687.xml#Syllabus">Syllabus</a><br/>Describes topics to be covered,
          reading material for you to digest <u>before coming to class</u>, and due dates
          for the assigned projects.
        </html>
      </litem>
      <litem>
        Project #4s are due the last day of classes, Monday April 27th.  I will accept late projects, levying, as usual
        a late fee of 1 point per day, up to Monday May 4th.  No projects will be accepted after that.  You may turn in Midterm Makeup
        exams (both parts) until, but no later than, Monday May 11th.  No late fee is charged for Midterm makeups.
        <p/>
        All of these dates end exactly at midnight (12:00) on the day specified. 
       </litem>
<!--
       <litem>
         <ifile title="Project #4">../projects/pr4s08.doc</ifile> - 
         Directory File Synchronizer<br/>
         <file title="Project4HelpSp08">../code/Project4HelpSp08</file>
         C++/CLI Winform with ownerdraw ListBox to get items with color cues<br/>
         <file title="C++/CLI Form with child thread">../code/FormWithCppThread</file>
         Demonstrates use of Form Invoke to allow child thread to send data to ListBox.<br/>
         <file title="C++/CLI Form with Stream">../code/FormWithStream</file>
         Shows how to open file streams and read files.<br/>
         <file title="Win32Tools">../../coretechnologies/Win32SystemProgramming/code/Win32Tools</file>
         Demonstrates reading files in blocks of bytes, consistent with SocketCommunicator
       </litem>
-->
       <litem>
         <file title="Midterm Makeup">../midterm/MTmakeupS09.doc</file>
       </litem>
      <litem>
        <file title="Template Metaprogramming">../code/TemplateMetaProgramming</file>
      </litem>
      <p/><html><b style="font-size:large"><i>Design Strategies</i></b></html>
<!--
      <litem>
        Chalk talk about design strategies
        <ulist>
          <litem>
            Language strategies: deep copy vs. shallow reference
          </litem>
          <litem>
            Basic C++ Strategies: encapsulate, substitute deriveds, parameterize, mixin
          </litem>
          <litem>
            Strategies for change: bind to abstraction through interfaces, object factories, and DLL packages
          </litem>
          <litem>
            Strategies for flexibility: provide plug-in architecture through pluggable factory and interfaces
          </litem>
          <litem>
            Other strategies for extension: veneer and bolt-in wrappers, functor-based template policies
          </litem>
          <litem>
            Strategies for notification: command pattern
          </litem>
          <litem>
            Strategies for sharing: member data, static members
          </litem>
          <litem>
            Performance strategies: object pooling, copy on write, when possible, pass and return references, 
            lazy evaluation, caching
          </litem>
          <litem>
            Robustness: use exceptions - catch as close to throw as practical, each class takes responsibility
            for resource allocation, deallocation, and error handling
          </litem>
        </ulist>
      </litem>
-->
      <litem>
        <file title="Smart Pointers">../code/SmartPtrRefcounting</file>
      </litem>
      <litem>
        <file title="Veneers and Boltins">../code/VeneersAndBoltins</file>
      </litem>
      <litem>
        <file title="Common C++ Problems">../presentations/CommonProblems.ppt</file>
      </litem>
      <litem>
        <file title="Fragile Designs">../presentations/FragileDesigns.ppt</file>
      </litem>
       <litem>
         <ifile title="Design Rules">../presentations/DesignRules.ppt</ifile><br/>
         Design rules and idioms that transcend Object Oriented Design.
       </litem>
    </olist>
  </section>  
  <p/><hr/>
  </visible>
</courses>
