|
CSE Home | About Us | Search | Contact Info |
|
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. TextbookThe 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:
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. AcknowledgementsIn 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. |
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] |