<?xml version="1.0" encoding="utf-8" ?>
<!--
=====================================================================
  CSE775.xml - Home Page for Distributed Objects
  
  Jim Fawcett, CSE775 - Distributed Objects, Spring 2007
=====================================================================
-->
<?xml-stylesheet type="text/xsl" href="NewCourses.xslt" ?>
<root>
  <titlebar>CSE775</titlebar>
  <theme src="EarthBox.css" />
  <visible>
    <topbox>CSE775 - Distributed Objects</topbox>
    <revised />
    <cnav />
    <p/>
    <image src="./students/cse775s05.jpg" width="100%"/>

    <seperatorbox></seperatorbox>

    <content />
    <contentbox>
      <title>Course Scope:</title>
      Design and implement software components that use the Win32 API, Component Object Model (COM), and
      the .Net object model.  Students will develop projects requiring them to build and use
      components and controls.  At least one of these will be a distributed application.  We
      will also do a small amount of windows programming.
      <p/>
      Component technologies are a very important part of the software development process.
      COM is a major part of the Windows family of operating systems, and the .Net Common
      Run-Time is implemented as a COM component.  Many of our former students are currently
      working on COM-based implementations in the industry.  However, I expect the .Net
      component technology to eventually supercede COM.  Therefore this course will emphasize
      both and discuss interoperability between these two implementation paradigms.
      <p/>

      <title>Required Texts and Notes - all texts available at desk in SciTech Library:</title>
      <ol>
        <li>
          Windows System Programming, Third Edition, Johnson Hart, Addison Wesley, 2005
        </li>
        <li>
          ATL Internals, Second Edition, Working with ATL 8, Tavares, Fertitta, Rector, and Sells, Addison Wesley, 2007.
        </li>
        <li>
          The COM and COM+ Programming Primer (CACP), Alan Gordon, Prentice Hall, 2000
          ISBN 0-13-085032-2
        </li>
        <li>
          Class Notes, available on
          <ilink title="www.ecs.syr.edu/faculty/fawcett/handouts/CSE775">www.ecs.syr.edu/faculty/fawcett/handouts/cse775</ilink>
        </li>
        <li>
          Other Recommended References:
          <ul>
            <li>Windows Internals (WI), Fourth Edition, Russinovich and Solomon, Microsoft Press, 2005</li>
            <li>Programming Windows (PW), Fifth Edition, Charles Petzold, Microsoft Press, 1999, ISBN 1-57231-995-X</li>
            <li>
              Programming Microsoft .Net (PMDN), Jeff Prosise, Microsoft Press, 2002
              ISBN 0-7356-1376-1
            </li>
            <li>Understanding ActiveX and OLE, David Chappell, Microsoft Press, 1996</li>
            <li>Essential COM, Don Box, Addison Wesley, 1998</li>
          </ul>
        </li>
      </ol>
      <title>Other Useful References</title>
      <ol>
        <li>
          <ifile title="Strings the OLE Way">..\cse775\presentations\BruceMcKinneyPapers\COMstrings.htm</ifile>, 
          <ifile title="The Safe OLE Way of Handling Arrays">..\cse775\presentations\BruceMcKinneyPapers\SafeArrays.htm</ifile>, 
          <ifile title="The Ultimate Data Type">..\cse775\presentations\BruceMcKinneyPapers\variants.htm</ifile>, all by Bruce McKinney<br/> 
        </li>
      </ol>
      <title>Prerequisites</title>
      CSE687 - Object Oriented design is a co-requisite.  That is, you may take CSE687 while taking this course.   
      <p/>
    </contentbox>

    <tablebox>
      <title>Syllabus - Spring 2008:</title>
      <table>
        <tr>
          <th>Lecture</th>
          <th>Topics</th>
          <th>Read Before Class</th>
          <th>Project</th>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#1">Lectures\cse775codeL1.xml</file>
            Mon, Jan 14
          </td>
          <td>
            Syllabus, Projects, Exams, Why Components?<br/>Win32 programming, COM and .Net object models
          </td>
          <td>
            &#160;
          </td>
          <td>
            <file title="Pr1">Projects\Pr1S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#2">Lectures\cse775codeL2.xml</file>
            Wed, Jan 16
          </td>
          <td>
            Win32 Programming, files, directories, and their management, DLLs, Windows, Messages, and Controls
          </td>
          <td>
            skim PW chp 1, 2, read PW chp 3, 4
          </td>
          <td>
            <file title="Pr1">Projects\Pr1S08.doc</file>
          </td>
        </tr>
        <tr>
          <ed>Mon, Jan 15</ed>
          <ed>Martin Luther King Jr. Day, no classes</ed>
          <ed>&#160;</ed>
          <ed>&#160;</ed>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#3">Lectures\cse775codeL3.xml</file>
            Wed, Jan 23
          </td>
          <td>
            Windows, Messages, and Controls
          </td>
          <td>
            MSDN Links, class notes
          </td>
          <td>
            <file title="Pr1">Projects\Pr1S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#4">Lectures\cse775codeL4.xml</file>
            Mon, Jan 28
          </td>
          <td>
            Win32 Threads and Thread Synchronization
          </td>
          <td>
            class notes, MSDN - see links in<br/>
            <file title="Win32Programming - pg 9">../CoreTechnologies/Win32SystemProgramming/Presentations/Win32Programming.ppt</file>
          </td>
          <td>
            <file title="Pr1">Projects\Pr1S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#5">Lectures\cse775codeL5.xml</file>
            Wed, Jan 30
          </td>
          <td>
            in-process COM components, interfaces, dynamic linking, GUIDs, registry
          </td>
          <td>
            skim CACP chp 1-3, read CACP chp 4, class notes
          </td>
          <td>
            <file title="Pr1">Projects\Pr1S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#6">Lectures\cse775codeL6.xml</file>
            Mon, Feb 04
          </td>
          <td>
            Class Factory, Service Control Manager, Activation, IDL
          </td>
          <td>
            CACP chp 3-4, class notes
          </td>
          <td>
            <file title="Pr1">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#7">Lectures\cse775codeL7.xml</file>
            Wed, Feb 06
          </td>
          <td>
            IDL, COM Clients
          </td>
          <td>
            class notes, CACP chp 3-4
          </td>
          <td>
            <file title="Pr1">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#8">Lectures\cse775codeL8.xml</file>
            Mon, Feb 11
          </td>
          <td>
            COM Types: BSTRs, Variants, SafeArrays, Intro to Apartments
          </td>
          <td>
            class notes, CACP chp 7, 9
          </td>
          <td>
            <file title="Pr1">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#9">Lectures\cse775codeL9.xml</file>
            Wed, Feb 13
          </td>
          <td>
            Win32 Sockets
          </td>
          <td>
            class notes
          </td>
          <ed>
            <file title="Pr1 due">Projects\Pr1S08.doc</file>
          </ed>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#10">Lectures\cse775codeL10.xml</file>
            Mon, Feb 18
          </td>
          <td>
            out-of-process components, activation
          </td>
          <td>
            read CACP chp 6-7, class notes
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#11">Lectures\cse775codeL11.xml</file>
            Wed, Feb 20
          </td>
          <td>
            apartments and threading models, STAs and MTAs
          </td>
          <td>
            CACP chp 4-5, class notes
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#12">Lectures\cse775codeL12.xml</file>
            Mon, Feb 25
          </td>
          <td>
            Active Template Library (ATL) - structure, facilities, examples
          </td>
          <td>
            read CACP chp 5
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#13">Lectures\cse775codeL13.xml</file>
            Wed, Feb 27
          </td>
          <td>
            ATL, CComBSTR, CComQIPtr, more examples
          </td>
          <td>
            read CACP chp 5
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#14">Lectures\cse775codeL14.xml</file>
            Mon, Mar 03
          </td>
          <td>
            Midterm Review
          </td>
          <td>
            class notes
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#15">Lectures\cse775codeL15.xml</file>
            Wed, Mar 05
          </td>
          <ed>
            Midterm Examination
          </ed>
          <td>
            &#160;
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <ed>
            Mon, Mar 10
          </ed>
          <ed>
            Spring Break
          </ed>
          <ed>
            &#160;
          </ed>
          <ed>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </ed>
        </tr>
        <tr>
          <ed>
            Wed,&#160;Mar&#160;12
          </ed>
          <ed>
            Spring Break
          </ed>
          <ed>
            &#160;
          </ed>
          <ed>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </ed>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#16">Lectures\cse775codeL16.xml</file>
            Mon, Mar 17
          </td>
          <td>
            return and discuss Midterm Examinations
          </td>
          <td>
            &#160;
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#17">Lectures\cse775codeL17.xml</file>
            Wed, Mar 19
          </td>
          <td>
            Events, Connection Points, and Dispatch interfaces, ActiveX Controls
          </td>
          <td>
            read CACP chp 7-8, class notes
          </td>
          <td>
            <file title="Pr2">Projects\Pr2S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#18">Lectures\cse775codeL18.xml</file>
            Mon, Mar 24
          </td>
          <td>
            Managed C++, interoperation between COM, C++, and C#
          </td>
          <td>
            class notes, PMDN 7, 8
          </td>
          <ed>
            <file title="Pr2 due">Projects\Pr2S08.doc</file>
          </ed>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#19">Lectures\cse775codeL19.xml</file>
            Wed, Mar 26
          </td>
          <td>
            .Net Control Model
          </td>
          <td>
            class notes
          </td>
          <td>
            <file title="Pr3">Projects\Pr3S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#20">Lectures\cse775codeL20.xml</file>
            Mon, Mar 31
          </td>
          <td>
            Controls, user controls, components, controls hosts
          </td>
          <td>
            read PMDN 15
          </td>
          <td>
            <file title="Pr3">Projects\Pr3S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#21">Lectures\cse775codeL21.xml</file>
            Wed, Apr 02
          </td>
          <td>
            Windows Presentation Foundation basics
          </td>
          <td>
            class notes
          </td>
          <td>
            <file title="Pr3">Projects\Pr3S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#22">Lectures\cse775codeL22.xml</file>
            Mon, Apr 07
          </td>
          <td>
            Windows Presentation Foundation, Navigation, Graphics, Documents 
          </td>
          <td>
            Class notes
          </td>
          <td>
            <file title="Pr3">Projects\Pr3S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#23">Lectures\cse775codeL23.xml</file>
            Wed Apr 09
          </td>
          <td>
            Windows Communication Foundation, basics
          </td>
          <td>
            class notes
          </td>
          <td>
            <file title="Pr3">Projects\Pr3S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#24">Lectures\cse775codeL24.xml</file>
            Mon, Apr 14
          </td>
          <td>
            Windows Communication Foundation, Remoting, Web services, REST
          </td>
          <td>
            class notes
          </td>
          <ed>
            <file title="Pr3 due">Projects\Pr3S08.doc</file>
          </ed>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#25">Lectures\cse775codeL25.xml</file>
            Wed, Apr 16
          </td>
          <td>
            COM+
          </td>
          <td>
            read CACP chp 11, 12
          </td>
          <td>
            <file title="Pr4">Projects\Pr4S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#26">Lectures\cse775codeL26.xml</file>
            Mon, Apr 21
          </td>
          <td>
            DCOM remoting and monikers
          </td>
          <td>
            read CACP chp 10, 12
          </td>
          <td>
            <file title="Pr4">Projects\Pr4S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#27">Lectures\cse775codeL27.xml</file>
            Wed, Apr 23
          </td>
          <td>
            COM/.Net interop revisited
          </td>
          <td>
            class notes
          </td>
          <td>
            <file title="Pr4">Projects\Pr4S08.doc</file>
          </td>
        </tr>
        <tr>
          <td>
            <file title="Lecture&#160;#28">Lectures\cse775codeL28.xml</file>
            Mon, Apr 28
          </td>
          <td>
            Where do we go from here?
          </td>
          <td>
            &#160;
          </td>
          <ed>
            <file title="Pr4 due">Projects\Pr4S08.doc</file>
          </ed>
        </tr>
      </table>
    </tablebox>
  </visible>
</root>
