Programming is not an obscure art form accessible only to computer science majors or hackers; it is a craft that shares many similarities with other crafts, such as woodworking, quilting, or model building. Mastery of any craft requires plenty of practice, the right tools, and knowledge of the vocabulary associated with the craft.
Practice is crucial because mastery of any craft depends upon experience. Throughout this book, readers are asked to think about the problem and a solution before they examine the code. Additionally, each chapter contains several practice exercises.
An experienced programmer always wields an arsenal of testing techniques to ensure that pages are error free. These techniques are stressed throughout the book. Most web programming books do not discuss these techniques. Either they don't care, or they assume that the reader's code will work correctly.
As a teacher with more than twenty years experience, I know that programming can be a frustrating experience for beginners. It requires a level of accuracy and attention to detail that many of us initially lack. I believe in a progressive, hands-on approach. Any individual, if given clear instructions and visual examples, can learn to program. The examples chosen for the text cover a wide variety of topics. The book includes pages containing recipes, football terms, crossword puzzles, multilanguage dictionaries, suggestion boxes, opinion polls, Shakespearean quizzes, and bird identification pages. The examples are designed to rouse your interest and to encourage you to develop creative and imaginative web pages. I hope that you enjoy reading the book as much as I enjoyed writing it.
First, I would like to thank the many students who helped class-test this book. Students in the Introduction to the Web class used drafts of Parts I and II. Computer Science students used drafts of Parts III and IV in upper-level courses. Special thanks to the Introduction to the Web instructors, Moreena Tiede, Paul Kapitza, and Roussanka Loukanova, for their many helpful suggestions.
I am also indebted to my office suite mates, Jorg Tiede, Lon Shapiro, and Chris Boucher. Jorg v patiently corrected my German in the several German-English pages. All my suite mates provided ongoing support for this project. Thanks also to Harold Grossman, Clemson University; Bert Lundy, Naval Postgraduate School; Scott Henninger, University of Nebraska; Rayford Vaughn, Mississippi State University; Marc Loy, Galileo Systems; and Jesse Heroes, University of Massachusetts, Lowell, who reviewed early drafts of this manuscript.
I would also like to thank our technical reviewers who took the time to review the manuscript: Harold C. Grossman, Computer Science Department, Clemson University; Berty Lundy, Computer Science Department, Naval Postgraduate School; Scott Henninger, University of Nebraska; Rayford B. Vaughn, Mississippi State University; Marc Loy, Galileo Systems, LLC; and Jesse Heroes, University of Massachussetts-Lowel.
I would also like to thank Petra Recter, Senior Acquisitions Editor, Prentice-Hall, for her ongoing support and encouragement. I thank Amy Waller, Publisher's Representative, Prentice-Hall, for bringing the manuscript to Prentice-Hall's attention. Thanks also to all of the other individuals at Prentice Hall who helped bring this book to fruition, with special thanks to Sarah Burrows and Rose Kernan.
I especially thank my husband, John, and my daughter, Jenny, for their ongoing support and patience. I appreciate their willingness to assume family chores so that I had additional time to write. And I owe a special debt of gratitude to my parents, Don and Jeanette Anderson, for all their assistance and encouragement over the years. Susan Anderson-Freed