After many of years of teaching C and C++ and continually searching for the ‘perfect’ book, we decided to write our own. Although the first edition under a different name sold world-wide, it is now out of print. We have retained our rights to the book and have entered into the self-publishing world. This textbook is designed to teach beginning programming at the college level. It has a strong focus based upon procedural programming using the C++ language. Additionally, at the end of each chapter we show how these concepts apply to the C programming language. Book materials can be downloaded from: sharepoint.cset.oit.edu/LearnByDoing/. Prerequisites The text is targeted at the broad base of students taking their first programming course. It assumes no prior programming knowledge. However, because of the mathematical nature of some of the programming assignments, the student should have an understanding of algebraic concepts. How we are different In the past we have used several books within our introductory courses taken by programming students. Every few years we tend to alternate between these books, only to find that they all fall short of our objectives. Our text is different in the following ways: a. We include a more “learn by doing” approach to presenting materials. b. Throughout the text, exercises are presented for the students to complete as they work through a specific topic. c. We clearly stress a more procedural approach to learning programming throughout the majority of the text. d. At the end of each chapter, we point out the corresponding C language constructs related to the specific topic being presented. e. The writing style seeks to actively engage the reader in a “learn by doing” fashion and makes extensive use of various aspects associated with using the debugger to help solidify concepts. f. The writing style presents information concisely and makes good use of many code examples to help present the topics.