﻿<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xsl" href="../../webpages/courses.xsl" ?>
<!--
/////////////////////////////////////////////////////////////////////////////
//  CSE687codeL7.xml - provides links Lecture #7 materials                 //
//                     on the ECS college server                           //
//                                                                         //
//  Jim Fawcett, CST 2-187, Syracuse University, jfawcett@twcny.rr.com     //
/////////////////////////////////////////////////////////////////////////////
-->

<courses name="Fawcett">

  <btitle>CSE687 Lecture #7</btitle>
  <theme src="../../webpages/CodeTheme.css" />

  <visible>
  <title>CSE687 - Object Oriented Design</title>
  <subtitle>Lecture #7 - Template Policies and Traits</subtitle>
  <revised>10 February 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;
  </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="../../webpages/cse687.xml#Syllabus">Syllabus</a>
    </html>&#32;
    <ifile title="SG - OOD">StudyGuideOOD.xml</ifile>&#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>,
  </section>
  
  <isection title="Office Hours:">
    <ifile title="Instructor &amp; TAs">../../webpages/officeHours.xml</ifile>
  </isection>
  
  <section title="Content:">
  This lecture covers template template policies and template traits.  We will continue discussing the HashTable example.
    <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>
        <ifile title="Project #1">../projects/pr1s10.doc</ifile>
<!--
         <ulist>
           <litem>
             <file title="Detecting Declarations">../code/parser/DetectingDeclarations.doc</file>
           </litem>
         </ulist>
-->
      </litem>
      <litem>
        <ifile title="Project #2">../projects/pr2s10.doc</ifile>, 
        <ifile title="GraphHelp">../code/graphhelp</ifile><br/> 
        Graphs with Depth-First-Search and Strong Component Algorithm.
        <ulist>
          <litem>
            Here is a link that has a nice description of the original Tarjan algorithm for finding strong components, my favorite:
            <ilink title="DFS and Strong Components">www.cs.cmu.edu/afs/cs/academic/class/15451-s06/www/lectures/DFS-strong-components.pdf</ilink>.
          </litem>
          <litem>
            <file title="XML Presentation">../presentations/xml.ppt</file>
          </litem>
        </ulist>
      </litem>
      <llitem label="So what is this XML?">
        <tblock>
          <ifile title="XML Presentation">../presentations/xml.ppt</ifile>, 
          <ifile title="LectureNote.xml">../presentations/lectureNote.xml</ifile>, 
          <ifile title="XML Parse Tree">../presentations/XmlParseTree.vsd</ifile>, 
        </tblock>
      </llitem>
      <litem>
        Policy for due date extensions - only for certified illness and work or interview trips out of town: one week extension, with proof.
        Only one extension per project.
      </litem>
<!--
      <litem>
        <ifile title="Design Note #1 - Prime Directives">dn1-PrimeDirectives.xml</ifile>
      </litem>
      <litem>
        <ifile title="Design Note - Encapsulation Principle">cse687dnL3.xml</ifile>
      </litem>
-->
       <litem>
        <ifile title="Templates Presentation">../presentations/templates.ppt</ifile><br/>
        Templates are one of the terrific features of the C++ language.  They are the basis of the Standard
        Template Library (STL) and are useful in day-to-day programming.
       </litem>
       <litem>
         <file title="small template examples">../code/templates</file>
       </litem>
       <litem>
         <file title="STL Template-based Container Examples">../code/stl</file>
         Illustrates use of vectors, lists, sets, and maps.
       </litem>
       <llitem label="Hashtables">
        <tblock>
        <file title="HashTable Project">../code/HashTable</file>
        HashTables are fundamental and very useful data structures.  At this time there are no hash-based containers
        in the STL.  So here is my implementation - it's a good example of the use of templates.
        <p/>
         <file title="Design of Containers with Iterators">../presentations/DesignOfIterators.ppt</file>
         Look at HashTable&lt;key,value,Hash&gt; and HashIterator&lt;key,value,Hash&gt; classes.  Draw some fairly general
         conclusions.
         <p/>
         <file title="Template Policies and Traits">../presentations/TemplatePoliciesAndTraits.ppt</file>
         Discusses policies and traits in the context of our HashTable project.
         </tblock>
       </llitem>
       <llitem label="More template examples">
         <tblock>
         <file title="Template Techniques">../code/TemplateTechniques</file>
         Template members, template template parameters, partial template specialization and more...
         <p/>
         <file title="Functor examples">../code/functors</file>
         Functors are classes that define operator() - their syntax is similar to functions, but they are more powerful.
         The STL uses functors to support many of the algorithms defined on containers.
         <p/>
         <file title="Smart Pointers with Reference Counting">../code/smartptrrefcounting</file>
         Smart pointers are useful tools, especially for holding onto heap resources indexted through an STL container.
         They are also a great illustration of many of the Template Techniques we've discussed in this course.
         <p/>
         <file title="Template MetaProgramming">../code/TemplateMetaprogramming</file>
         We will peek into this demo code for one or two small examples, leaving the rest for later in the semester.
         </tblock>
       </llitem>
       <llitem label="Software design presentations">
         <tblock>
         <file title="Software Design Goals">../presentations/SoftwareDesign.ppt</file>
         Design Goals and Attributes - used to measure designs.
         <p/>
         <file title="Design Strategies">../presentations/DesignStrategies.ppt</file>
         Discusses styles of design and binding.
         <p/>
         <file title="Design Guidelines">../presentations/DesignRules.ppt</file>
         Small principles and useful techniques
         <p/>
         <file title="Design Issues">../presentations/commonProblems.ppt</file>
         Practical issues and problems of design and implementation
         </tblock>
       </llitem>
       <litem>
         <ifile title="Namespaces">../presentations/namespaces.ppt</ifile><br/>
         Basic information about how namespaces work.  We will discuss why you want to use them.
       </litem>
    </olist>
  </section>
  <p/><hr/><p/>  
  </visible>
</courses>
