Each self-contained chapter presents classical and well-known problems supplemented by clear and in-depth explanations. The material covered includes such topics as combinatorics, sorting, searching, queues, grammar and parsing, selected well-known algorithms and much more. Students and teachers will find this both an excellent text for learning programming and a source of problems for a variety of courses.