http://www.htdp.org/htdp-cover.gif * ''How to Design Programs'' by MatthiasFelleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi * ISBN 978-0262062183, ISBN 0-262-06218-6 * Publisher: The MIT Press (February 12, 2001) * http://www.htdp.org/ * ProgrammingBookAcronym: HTDP How to Design Programs is a great book for the absolute beginner programmer. It deals first with processing simple forms of data then moves to: *processing arbitrarily large data *abstracting designs *generative recursion *accumulating knowledge *changing the states of variables *changing compound values These are the section titles from the book itself which can be found (in full, online but printable if you have that much paper) on http://www.htdp.org/ or you can buy a copy direct from the MIT press (on that site) for about £43 (UK) / $67 (USA). ---- I haven't read it yet but fully intend to over the next month or so as it seems very comprehensive and appears to have what I crave as a beginner programmer myself. Which is terms, definitions, concepts and examples that seem to provide a more holistic picture of modern programming and it's uses/potential to a new-comer than other 'teach-yourself-such-and-such' style books or reference books about a single or individual languages. Introduced to me by 'ska' (still don't know who you really are) who also left the message below on my HomePage. "It isn't as 'mainstream' as many books you may have seen, but it is aimed much better at your situation, I think. Also, this text is vastly superior to most introductory programming texts. In your shoes, I would seriously consider learning what programming is about before worrying too much about particular tools. HtDP won't teach you a popular language - but it will set you solidly on the road to being a real programmer. Picking one (or several) currently popular languages later at need will be easy if you have some depth of understanding. That being said, tools like DrScheme probably do everything you are likely to need in the foreseeable future, so you can choose to stick with it if you want, also. -- ska" The blurb from the book is as follows: '''How to Design Programs''' '''An Introduction to Programming and Computing''' '''Matthias Felleisen, Robert Bruce Findler,''' ''' Matthew Flatt and Shriram Krishnamurthi''' : ''This introduction to programming places computer science in the core of a liberal arts education. Unlike other introductory books, it focuses on the program design process. This approach fosters a variety of skills – critical reading, analytical thinking, creative synthesis, and attention to detail – that are important for everyone, not just future computer programmers.'' : ''The book exposes readers to two fundamentally new ideas. First, it presents program design guidelines that show the reader how to analyze a problem statement; how to formulate concise goals; how to make up examples; how to develop an outline of the solution, based on the analysis; how to finish the program; and how to test. Each step produces a well-defined intermediate product. Second, the book comes with a novel programming environment, the first one explicitly designed for beginners. The environment grows with the readers as they master the material in the book until it supports a full-fledged language for the whole spectrum of programming tasks.'' : ''All the book's support materials are available for free on the Web. The Web site includes the environment, teacher guides, exercises for all levels, solutions, and additional projects.'' Many thanks -- SusannahWilliams ---- This book is, in many ways, a SiCp-lite. It covers similar ground as StructureAndInterpretationOfComputerPrograms (and both books use SchemeLanguage as the teaching mechanism), but the material in this book is quite a bit less daunting. Many of the examples in SiCp are drawn from other courses that your average MIT engineering student would study (lots of examples in SiCp have to deal with things like circuit simulations, problems that many non-EE's will have trouble understanding); HTDP deals with simpler problem domains. On the other hand, SiCp (though being a shorter book) is a bit more comprehensive in the number of topics it covers. Quite a few interesting topics that SiCp covers in great depth (how to write interpreters, how to model unbounded-precision arithmetic, etc.) this book ignores or glosses over. For many programmers that won't matter much, but it's material that makes SiCp shine. This is a big, thick book, but quite a bit of the text is examples and problems. If you skip over that, this book can be read through in a CuplaDays. One good thing about this book is that it's rather evangelism-free with regards to its language choice. ---- CategoryBook