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.


Other links

© 1998 Apostolos Lerios