<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xsl" href="courses.xsl" ?>
<courses name="Fawcett">

  <btitle>Master's Projects</btitle>
  <theme src="ResearchTheme.css" />

  <visible>
  <title>Master's Projects</title>
  <revised>11 July 2004</revised>
  
  <hnav/>
<!--
  <hilight>
    <ifile title="Home">FawcettHome.xml</ifile>&#32;
    <ifile title="Courses">Courses.xml</ifile>&#32;
    <ifile title="Code">Code.xml</ifile>&#32;
    <ilink title="Handouts">www.ecs.syr.edu/faculty/fawcett/handouts</ilink>&#32;
    <ifile title="CoreTech">CoreTechnologies.xml</ifile>&#32;
    <ifile title="Books">Books.xml</ifile>&#32;
    <ifile title="Articles">Articles.xml</ifile>&#32;
    <ifile title="Math">Mathematics.xml</ifile>&#32;
    <ifile title="Research">research.xml</ifile>&#32;
    <ifile title="Masters Projects">MastersProjects.xml</ifile>&#32;
    <ifile title="SWDev">swdev.xml</ifile>&#32;
    <ifile title="WebDev">webdev.xml</ifile>&#32;
    <ifile title="News">news.xml</ifile>&#32;
    <ifile title="OtherLinks">OtherLinks.xml</ifile>&#32;
    <ifile title="SiteDesign">SiteDesign.xml</ifile>&#32;
    <ifile title="Graduates">graduates.xml</ifile>&#32;
    <ifile title="AllPages">AllPages.xml</ifile>&#32;
    <ifile title="Office Hours">OfficeHours.xml</ifile>&#32;
    <notice title="Notices">notices.xml</notice>&#32;
    <html><a href="#contents">Contents</a></html>&#32;
  </hilight>
-->
  <cnav/>
<!--
  <hilight>
    <ifile title="CSE681-SWMAA">CSE681.xml</ifile>&#32;
    <ifile title="CSE686-IP">CSE686.xml</ifile>&#32;
    <ifile title="CSE687-OOD">CSE687.xml</ifile>&#32;
    <ifile title="CSE775-DO">CSE775.xml</ifile>&#32;
    <ifile title="CSE776-DP">CSE776.xml</ifile>&#32;
    <ifile title="CSE778-AWP">CSE778.xml</ifile>&#32;
    <ifile title="CSE784-SWS">CSE784.xml</ifile>
  </hilight>
-->

  <image src="fawcett.jpg" size="200" />
  <caption></caption>

  <quote source="Charles Wadsworth">
    By the time a man realizes that maybe his father was right, 
    he usually has a son who thinks he's wrong.
  </quote>

  <html><a name="contents"/></html>
  <section title="Distinction between a Master's Project and Thesis">
    The scope of a Master's Project is approximately equivalent to a software design course project, e.g., CSE687, <u>plus</u>
    a report.  The report is like a C-Specification, but a little less formal.  So, you should expect to spend 20
    to 30 hours on an implementation and another 10 to 20 hours on a report.  You have satisfied this requirement when
    your faculty advisor and Program Director approve the project.  Note that there are other
    forms of Master's Projects, discussed below in items 2 and 3.
    <p/>
    A <ifile title="Master's Theses">MastersTheses.xml</ifile> is much more work.  You should expect to spend six months of half time work conducting
    a research project and documenting your results.
  </section>
  <section title="Project Topics">
  The Department of Electrical Engineering and Computer Science has three programs: Computer Engineering,
  Computer Science, and Electrical Engineering.
  Of these, the two Engineering programs require completion of a Master's Project as a final
  step in your academic experience.  For students who perpare a Master's Project under my direction,
  these projects may take any of the forms:
  <olist>
    <litem>Software project on some interesting topic, submitted with a comprehensive report.</litem>
    <litem>
      Survey paper on a significant technology that you may not have addressed in your program, but is
      something you want to learn about.
    </litem>
    <litem>
      White paper that explores some technical area in detail.
    </litem>
  </olist> 
  The primary difference between the survey and whitepaper options is a matter of breadth versus depth.
  </section>
  
  <section title="Requirements">
  I have two main requirements for this work:
  <olist>
    <litem>
      You should explore some area that is new enough to you that you learn something significant.
      Pick a topic that interests you.
    </litem>
    <litem>
      The project should involve about as much work as any of the class projects you do in my courses
      and must also be documented by a report that, for software projects, is structured much like a 
      software Design Document.
    </litem>
  </olist>
  I prefer students to select their own topics, rather that have me assign one.  I have too many students
  concurrently working on projects to give each one a unique topic.  By this point in your program you 
  should be able to easily identify an interesting topic.
  </section>

  <section title="Things to Think About - Starter Topics">
    While I want you to come up with your own topics, here are a few starters to think about:
    <olist>
      <litem>
        <ilink title="Microsoft Research">www.research.microsoft.com</ilink> has lots of 
        <ilink title="topics">www.research.microsoft.com/research/topics</ilink>,&#160;
        <ilink title="projects">www.research.microsoft.com/research/projects</ilink>,&#160; and 
        <ilink title="demonstrations">www.research.microsoft.com/research/downloads</ilink> that may give you ideas.
      </litem>
      <litem>
        <ilink title="Lucent/Bell Labs Research in Computing">cm.bell-labs.com/cm/cs/</ilink>&#160;
      </litem>
      <litem>
        Object-Oriented Relationship code analyzer - for each class, evaluate its static relationships with others, e.g., public inheritance, 
        inheritance of implementation, composition, aggregation, and using relationships.  Also evaluate its dynamic relationships,
        e.g., for each class, evaluate the types of objects it creates, communicates with, and destroys. 
      </litem>
      <litem>
        Class diagram plotter - using the results of the previous project (you could team up with a friend to work together on
        these two projects) draw UML class diagrams from code.  You will want to allow the user to assist the layout on a page
        but you should provide an algorithm for making a first pass at a layout and then allow the user to pull drawing objects
        around the page without losing their connections.
      </litem>
      <litem>
        In CSE687 Project #4 - Dependency Analyzer we did a lot of hueristic grammar evaluation.
        It would be interesting to use a more formal approach based on specifying the (simplified)
        grammar needed for type-based dependency analysis using syntax graphs or BNF productions
        to specify the grammar and reduce them to analysis code by implementing productions, and 
        perhaps, recursive decent parsing.
      </litem>
      <litem>
        Software visualization - can you think of interesting ways to display properties of a given set of software files, e.g., size, complexity,
        density of comments, depth of calling tree, ...
      </litem>
      <litem>
        Text to Speech - Microsoft has available for download its beta Speech SDK, and the World Wide Web Consortium has
        tutorials and specifications for VXML.  You could explore making web pages vocal.
      </litem>
      <litem>
        DirectX - Microsoft has a COM-based technology for displaying complex graphics and synchronizing graphics and sound
        over time, widely used by the computer gaming industry.  The latest beta version has wrappers for .Net.  
        It would be interesting to learn, explore, and document some applications of this technology.
      </litem>
      <litem>
        Vector Markup Language - Internet Explorer supports Vector Markup Language (VML) for making line drawings on web
        pages.  This could be very useful for preparing technical drawings to be placed on web pages.  You could explore the
        use of vml for some specific application.
      </litem>
      <litem>
        Compatible colors - A <ilink title="color wheel">www.fortressdesign.com/color.html</ilink> allows a designer to pick compatible, contrasting, warm, cool, and 
        harmonious colors.  One interesting project provides the user with a line of colors to select from and returns
        contrasting and triadic harmonious colors, showing the colors and RGB values.
      </litem>
    </olist>
  </section>

  <section title="Projects not used to satisfy the MS Project Requirement">
    I often have students ask for additional projects to work on over the Summer or during Semesters when they don't have a strenuous schedule.  Here are a few suggestions:
    <olist>
      <litem>
        <file title="MFC tutorial">projects/MFCTutorialOutline.doc</file> Using the excellent textbook "Programming Windows with MFC", Jeff Prosise, Microsoft Press, 2001,
        (on reserved in the Sci/Tech library), 
        prepare a set of tutorial presentations.  I can make them available on this website and you will learn a lot about how MFC is used to build Windows programs.
      </litem>
      <litem>
        <u>Action Item (Bug Tracking) list</u><br/>
        Use a datagrid on a webpage and an SQL database to make action items or bug lists available on the web.  Make an editing application, using a web service,
        to add, edit, or delete entries (this could also be done as part off the Asp application).
      </litem>
      <litem>
        <u>Small Business Data Management System</u><br/>
        Create a relational model for a hypothetical small business that provides:<p/>
        <olist>
          <litem>
            Phone logs for each employee to record notes about business related phone calls.
          </litem>
          <litem>
            Calendar with event notification, so an employee can define a notification to be sent back or to another employee at some future date, as a small text message.
          </litem>
          <litem>
            Order entry and tracking, based on an orders table, a product table, and a customer table.
          </litem>
        </olist>
        Note that this data management system could be made available as a Winform application talking to an SQL server on a remote machine in the network, as an ASP
        application, or as a web service.
        <p/>
        It would be nice to build the application as a Winform with several tabs that provide common queries and support data entry based on a DataGrid view.
      </litem>
    </olist>
  </section>

  <section title="Remediation for Data Structures and Algorithms">
    <note>
      This year I have had a huge number of requests to supervise MS Projects that will, in part, be used to
      waive a requirement for remediation of CSE382.  Due to the large volume of requests I am no longer able
      to do this and will accept no more requests of this kind.
      <p/>
      Note that, as always, I am pleased to supervise your MS Projects.  I just will not supervise remediation
      of CSE382 requirements.  Note that you can either take the course, as indicated in your acceptance letter,
      or you can take the exemption examination which is given every year.
      <p/>
      I've left the instructions for remediation on this page for the students with whom I have already agreed
      to supervise remediation.  But I will not accept any more, this semester, or later.
    </note>
    <p/>
    Students who have been levied a remedial program requirement to take CSE382 - Data Structures and Algorithms
    may satisfy this requirement by preparing a Master's Project that demonstrates the requisite knowledge.  Here are
    the steps necessary to complete this process:
    <ulist>
      <litem>
        See me regarding your interest in acquiring the required background via a Master's Project.  I will discuss the
        project with you and, should you wish to proceed, I will notify Dr. Hartmann and Barbara Hazard that you 
        are working on the project under my supervision and that I will not approve your report until you demonstrate
        the required knowledge.
      </litem>
      <litem>
        You purchase or borrow the text used in CSE382, e.g., Algorithms, parts 1-4, Sedgewick, Addison-Wesley.  Bring
        the text to my office and I will assign material for you to skim and material to read thoroughly.
      </litem>
      <litem>
        Complete an implementation, in either C++ or C#, the following:
        <olist>
          HashTable that supports either Standard C++ iterators or a .Net IEnumerable interface.
        </olist>
        <olist>
          External Sort - use the Merge Sort algorithm
        </olist>
        <olist>
          A Symbol Table based on a Balanced Binary Tree - red/black algorithm recommended.
        </olist>
      </litem>
      <litem>
        You are required to measure the performance of your implementations and compare the results you achieve
        with results predicted by a complexity analysis, as described in Sedgewick, Chapter 2 and analysis in each of the
        chapters related to the topics above.  Specifically, you plot the ratio of time to carry out the computation with
        10, 100, 1000, and 10,000 items and compare with the theoretical asymptotic ratios.
      </litem>
      <litem>
        Meet with me to present your results.  I will question you about your analysis to ensure that you have the
        required knowledge to satisfy the remedial requirement.  <note>Please note that I will not recommend waiving
        the CSE382 requirement without this presentation.</note>
      </litem>
      <litem>
        When I am satisfied that your report describes work you completed and demostrates the requiste knowledge
        then I will approve it and turn it in to the department.  that will complete the process.
      </litem>
    </ulist>
    </section>

  </visible>
</courses>
