Techniques for analyzing the time and space requirements of algorithms and problems. Application of these techniques to sorting, searching, pattern-matching, graph problems, and other selected problems. Brief introduction to the intractable (NP-hard) problems.