How to Design Programs: An Introduction to Programming and Computing

Front Cover
Matthias Felleisen
MIT Press, 2001 - Computers - 693 pages
11 Reviews

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.

  

What people are saying - Write a review

User ratings

5 stars
7
4 stars
2
3 stars
2
2 stars
0
1 star
0

User Review - Flag as inappropriate

see http://www.htdp.org/

Review: How to Design Programs: An Introduction to Programming and Computing

User Review  - Carl-Erik Kopseng - Goodreads

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 ... Read full review

Contents

Processing Simple Forms of Data
3
Programs are Function Plus Variable Definitions
21
Conditional Expressions and Functions
29
Symbolic Information
46
The Varieties of Data
79
Syntax and Semantics
97
Processing Arbitrarily Large Data
117
More on Processing Lists
137
Generative Recursion
357
Designing Algorithms
368
Variations on a Theme
381
Algorithms that Backtrack
406
The Cost of Computing and Vectors
417
Accumulating Knowledge
441
Designing AccumulatorStyle Functions
450
More Uses of Accumulation
466

Natural Numbers
153
Composing Functions Revisited Again
168
List Abbreviations
183
More on Processing Arbitrarily Large Data
189
Mutually Referential Data Definitions
209
Development through Iterative Refinement
221
Processing Two Complex Pieces of Data
228
Local Definitions and Lexical Scope
259
Abstracting Designs
283
Functions are Values
299
Designing Abstractions from Examples
306
Designing Abstractions with FirstClass Functions
319
Mathematical Examples
334
Defining Functions on the Fly
350
The Nature of Inexact Numbers
478
Changing the State of Variables
491
Designing Functions with Memory
507
Examples of Memory Usage
521
The Final Syntax and Semantics
548
Changing Compound Values
573
Mutable Structures
587
Designing Functions that Change Structures
608
Equality
637
Changing Structures Vectors and Objects
642
Epilogue
677
Index
683
Copyright

Common terms and phrases

References to this book

All Book Search results »

About the author (2001)

Shriram Krishnamurthi is Assistant Professor of Computer Science at Brown University.

Bibliographic information