Obviously, I think you should read this book. Whether you are a seasoned programmer or just beginning to explore computer programming, this book will be helpful to you. Embodied in this text are decades of teaching experience that have helped me to understand the learning process. I understand some of the major stumbling blocks students face while learning computer programming and how to get around them.
If you're just getting started, this book can help you become a good computer programmer. If you're an experienced programmer, this book can help you become a better programmer. Clearly, you'll be the final judge as to whether the book is successful in these endeavors.
Assumptions About the Reader
In a way, it would be nice if you had no programming experience. If that were the case, you would have no preconceived notions about how to program. Your mind would be unfettered by any bad programming habits.
Alas, you probably do have some programming experience. Even so, this book proceeds as though you've never seen a computer program. The book makes no heavy assumptions about your math background other than knowledge of some elementary algebra, at most. Although the assumption of no prior programming experience might make some topics seem pretty simple to you, I encourage you to read this book from cover to cover. Little nuggets of information are scattered throughout this text, and you never know where they're hiding until you read them.
To make the learning process easier for you, I've made a very conscious effort to limit the scope of each chapter to one major topic. Some texts swamp you with 100-page chapters, but I've tried to keep the chapters of this book as short as possible while still covering the topic thoroughly. Presenting a single topic in each chapter makes the learning process more manageable.
I encourage you to answer each of the review questions at the end of each chapter. Answering the questions at the end of each chapter is a great way to find out what you don't understand. Discovering these shortcomings in understanding early in the process is important because you need to master each new topic before you move on to the next one. This is another reason I've limited the scope of each chapter. Small, bite- sized chunks of information are easiest to assimilate and learn. I want you to gain confidence as you progress through the book, and successful completion of the review questions will help you attain that goal.
Also, I expect you to make mistakes along the way. Programs rarely execute as expected the first time you run them. Discovering and correcting program errors, or bugs , is an integral part of the learning process. The best way to gain this experience is to write programs. Many chapters offer suggestions for improving the coding examples in the book. Making the suggested modifications is a great way to test your understanding of the topics at hand.
Some program bugs, once uncovered, make you say to yourself, "I never saw that one coming!" Other bugs result in the flat forehead effect: That's when you slam the heel of your hand to your forehead and say: "D'oh! How could I be so stupid?" The good news is that both types of bugs provide learning experiences, and you should view them in that light. We've all made mistakes, and you shouldn't expect otherwise . The bad news is that you'll move on to bigger and better bugs as you gain experience. Still, it's all part of the process of becoming a programmer, and each bug you dispatch is another stripe on your sleeve.