Programming in the 1990s An Introduction to the Calculation of Programs
Programming is a fascinating and challenging subject. Unfortunately, it is rarely presented as such. Most often it is taught by "induction": features of some famous programming languages are given operational meaning (e.g. a loop "goes round and round"), a number of examples are...
Main Author: | |
---|---|
Format: | eBook |
Language: | English |
Published: |
New York, NY
Springer New York
1990, 1990
|
Edition: | 1st ed. 1990 |
Series: | Monographs in Computer Science
|
Subjects: | |
Online Access: | |
Collection: | Springer Book Archives -2004 - Collection details see MPG.ReNa |
Table of Contents:
- 3.3 Existential quantification
- 3.4 Some arithmetic quantifications
- 3.5 Other quantified expressions
- 3.6 Additional exercises
- 4 Specifications
- 4.0 Introduction
- 4.1 Assigning meaning to our predicates
- 4.2 Towards writing specifications
- 4.3 Examples of specifications
- 4.4 Intermezzo on the array
- 4.5 More examples of specifications
- 4.6 Intermezzo on ascending functions
- 4.7 Even more examples of specifications
- 4.8 Other notations for functional specifications
- 4.9 Comments on specifications
- 5 The shapes of programs
- 5.0 Introduction
- 5.1 The shapes of programs
- 5.2 When is a program correct?
- 5.3 A bit about wp.S
- 5.4 Defining wp.S for all programs S
- 6 Intermezzo on calculations
- 7 Developing loopless programs
- 7.0 Introduction
- 7.1 Calculating expressions in assignments
- 7.2 Developing IFs
- 8 Developing loops — anintroduction
- 9 Loops A — On deleting a conjunct
- 9.0 Introduction
- 11.5 An example — Reversing a sequence (and the importance of good notation)
- 11.6 An example — The post-order of a binary tree
- 11.7 An example — The depth of a binary tree
- 11.8 Exercises
- 12 Back to scratch
- 12.0 Introduction
- 12.1 An example — Evaluating a polynomial (and the discovery of nice specifications)
- 12.2 An example — Greatest common divisors (and the discovery of useful properties)
- 12.3 An example — All shortest paths (and the specification as logical firewall)
- 12.4 A final example — Shiloach’s algorithm
- 12.5 Additional exercises
- 13 Where to go from here
- 13.0 On what we have learned
- 13.1 Where to go from here
- 13.2 Be a little discriminating
- 13.3 Inspirations and acknowledgements
- 13.4 Selected references
- 13.5 If you find a nice example…
- 0 What can we learn from a cake?
- 0.0 Introduction
- 0.1 What can we learn from a cake?
- 1 Preliminary notions, notations, and terminology
- 1.0 Introduction
- 1.1 The shapes of our calculations
- 1.2 Laws and so on
- 1.3 On avoiding parentheses
- 1.4 On carrying out calculations
- 1.5 Three new arithmetic operators
- 1.6 The problem with the three dots
- 1.7 What are the natural numbers?
- 1.8 A bit about function application
- 1.9 What next?
- 2 Predicates A — Boolean operators
- 2.0 Introduction
- 2.1 The equivalence
- 2.2 The disjunction
- 2.3 Intermezzo on some interesting formulae
- 2.4 The conjunction
- 2.5 The implication
- 2.6 The consequence
- 2.7 The negation
- 2.8 The discrepancy
- 2.9 Summary of binding powers
- 2.10 Final comments
- 2.11 Exercises
- 3 Predicates B — Quantified expressions
- 3.0 How to write quantified expressions
- 3.1 Laws for quantified expressions
- 3.2 Universal quantification
- 9.1 An example — Integer-division
- 9.2 An example — The linear search (and its billions of uses)
- 9.3 An example — 3-tuple sort (and avoiding avoidable case-analyses)
- 9.4 An example — Integer-division improved (and postponing design decisions)
- 10 Loops B — On replacing constants by fresh variables
- 10.0 Introduction
- 10.1 An example — Evaluating a polynomial
- 10.2 An example — The minimum value
- 10.3 An example — Determining the multiple
- 10.4 An example — A table of cubes
- 10.5 An example — The maximum section sum
- 10.6 An example — The binary search (and its numerous applications)
- 10.7 An example — Rearranging an array
- 10.8 An example — The bounded linear search
- 11 Mainly on recursion
- 11.0 Introduction
- 11.1 The general solution
- 11.2 An example — The sum of digits
- 11.3 An example — Exponentiation
- 11.4 Introducing four new types