Topics include an introduction to the mathematical analysis of algorithms, an overview of design principles for computer algorithms, and an introduction to the theory of NP-completeness. The emphasis is on techniques for design and analysis, using specific algorithms as examples.