Elements of Programming provides a different understanding of programming than is presented elsewhere. Its major premise is that practical programming, like other areas of science and engineering, must be based on a solid mathematical foundation. The book shows that algorithms implemented in a real programming language, such as C++, can operate in the most general mathematical setting. For example, the fast exponentiation algorithm is defined to work with any associative operation. Using abstract algorithms leads to efficient, reliable, secure, and economical software.
Conditions of Use
This book is licensed under a Creative Commons License (CC BY-NC-SA). You can download the ebook Elements of Programming for free.
- Title
- Elements of Programming
- Publisher
- Semigroup Press
- Author(s)
- Alexander Stepanov, Paul McJones
- Published
- 2019-06-17
- Edition
- 1
- Format
- eBook (pdf, epub, mobi)
- Pages
- 280
- Language
- English
- ISBN-10
- 0578222140
- ISBN-13
- 9780578222141
- License
- CC BY-NC-SA
- Book Homepage
- Free eBook, Errata, Code, Solutions, etc.
Preface to Authors' Edition Preface Foundations Categories of Ideas: Entity, Species, Genus Values Objects Procedures Regular Types Regular Procedures Concepts Conclusions Transformations and Their Orbits Transformations Orbits Collision Point Measuring Orbit Sizes Actions Conclusions Associative Operations Associativity Computing Powers Program Transformations Special-Case Procedures Parameterizing Algorithms Linear Recurrences Accumulation Procedures Conclusions Linear Orderings Classification of Relations Total and Weak Orderings Order Selection Natural Total Ordering Clusters of Derived Procedures Extending Order-Selection Procedures Conclusions Ordered Algebraic Structures Basic Algebraic Structures Ordered Algebraic Structures Remainder Greatest Common Divisor Generalizing gcd Stein gcd Quotient Quotient and Remainder for Negative Quantities Concepts and Their Models Computer Integer Types Conclusions Iterators Readability Iterators Ranges Readable Ranges Increasing Ranges Forward Iterators Indexed Iterators Bidirectional Iterators Random-Access Iterators Conclusions Coordinate Structures Bifurcate Coordinates Bidirectional Bifurcate Coordinates Coordinate Structures Isomorphism, Equivalence, and Ordering Conclusions Coordinates with Mutable Successors Linked Iterators Link Rearrangement Applications of Link Rearrangements Linked Bifurcate Coordinates Conclusions Copying Writability Position-Based Copying Predicate-Based Copying Swapping Ranges Conclusions Rearrangements Permutations Rearrangements Reverse Algorithms Rotate Algorithms Algorithm Selection Conclusions Partition and Merging Partition Balanced Reduction Merging Conclusions Composite Objects Simple Composite Objects Dynamic Sequences Underlying Type Conclusions Afterword Mathematical Notation Programming Language Language Definition Macros and Trait Structures Bibliography Index
Related Books