CSE326
University of Washington
Summer 2004
Syllabus (6/21/2004)
Instructor:
Teaching Assistant:
Class Times:
 Lectures: MWF,
Savery 249
Allen Center 403,
9:4010:40 am. Quiz section: Th, 1:102:10 More 221
Allen Center 403. Check
the UW
Time Schedule for lastminute changes of time or room.
 Midterm exams  During
class period on Friday, week 3, and Thursday or Friday week 6.
 Final exam  During
class period during the last class meeting, Friday, August 20.
Mailing List:
Information will be forthcoming...

To access the course email archive, click
here .
Text Book:
 Data Structures and Algorithm Analysis in
Java by Mark Allen Weiss, Addison Wesley Longman, Inc., Reading MA,
1999.
Errata. The Java
source code for examples in the textbook is available.
 We will cover at least the first seven chapters,
and parts of chapters 8 and 9, time permitting.
Course Goals and Contents
The objective of this class is to
study the fundamental data structures and algorithms used in computer
science.
Students will study advanced programming techniques and will learn to
analyze
the algorithms to determine their time and space requirements. By the end of the course, students should
have the skills necessary for selecting between existing data
structures and
algorithms, and for designing their own.
Students will also have gained some familiarity with using the
Linux (UNIX)
operating system.
Major topics will include: mathematical tools for describing
algorithmic complexity; lists, stacks, and queues; general trees;
binary trees; binary search trees; balanced binary trees; heaps and
priority queues; hashing; graphs; Btrees (time permitting); unionfind
algorithms (time permitting). The implementation of these data
structures and algorithms in Java will be studied and practiced.
In addition to the listed topics, a goal of the course is to improve
your ability to solve interesting problems through programming, by
recognizing when and how standard data structures can be used, and how
new data structures can be created for novel situations.
For a more detailed list of topics and dates, please see the Lectures
and Schedule page.
Assignments Overview
During the quarter you will have assignments of three types
 pencil and paper: mathlike problems; diagrams; pseudocode
solutions; etc. Some of these will come from the textbook. These
problems are similar in spirit to many that you might see on exams.
 computerbased exercises: work to be carried out on the computer,
where the task is fairly well specified and the emphasis is on gaining
or reinforcing some particular skill
 exploratory projects: where the problem is less constrained and
the solution even less so; the emphasis is on experimentation and
discovery.
There will generally be something due every Wednesday evening
(electronically) and/or Thursday morning (on paper). For longer
assignments there could be multiple parts dues. Each assignment
will carry instructions about the requirements for its execution and
turnin.
Late assignments will not be accepted unless there is prior
approval (which will not be easy to get!)
Many assignments can be done with a partner or small, which will
sometimes be assigned; other times the choice will be up to you.
You should try to arrange your schedule to be able to meet with fellow
students on campus.
Tentative Grading Weights:
 Pencil and paper assignments (15%)
 Computerbased assignments (25%)
 Quizzes (9%)
 Service and participation (3%)
 Midterm exams (14% each)
 Final exam (20%)