﻿<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xsl" href="courses.xsl" ?>
<courses name="CSE382">
 
  <btitle>CSE382</btitle>
  <theme src="CoursesTheme.css" />
  
  <visible>  
  <title>CSE382 - Algorithms and Data Structures</title>
  <revised>07 December 2008</revised>
  
  <hnav/>
  <cnav/>

  <section title="Makeup Exam">
  <olist>
    <litem>
      Here is a link to the <ifile title="Makeup Examination">../cse382/OralExam/MakeUpExam.doc</ifile>.  You only need to do this
      if I suggested to you to do so at the end of your oral examination.  Please upload your answers to the college server no later than 11:59pm December 24th, 2008.
      You are required to include a few diagrams.  If you draw them by hand, then please scan our exam and upload the resulting file.  Alternately
      you may use Visio to provide diagrams embedded in the Word file you use to submit your answers.
    </litem>
  </olist>
  </section>
   
  <html><a name="contents"/></html>
  <isection title="Resources:">
    &#32;<ifile title="Lectures">../CSE382/Lectures/cse382codeL1.xml</ifile>&#32;
    <ifile title="Code">../CSE382/code</ifile>&#32;
    <html><a href="#Syllabus">Syllabus</a></html>&#32;
    <ifile title="projects">../cse382/projects</ifile>&#32;
    <ifile title="File Download ScreenShot">fileDownloads.doc</ifile>&#32;
    <ifile title="Project Upload Instructions">../uploads.doc</ifile><br/>
  </isection>
  
  <section title="Course Scope:">
  This course is concerned with modeling and building common data structures and describing, analyzing, and building 
  algorithms that use these data structures.
  To do this we introduce:
  <ulist>
    <litem>
      Common datastructures: lists, queues, trees, graphs, and associative containers for representing
      sets, maps, and dictionaries.  The associative containers will be based on trees and hashtables.
    </litem>
    <litem>
      Algorithms that use these structures: sorting and searching, finding strong components, and some 
      simple optimization processes.
    </litem>
    <litem>
      Three projects and eight labs that require students to implement these data structures and algorithms in both C++ and C#.
    </litem>
  </ulist>
  The use of C++, the standard C++ library, C#, and the .Net Framework Class Libraries are required.  
  Fairly simple parts of these facilities will be needed for each of the labs and projects, and will be discussed
  in class.  The Teaching Assistant will hold survival help sessions and office hours in the computer.
  </section>
 
  <section title="Required Texts, Notes, and Projects:"/>
  <olist>
    <litem>
      Algorithms in C++, Third Edition, Robert Sedgewick, Addison-Wesley, 1998, ISBN 0-201-35088-2
    </litem>
    <litem>
      Class Notes, available on 
      <ilink title="www.ecs.syr.edu/faculty/fawcett/handouts/cse382">www.ecs.syr.edu/faculty/fawcett/handouts/cse382</ilink>
    </litem>
    <litem>
      <ifile title="Project Statements">../CSE382/projects</ifile>
    </litem>
    <litem>
      Lab statements will be handed out in each class and the labs completed before the end of the class.
    </litem>
  </olist>
  <section title="Supplementary Text and links"/>
  <olist>
    <litem>
      C++ Primer Plus, Fifth Edition, Stephen Prata, SAMS, 2005, ISBN 0-672-32697-3
    </litem>
    <litem>
      <ilink title="C# Tutorial - C# Station">www.csharp-station.com/Tutorial.aspx</ilink>&#32;<br/>
      <ilink title="C# Tutorial - Univ Linz">www.ssw.uni-linz.ac.at/Teaching/Lectures/CSharp/Tutorial/</ilink>&#32;<br/>
      <ilink title="C# Tutorial - functionx">www.functionx.com/csharp/index.htm</ilink>&#32;<br/>
      <ilink title="C++ Tutorial - cplusplus">www.cplusplus.com/doc/tutorial/</ilink>&#32;<br/>
      <ilink title="C++ Tutorial - cprogramming">http://www.cprogramming.com/tutorial.html</ilink>&#32;<br/>
      <ilink title="C++ Tutorial - java2s">http://www.java2s.com/Tutorial/Cpp/CatalogCpp.htm</ilink>&#32;
    </litem>
  </olist>
 
  <section title="Prerequisites:"/>
  <block>
    Students are expected to have a good working knowledge of the C Programming Language.
    No prior knowledge of C# or C++ is required.
  </block>
  
  <section title="Syllabus - Fall 2008:"/>
  <html><a name="Syllabus"/></html>
  <syllabus>
    <syllHeading>
      <sd>Lecture</sd>
      <hd>Topics</hd>
      <hd>Read before class</hd>
      <hd>Project</hd>
    </syllHeading>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#1">../CSE382/Lectures/cse382codeL1.xml</ifile>
        <br/>Fri, Aug 29
      </ld>
      <ld>Introduction, C++, C#, proofs, recursion, complexity, arrays, C++ pointers, C# references, 
      <ilink title="Handouts">www.ecs.syr.edu/faculty/fawcett/handouts/cse382</ilink></ld>
      <ld><ifile title="Class Notes">../CSE382</ifile>,<br/><ifile title="Class code">../CSE382/code</ifile>,<br/>Class Text Chap 2</ld>
      <cd><ifile title="Projects">../cse382/projects/</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#2">../CSE382/Lectures/cse382codeL2.xml</ifile>
        <br/>Mon 9/1,<br/>Wed 9/3
      </ld>
      <ld>No class on Monday due to Labor Day holiday,<br/>C++, C# Libraries, Project structure</ld>
      <ld>Class Notes</ld>
      <cd><ifile title="Pr1">../cse382/projects/Pr1F08.doc</ifile></cd>
    </lecture>    
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#3">../CSE382/Lectures/cse382codeL3.xml</ifile>
      <br/>Mon 9/8,<br/>Wed 9/10</ld>
      <ld>Abstract Data Types: lists, queues, stacks, trees, graphs</ld>
      <ld>Class Text Chap 3<br/>Class Notes<br/>prototype code</ld>
      <cd><ifile title="Pr1">../cse382/projects/Pr1F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#4">../CSE382/Lectures/cse382codeL4.xml</ifile>
      <br/>Mon 9/15,<br/>Wed 9/17</ld>
      <ld>Implementing Abstract Data Types</ld>
      <ld>Class Text Chap 3<br/>Class Notes<br/>prototype code</ld>
      <cd><ifile title="Pr1">../cse382/projects/Pr1F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#5">../CSE382/Lectures/cse382codeL5.xml</ifile>
      <br/>Mon 9/22,<br/>Wed 9/24</ld>
      <ld>Binary Trees, 234 Trees</ld>
      <ld>Class Notes,<br/>Text chap 13<br/>prototype code</ld>
      <cd><ifile title="Pr1">../cse382/projects/pr1F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#5">../CSE382/Lectures/cse382codeL5.xml</ifile>
      <br/>Mon 9/29,<br/>Wed 10/1</ld>
      <ld>Balanced Trees: Red-Black</ld>
      <ld>Class Notes,<br/>Text chap 13<br/>prototype code</ld>
      <cd><ifile title="Pr1">../cse382/projects/pr1F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#6">../CSE382/Lectures/cse382codeL6.xml</ifile>
      <br/>Mon 10/6,<br/>Wed 10/8</ld>
      <ld>Sorting and Searching<br/>Priority Heaps</ld>
      <ld>Text chaps 6 &amp; 7<br/>Class Notes<br/>prototype code</ld>
      <ed><ifile title="Pr1 due">../cse382/projects/pr1F08.doc</ifile></ed>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#7">../CSE382/Lectures/cse382codeL7.xml</ifile>
      <br/>Mon 10/13,<br/>Wed 10/15</ld>
      <ld>C++ Standard Template Library, C# Collection Namespaces</ld>
      <ld>Class Notes<br/>prototype code</ld>
      <cd><ifile title="Pr2">../cse382/projects/pr2F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#8">../CSE382/Lectures/cse382codeL8.xml</ifile>
      <br/>Mon 10/20,<br/>Wed 10/22</ld>
      <ld>Hashtables<br/>Associative Containers: Sets and Maps</ld>
      <ld>Class Notes<br/>prototype code</ld>
      <cd><ifile title="Pr2">../cse382/projects/pr2F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#9">../CSE382/Lectures/cse382codeL9.xml</ifile>
        <br/>Mon 10/27,<br/>Wed 10/29
      </ld>
      <ld>Graph Algorithms<br/>Priority Heaps</ld>
      <ld>Class notes,<br/>Text Chap 14</ld>
      <cd><ifile title="Pr2">../cse382/projects/pr2F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#10">../CSE382/Lectures/cse382codeL10.xml</ifile>
      <br/>Mon 11/3,<br/>Wed 11/5</ld>
      <ld>Math structures: Linear Vector Spaces, Linear Algebra, vectors, matrices</ld>
      <ld>Class notes</ld>
      <ed><ifile title="Pr2 due">../cse382/projects/pr2F08.doc</ifile></ed>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#11">../CSE382/Lectures/cse382codeL11.xml</ifile>
      <br/>Mon 11/10,<br/>Wed 11/12</ld>
      <ld>Optimization: Dynamic Programming, Steepest Descent, Newton-Raphson, Conjugate-gradient</ld>
      <ld>class notes</ld>
      <cd><ifile title="Pr3">../cse382/projects/pr3F08.doc</ifile></cd>
    </lecture>
    <lecture>
      <ld>
        <ifile title="Lecture&#32;#12">../CSE382/Lectures/cse382codeL12.xml</ifile>
      <br/>Mon 11/17,<br/>Wed 11/19</ld>
      <ld>Hard Problems</ld>
      <ld>Class notes, papers</ld>
      <cd><ifile title="Pr3">../cse382/projects/pr3F08.doc</ifile></cd>
    </lecture>
    <emlecture>
      <ld>Mon 11/24,<br/>Wed 11/26</ld>
      <ld>Preparation for Oral Examinations<br/>Thanksgiving Holidays - no class</ld>
      <cd>&#32;</cd>
      <cd><ifile title="Pr3">../cse382/projects/pr3F08.doc</ifile></cd>
    </emlecture>
    <emlecture>
      <ld>
        <ifile title="Lecture&#32;#14">../CSE382/Lectures/cse382codeL14.xml</ifile>
      <br/>Mon 12/1,<br/>Wed 12/3</ld>
      <ld>Individual Oral Examinations</ld>
      <cd>All notes, class text, projects</cd>
      <ed><ifile title="Pr3 due">../cse382/projects/pr3F08.doc</ifile></ed>
    </emlecture>
  </syllabus>
  Class meets twice per week for an hour and a half.
  </visible>
</courses>
