<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xsl" href="courses.xsl" ?>
<courses name="Fawcett">

  <btitle>Courses</btitle>
  <theme src="HomeTheme.css" />

  <visible>  
  <title>Software Design Courses</title>
  <revised>19 August 2010</revised>

  <hnav/>
  <cnav/>
  <hilight>
    <html><img src="students\studentstrip4.jpg" width="100%" /></html>
  </hilight>

  <quote source="Ursula Le Guin">
    It is good to have an end to journey towards;<br/>but it is the journey that matters in the end. 
  </quote>
<!-- All programmer's are playwrights and all computers are lousy actors. Anonymous -->
  
  <html><a name="contents"/></html>
  <section title="Courses:">
  I teach a sequence of seven courses, all associated with some aspect of 
  software design. They are taught on a regular schedule, once each year.
  The sequence provides a thorough preparation for students intending to work in 
  industry as software developers and software architects. Most of these courses can be
  counted toward a <ifile title="Software Track">SoftwareTrack.xml</ifile>.
  </section>

  <section title="Course Descriptions:">
    These courses focus on both the strategy level of software architecture and design as well as the tactical level.
    Strategy is concerned with top-level structure, class relationships, data relationships, often represented
    using Universal Modeling Language (UML) diagrams.  Design tactics are concerned with specific design principles and
    packaging techniques to support reusability and robustness of an implementation.
    <olist>
      <litem>
        <ifile title="CSE681">CSE681.xml</ifile> - Software Modeling and Analysis (CSE Core Course for SW Track)
        <ind>
          Software Architecture, strategy level design supported by UML modeling, threads, queues, distributed systems<br/>
          Midterm, three reports, two software projects.
        </ind>
      </litem>
      <litem>
        <ifile title="CSE686">CSE686.xml</ifile> - Internet Programming
        <ind>
          Client and Server side programming models, HTML, XSL, CSS, ASP, ADO<br/>
          In-class labs, one large final project to build a web site and web service.
        </ind>
      </litem>
      <litem>
        <ifile title="CSE687">CSE687.xml</ifile> - Object Oriented Design (CSE Core Course for SW and HW Tracks)
        <ind>
          C++ language, standard library, tactical level design and design principles<br/>
          Midterm, four challenging software projects.
        </ind>
      </litem>
      <litem>
        <ifile title="CSE775">CSE775.xml</ifile> - Distributed Objects Processing
        <ind>
          Win32 Systems programming, Component Object Technology, COM, ActiveX, .Net Controls<br/>
          Midterm, four software projects.
        </ind>
      </litem>
      <litem>
        <ifile title="CSE776">CSE776.xml</ifile> - Design Patterns
        <ind>
          Sophisticated, reflective view of Object Oriented Design at both the strategy and tactical levels,<br/>
          In-class presentations, small amount of software development.
        </ind>
      </litem>
      <litem>
        <ifile title="CSE778">CSE778.xml</ifile> - Advanced Windows Programming
        <ind>This course is not being scheduled at this time.  If it is scheduled, in the future, it will focus on Windows Presentation Foundation.</ind>
        <ind>
          Graphical User Interface Design using MFC and .Net WinForms<br/>
          Select 4 out of 10 projects to complete and present at the end of the course.
        </ind>
      </litem>
      <litem>
        <ifile title="CSE784">CSE784.xml</ifile> - Software Engineering Studio
        <ind>
          Learn to make critical evaluation of software products, e.g., specification, design, implementation, and test.<br/>
          Takehome Midterm - deep evaluation of one of your products.<br/>
          Case Study - class is partitioned into teams that specify, develop, and test a large distributed system.
        </ind>
      </litem>
    </olist>
  </section>
  
  All of the courses, with the exception of 
  <ifile title="CSE776 - Design Patterns">CSE776.xml</ifile>, are project-based courses.  Projects are
  modeled after industrial and commercial work, requiring careful design, robust implementation, and 
  documentation of the source code you generate.
  <p/>
  The 
  <ifile title="CSE784 - Software Engineering Studio">CSE784.xml</ifile> course is unique in that the class is 
  divided into several teams that specify, design, implement, and test a large distributed  
  project that potentially has commercial value.  Students are given the roles of Program Manager,
  Software Architect, Test Manager, Team Leader, and Team Member.
  <links>
    You will find a brief view of our recent class project in Software 
    Studio by clicking on any of these links:<br/> 
    <ifile title="Virtual Repository Testbed System - 2008">VRTS.xml</ifile>,&#32;
    <ifile title="Collaboration Server - 2007">CServ.xml</ifile>,&#32;
    <ifile title="Remote Software Assistant - 2006">RSA/RSA2006.html</ifile>,&#32;
    <ifile title="Repository Testbed - 2005">RepoTB.xml</ifile>,&#32;
    <ifile title="ProjectCenter - 2004">ProjectCenter.xml</ifile>,&#32;
    <ifile title="Cloner - 2003">Cloner.xml</ifile>,&#32;
    <ifile title="Software Foundry - 2002">Foundry.xml</ifile>&#32;
  </links>

  <section title="Course Sequence:">
    I recommend that full time students in Computer Engineering - Software Track - take these courses in the 
    following order:
    <olist>
      <llitem label="Fall:">
        CSE681 - Software Modeling and Analysis (Core Course SW Track)<br/>
        CSE661 - Advanced Computer Architecture (Core Course)<br/>
        CIS554 - Object Oriented Programming with C++
      </llitem>
      <llitem label="Spring:">
        CSE687 - Object Oriented Design (Core Course SW and HW Tracks)<br/>
        Elective course<br/>
        CSE686 - Internet Programming
      </llitem>
      <llitem label="Fall:">
        CIS675 - Algorithms (Core Course)<br/>
        CSE776 - Design Patterns (Prerequisite: CSE687)<br/>
        CSE784 - Software Studio (Prerequisite: CSE681)
      </llitem>
      <llitem label="Spring:">
        CSE775 - Distributed Objects (Prerequisites: CSE681 and CSE687)<br/>
        Master's Project
      </llitem>
    </olist>
  </section>
    
  <section title="Seminars:">
    <olist>
      <litem>
        <file title="Brown Bag Seminar">BrownBagSeminar.xml</file>
        This is an informal seminar (no cost, no credit) which, when offered, starts near the beginning of the Fall Semester.
        In it, participants make presentations 
        on a variety of topics.  The idea is the we will talk about things we are currently working on or are
        interested in enough to devote considerable effort to make a good presentation.  Here are some previous
        Seminar presentations:<br/>
        <link title="2004 - Debugging and Testing">www.ecs.syr.edu/faculty/fawcett/handouts/Seminar_BrownBag04/</link>
        <link title="2005 - Ruby and Ruby on Rails">www.ecs.syr.edu/faculty/fawcett/handouts/Seminar_BrownBag05/</link>
        <link title="2006 - Windows Internals">www.ecs.syr.edu/faculty/fawcett/handouts/Seminar_BrownBag06/</link>
        <link title="2007 - Windows Presentation Foundation">www.ecs.syr.edu/faculty/fawcett/handouts/Seminar_BrownBag07/</link>
        <link title="2008 - inactive">www.ecs.syr.edu/faculty/fawcett/handouts/Seminar_BrownBag08/</link>
        <link title="2009 - inactive">www.ecs.syr.edu/faculty/fawcett/handouts/Seminar_BrownBag09/</link>
      </litem>
    </olist>
  </section>
  
  <section title="Course Handouts:"/>  
  I've set up a collection of directories on the college server to provide access for 
  current and former students to selected notes, references, and code.  Be warned 
  that the code is discussed in class and much of it will have meaning, only to 
  that class. However, feel free to browse, and download anything you wish: 
  <link title="Handouts">www.ecs.syr.edu/faculty/fawcett/handouts</link>
  <p/>
  You should also note that much of the code consists of brief prototypes, intended to 
  get a class started on one of our assigned projects. The prototypes are just 
  that, not finished pieces of work. There are, however, quite a few finished 
  modules, and if you find them useful, then feel free to use them as you wish - 
  for education, or for commercial gain. You will notice that I occasionally put 
  copyright notices on my code, but immediately grant you all rights except the 
  right to publish.
  <p/>
  <hilight/>
<!-- <html><img src="students\studentstrip4.jpg" width="100%" /></html> -->
  </visible>  
</courses>
