How to Design Programs

How to Design Programs

729 Pages · · 10.49 MB · 411 Downloads· language English
Published By publisher of ebook The MIT Press
File Name: How-to-Design-Programs-An-Introduction-to-Programming.pdf
download icon download icon download icon download icon download icon 5 Avg rating700 Votes

“How to Design Programs” is a comprehensive guide to programming for beginners that emphasizes the importance of program design. Written by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi, the book provides a step-by-step approach to programming and introduces readers to the principles of computer science.

Introduction

The book begins with an introduction to programming and computer science. It explains the importance of program design and the role it plays in developing efficient and effective programs. The introduction also provides an overview of the book’s structure and contents.

Part 1: The Elements of Programming

The first part of the book introduces the basic elements of programming, such as functions, data, and control. It emphasizes the importance of understanding the underlying principles of programming and introduces the idea of designing programs systematically.

Part 2: Building Abstractions with Data

The second part of the book focuses on building abstractions with data. It introduces the concept of data abstraction, which is a technique used to simplify programs by hiding details of implementation. The authors explain how to design programs using data abstraction and provide several examples to illustrate the technique.

Part 3: Building Abstractions with Procedures

The third part of the book focuses on building abstractions with procedures. It introduces the concept of procedural abstraction, which is a technique used to simplify programs by breaking them down into smaller, more manageable parts. The authors explain how to design programs using procedural abstraction and provide several examples to illustrate the technique.

Part 4: Beyond Ordinary Programming

The fourth part of the book explores more advanced topics in programming, such as recursion, higher-order functions, and streams. It emphasizes the importance of abstraction and provides several examples to illustrate the techniques.

Pros

One of the strengths of “How to Design Programs” is its clear and concise writing style. The authors explain complex ideas in a way that is easy to understand and provide many examples to illustrate their points. The book’s step-by-step approach to programming is also a strength, as it helps readers to build their knowledge gradually and systematically.

Another strength of the book is its emphasis on program design. The authors make a compelling case for the importance of program design and provide readers with the tools they need to design programs systematically. The book’s focus on abstraction is also a strength, as it teaches readers how to simplify programs by breaking them down into smaller, more manageable parts.

Cons

One potential drawback of “How to Design Programs” is its focus on Scheme, a dialect of Lisp. While Scheme is a good language for beginners to learn programming, it may not be as useful for those who want to learn programming for specific purposes, such as web development or data science. Additionally, some readers may find the book’s focus on program design to be overly prescriptive, as it provides a very structured approach to programming.

Conclusion

Overall, “How to Design Programs” is an excellent guide to programming for beginners. It provides a clear and concise introduction to programming and emphasizes the importance of program design. The book’s step-by-step approach to programming and its focus on abstraction make it a valuable resource for anyone who wants to learn programming. While its focus on Scheme may limit its usefulness for some readers, the book’s emphasis on the principles of computer science makes it a valuable resource for anyone who wants to learn programming.