Neapolitan and Naimipour (both: computer science, Northeastern Illinois University) present material on designing algorithms, complexity analysis of algorithms, and computational complexity in this text for mainstream computer science students with background in college algebra and discrete structures. To support their approach, the authors present mathematical concepts using standard English, a conversational style, and a simpler notation than found in most texts, plus chapter-opening stories and numerous concrete examples. Chapter exercises are included, and a review of essential mathematical concepts is provided in three appendices. Annotation c2004 Book News, Inc., Portland, OR (booknews.com)