CS 161: Data Structures and Algorithms
Summer quarter, 1997
This is a basic course in the design and analysis of algorithms. We
will cover general techniques for designing efficient algorithms, such
as dynamic programming, divide and conquer, greedy methods, randomized
algorithms, etc. In parallel, we will study techniques for rigorously
comparing different algorithms, in terms of running time, memory
consumption, etc. As case studies, we will investigate an exciting
variety of data structures and algorithms: balanced trees, heaps,
graphs, flows, computational geometry. Some of the topics will be
familiar from CS109A and CS109B but we will cover them with stronger
emphasis on detail and rigor.
Prerequisites: CS109A/B. Familiarity with basic
combinational mathematics, including summations, recurrence relations,
and counting, as well as elementary probability theory. Programming
project requires knowledge of C or C++ (your choice); also, code
development under UNIX helpful.
Units: 4; graduate students may be take the course
for 3 units.
© 1998 Apostolos Lerios