CSE logo University of Washington Department of Computer Science & Engineering
 CSE 373 - Syllabus
  CSE Home   About Us    Search    Contact Info 

CSE 373
 Home page
Administration
 Syllabus
 Grading
 Calendar
 Accommodations
Classwork
 Lectures
 Assignments
 Exams
 Software
 Other Links
Email list
 Subscribe to list
 Email archive
    Course Description

In this course, we will explore several fundamental algorithms and data structures in computer science, and learn to implement them in C. Some of the data structures we will encounter include linked lists, stacks, queues, trees, heaps, hash tables, and graphs. We will study and analyze algorithms for searching, traversing trees, hashing, manipulating priority queues, sorting, finding shortest paths in graphs, and much more.

The basic idea of this course is to help you understand many of the fundamental data structures of computer science. With an appreciation for data structures and algorithms and practical experience in implementing them you can be a much more effective designer, developer, or customer for new applications. Elegant algorithms are also a nice counterpoint to the crufty code and weird features we encounter in daily work.

Textbook

The textbook for this course is Data Structures and Algorithm Analysis in C, by Mark Allen Weiss, 2nd edition, 1997, Addison-Wesley, ISBN 0-201-49840-5. Errata. The C source code for examples in the textbook is available.

We'll be covering material from chapters 1-9. Specific topics include:

  • Algorithm Analysis
  • Lists, Stacks, Queues
  • Trees
  • Heaps and Priority Queues
  • Hash Tables
  • Sorting Algorithms
  • Union-Find Algorithms
  • Graphs and Shortest Path Algorithms

There is an excellent short reference available on the use of pointers and allocated memory in the paper Pointers and Memory, by Nick Parlante, for the Stanford CS Education Library. The paper is available locally from ftp://ftp.cs.washington.edu/courses/cse373/PointersAndMemory.pdf and from Stanford at http://cslibrary.stanford.edu/102/.

The programming language for this class is plain vanilla C with pointers. We will not be exploring the far reaches of the language, and most of the control constructs will be familiar to you if you have only had Java. However, pointers can be confusing and so if you have not seen them before in this form, you will have to spend some time understanding pointers early on. A good understanding of how pointers work will be useful to you in the future no matter what programming language you use.

A good reference to the C language is The C Programming Language, by Kernighan and Ritchie. If you plan to do any amount of programming in the future, you should own a copy of this book.

Acknowledgements

In preparing the lecture notes for this class, I have (with permission) drawn extensively from the lectures presented by Raj Rao when he taught this class Spring 2001.


CSE logo Department of Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to webmaster]