How to design programs an introduction to programming and computing

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...

Full description

Saved in:
Bibliographic Details
Other Authors Felleisen, Matthias
Format Electronic eBook
LanguageEnglish
Published Cambridge, Mass. : MIT Press, ©2001.
Subjects
Online AccessFull text
ISBN9780262256117
Physical Description1 online zdroj (xxx, 693 pages) : illustrations

Cover

Table of Contents:
  • Processing simple forms of data. Students, teachers, and computers
  • Numbers, expressions, simple programs
  • Programs are function plus variable definitions
  • Conditional expressions and functions
  • Symbolic information
  • Compound data, part 1: structures
  • The varieties of data
  • Syntax and semantics
  • Processing arbitrarily large data. Compound data, part 2: lists
  • More on processing lists
  • Natural numbers
  • Composing functions, revisited again
  • List abbreviations
  • More on processing arbitrarily large data. More self-referential data definitions
  • Mutually referential data definitions
  • Development through iterative refinement
  • Processing two complex pieces of data
  • Local definitions and lexical scope
  • Abstracting designs. Similarities in definitions
  • Functions are values
  • Designing abstractions from examples
  • Designing abstractions with first-class functions
  • Mathematical examples
  • Defining functions on the fly
  • Generative recursion. A new form of recursion
  • Designing algorithms
  • Variations on a theme
  • Algorithms that backtrack
  • The cost of computing and vectors
  • Accumulating knowledge. The loss of knowledge
  • Designing accumulator-style functions
  • More uses of accumulation
  • The nature of inexact numbers
  • Changing the state of variables. Memory for functions
  • Assignment to variables
  • Designing functions with memory
  • Examples of memory usage
  • The final syntax and semantics
  • Changing compound values. Encapsulation
  • Mutable structures
  • Designing functions that change structures
  • Equality
  • Changing structures, vectors, and objects.