CSE373 Autumn 2007
CSE logo University of Washington Computer Science & Engineering
 CSE373 Autumn 2007

Assignments
 Homework 1
 Homework 2
 Homework 3 part 1
 Homework 3 part 2
 Homework 4
 Homework 5
 Homework 6
Exams
 Final Exam
 Midterm 1
 Midterm 2
Administrative
 Home
 Mailing List
 Message Board
 Annoucement Archive
 Anonymous Feedback
 Mail Instructor & TAs
Lectures
 Calendar & Slides
Handouts
 Course Info & Syllabus
Policies
 General Guidelines
 Grading Policies
 Programming Guidelines
 Writen HW Guidelines
Computing
 JDK 1.6
 Eclipse
 Programming Lab Info
   

Course Information and Syllabus (PDF)

Lecture: MWF 12:30-1:20, LAW 127

Course Web Page: http://www.cs.washington.edu/373/

Overview and Goals: Achieve an understanding of fundamental data structures and algorithms and the tradeoffs between different implementations of these abstractions.  Theoretical analysis, implementation, and application.  Lists, stacks, queues, heaps, dictionaries, maps, hashing, trees and balanced trees, sets, and graphs.  Searching and sorting algorithms. 

Prerequisite: CSE 143

Course Text: Weiss, Mark Allen. Data Structures and Algorithm Analysis in Java 2nd Ed., Addison Wesley: 2007, ISBN: 0-321-37013-9

Assignments: Assignments will be a mix of written exercises and programming projects.  Assignments will normally be due Thursday evenings and will be submitted electronically via the web.  Exact dates and deadlines will be specified on each assignment.

Exams: Two midterm exams and a final, which is scheduled for Wednesday, Dec 12 from 10:30‑12:20 p.m.         No makeup exams will be offered; you should plan to attend the exams when they are given.         Exams will normally be closed-book, closed-notes, and no calculator will be needed.

Late Policy: Deadlines for homework and scheduled times for exams are strict — no late assignments or exams will be accepted.         However, if unusual circumstances that are truly beyond your control prevent you from submitting an assignment or attending an exam on time, you should discuss this with the instructor, preferably in advance.         (Even if you’re sick in bed at home, you should still be able to make a phone call or send an email message.)

Grading and Evaluation: Grades will be computed approximately as follows (weights may be modified):

  • 50% - Assignments (Written Exercises and Programming Projects)
  • 15% - Midterm Exam 1
  • 15% - Midterm Exam 2
  • 20% - Final Exam

Academic Integrity: You are to complete assignments individually.  You may discuss the assignment in general terms (see description of Gilligan’s Island rule on course web page and first day slides), but the code you write must be your own.  You are encouraged to discuss ideas, approaches, concepts, bugs, etc., in English, but you may not show or give your code to anyone except this course’s TAs and instructor.  You are not allowed to write code with another student on an assignment or to show another student your solution to an assignment.

Communications: The course message board is a good medium for discussing the course, getting help on assignments, and staying in touch outside of class hours.  You can also email the instructor or TAs or go to office hours.  In addition, the course staff will occasionally post announcements to the course email list.  You will be automatically subscribed to the course email list if you are registered for the course and will be held responsible for anything posted there. 

Computing Resources: We will use Java 6 (aka Java 1.6) for programming assignments.  There are many good text editors and development environments available for Java. We strongly recommend Eclipse.  The College of Arts & Sciences Instructional Computing Lab (http://depts.washington.edu/aslab/) is the designated lab for this course; they have the above software installed, but the software should also be available in public campus labs.

All of the software, as well as many other Java tools and environments, is freely available on the web and we generally don’t care what you use for your programming projects. Exception: you may not rely on or use “wizards” or other program generation tools in your programming environment to create code for your assignments.         The code in your assignments should be written by you, and you should understand and be able to explain anything in it.  However you create it, your code should compile and run properly using the standard Sun Java 6 software.

Preliminary topic list:

  • Review: data structure concepts, arrays, simple linked lists, different implementations of lists, stacks and queues, binary trees
  • Introduction to complexity: O-notation
  • Balanced search trees
  • Heaps, priority queues
  • Sets, including union/find algorithms
  • Sorting and searching
  • Dictionaries/maps, hashing
  • Graphs