Å·±¦ÓéÀÖ

Jump to ratings and reviews
Rate this book

How to Design Programs: An Introduction to Programming and Computing

Rate this book
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. A second edition is now available.

720 pages, Hardcover

First published February 12, 2001

167 people are currently reading
1,944 people want to read

About the author

Matthias Felleisen

13Ìýbooks29Ìýfollowers

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
111 (41%)
4 stars
85 (31%)
3 stars
48 (17%)
2 stars
16 (5%)
1 star
8 (2%)
Displaying 1 - 16 of 16 reviews
Profile Image for Pablo Meier.
5 reviews6 followers
July 24, 2009
An excellent introduction to programming, especially for those with no previous exposure. Learning from this book first would have prevented me from having to spend the past year unlearning several bad habits.

It achieves accessibility at the cost of verboseness: frequently you'll want to page further on and you find the next example is only incrementally different. This is great if you have little experience and wish to work your way through, but if you're trying to find the 'meat' (as I was) it makes it tougher.

Small quibble, but I feel significant (especially of a book this size): the typesetting is rather ugly. You don't open the book and particularly want to read what your eyes scan across. It's rare when the online version of the book (free! ) looks as good as its printed counterpart.

Having read "The Little ..." books and (also !), this is mostly repeat material. The design recipe is a good one, however, and this is finally a book I would recommend to high schoolers who have (or can grow) an interest in learning programming from a more abstract angle.

If you're wondering whether to read this or SiCP, I say that the is mostly correct in its criticisms of SiCP, especially concerning its role as a first-year text.
Profile Image for Carl-Erik Kopseng.
26 reviews13 followers
July 17, 2013
Sum up: A true gem if you are learning to program, but a bit too slow-paced if you already are a proficient programmer.

I had been programming for several years when I wanted to get more into the functional way of solving programming problems which had begun to receive more attention towards the end of the noughties with the success of new programming languages such as F#, Clojure and Scala. After researching a whole lot I found that this book had received a lot of positive critique, as a sort of more noob-friendly alternative to (by Abelson and Sussman). To me, SICP seemed to have a certain shroud of high-brow elitism to it that scared me away from reading it, so this seemed like what I was after.

And it kind of was. This text seemed perfect for an academic learner like myself, building knowledge stepwise, with a lot of emphasis on how to solve things, thinking before you type, and to my great enjoyment; a kind of test driven development attitude. Really a wonderful way to teach (functional) programming and program design to a newcomer.

The problem was only that I am no newcomer to programming, and as such, the pace of the text was a bit too slow. I intended to finish the text before starting a functional programming class, but never got past chapter six. The content was great, the pedagogical angle was superb, but it simply went too slow for me and I did not finish it.

My functional programming class actually used SICP, which turned out to be the best technical book I have read. It was simply an enjoyable read, once you got into it. If you already know your way around branch structures and the basics of programming, just delve into . It has the same content, but progresses at a much higher pace and demands a whole lot more of the reader. But if you are new to programming and is not the type of person that just likes to learn from examples, this text is great and truly recommended.
Profile Image for Y.
238 reviews10 followers
November 28, 2008
I liked the beginning but then I discovered you had to learn this basic programming syntax which is neither C or Java so I didn't want to do the examples and found myself not really learning.
I would have liked it more if it just presented theories and examples with the C language rather than some simplified program that you have to learn just for this book.
Profile Image for Pritesh Shrivastava.
80 reviews6 followers
July 4, 2021
HtDP tries to be easier and more approachable than SICP, but ends up being boring and long for no reason. Most of the problems in this book are trite, which make you lose interest in the ones that are actually great. The authors can easily remove a lot of similar exercises which are added for the sake of "practise". The student languages also seem unnecessary and irrelevant, sticking with Racket throughout would have been much better. Having said that, HtDP does try to take up the monumental effort of documenting the design process of functions and programs in FP with meticulous detial, which SICP leaves up to the instincts. This effort alone can make the book worthwhile for those looking to explore the world of Functional Programming.
Profile Image for Dave Peticolas.
1,377 reviews44 followers
October 8, 2014

A textbook on designing Scheme functions. Good, but the title is rather misleading, I think. I was expecting more on designing large pieces of sotware.

Profile Image for Kris.
248 reviews14 followers
September 8, 2015
I give up on this one. Takes a lot of time and I don't feel like I learn anything.
7 reviews2 followers
March 31, 2017
This book significantly improved my programming productivity in a very short time. The problems are tedious and the content is repetitive, but this may be necessary to firmly inculcate good habits.
1 review
January 12, 2024
Was it Michelangelo who once said that every block of stone already has a statue inside it and the sculptor just needs to discover it? Well, this work contains no less than two good statues... I mean, books inside it. If only a good editor could extract them out.
The authors, in their turn, could fix the major blunder they made: the way they position their (Beginner) Student Programming Language to the general public. Why call it that? People hate learning things they wouldn't be able to use IRL. Give it some sleek name, don't forbid its users use it in the wild! Encourage them to. Don't dis it yourself, others will do it just fine. Focus on selling it. In your next edition of the book make a rebranding, tell your readers they gonna learn a real language this time. After all, BSL is not less real than PHP or, good heavens, V or whatever.
Profile Image for Mehmet Davut.
33 reviews2 followers
September 22, 2024
It is a very good book for who wants to learn how to programming and maybe good for who wants to structure the knowledge they have. It may be boring for experienced developers. Also, I eould prefer to see the book uses a programming language which is actively used in the industry, however it explains the examples something called BSL, I’ve never heard of it. Anyway, it may be useful for students.
Profile Image for Ajita Gupta.
91 reviews
December 24, 2021
Another one of these useless book amongst the textbooks used by top universities such as MIT. It's completely unreadable and impossible to follow. You are better off with Harvard's CS50.
6 reviews
June 14, 2024
Excellent book, but it takes patience and you must do the exercises. To be fair - doing the exercises is essential with any programming book.

I found the Racket community volunteers particularly helpful - especially on Discourse and the Racket Discord

10/10.
Profile Image for Gregory Blake.
36 reviews6 followers
July 31, 2014
This book is essential for any mathematically-inclined programming novice.
38 reviews
Currently reading
May 11, 2016
Apparently the only way to post a progress update in Å·±¦ÓéÀÖ for Kindle is if the book itself is saved within the Kindle app. Out of luck if book is available on Web. I'm starting chapter 1.
Displaying 1 - 16 of 16 reviews

Can't find what you're looking for?

Get help and learn more about the design.