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 2:30-3:20, Tuesday 9:00-9:50 and 1:30-2:20,
Wednesday 2:30-3:20, and Thursday 9:30-10:20; 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.

lazowska@cs.washington.edu