The book is primarily intended for a first-year undergraduate course in programming. It is structured in a problem-solution format that requires the student to think through the programming process, thus developing an understanding of the underlying theory. Each chapter is more or less independent, containing classical and well-known problems supplemented by clear and in-depth explanations. Students and teachers will find this both an excellent...