CSE 373: Data Structures and Algorithms
Autumn 1994
Course Overview
Instructor: Ed Lazowska, lazowska@cs.washington.edu
Office Hours: Wednesday 2:30-3:20, Thursday 11:00-11:50, or by
appointment; Sieg 112
TA: Hannah Zhou, hannahz@cs.washington.edu
Office Hours: Monday 11:00-11:30 a.m. and
2:30-3:20 p.m., Tuesday 9:00-9:50 a.m. and 1:30-2:00 p.m.,
Wednesday 2:30-3:20 p.m., and Thursday 9:30-10:20 a.m.; Sieg 326
Catalog Description:
Fundamental algorithms and data structures for implementation.
Techniques for solving problems by programming. Linked lists,
stacks, queues, directed graphs. Trees: representations,
traversals. Searching (hashing, binary search trees, multiway
trees). Garbage collection, memory management. Internal and
external sorting.
What This Means:
This is not a "programming course" (although of course you'll
write some programs). You already know how to program from
having taken CSE/ENGR 142 and CSE 143. CSE 373 teaches you
how to recognize and design efficient algorithms and data
structures for situations that you're likely to encounter.
Text:
Data Structures and Algorithm Analysis, by Mark Allen Weiss.
This is a pretty good text, and we'll follow it quite closely.
There are three versions, in which the examples are given in
Ada, C, and Pascal, respectively -- choose your poison!
Workload and Grading:
Problem sets will be assigned roughly weekly. These will be
due at the start of class on a specified day. Late
assignments will be accepted only in extraordinary
circumstances. Your lowest two scores will be ignored; the
remaining scores will contribute roughly 40% to your course
grade.
Additionally, there will be two or three programming
assignments, which will contribute roughly 20% to your grade.
There will be two tests, which will contribute the remaining
roughly 40% to your grade.
Computing:
Your programming assignments may be done in the language of
your choice. C and Ada are the most obvious choices.
We'll be using the Math Sciences Computing Center, in the
basement of Thompson Hall. See the computing handout for
further information. If you want to compute elsewhere and can
find a suitable language and compiler, that's fine. Note,
though, that we may wind up using Mosaic for information
dissemination, in which case access to a Mosaic-capable system
will be important.
For computing questions -- computer use, language problems,
debugging problems, etc. (as opposed to course content
questions), Hannah will be your principal resource (via office
hours or email), but in addition there are consultants at MSCC
who may be able to help you, and you may be able to politely
impose on the TAs for CSE/ENGR 142 and CSE 143, whose office
hours will be posted in Sieg 326. It's important to remember,
though, that the 142/143 TAs are there primarily for the
students in those courses.
Collaboration:
You know the drill: Helping one another to learn is great,
but your work is supposed to be your own. Anything you do
that gives you or another student an unfair advantage is out
of line.
An Apology in Advance:
I'm going to miss two class sessions (hopefully that's all)
due to job-related travel that I committed to prior to my
assignment to this course and that I was unable to renege on.
The TA and I will do everything we can to minimize any
discontinuities.
A Plea!
You need to help us to help you learn the material and enjoy
the course. Got a question in class? Ask it! Probably the
person sitting next to you had the same question! Got a
question outside of class? Come to office hours! That's why
we have them.