In observance of Memorial Day, we will be closed on Monday, May 29th and will reopen at 9am ET on Tuesday, May 30th.
Software Design for Flexibility
How to Avoid Programming Yourself into a Corner
ISBN: 9780262363006 | Copyright 2021
Instructor Requests
Expand/Collapse All | |
---|---|
Contents (pg. vii) | |
Foreword (pg. xi) | |
Preface (pg. xiii) | |
Acknowledgements (pg. xix) | |
1 Flexibility in Nature and in Design (pg. 1) | |
1.1 Architecture of computation (pg. 5) | |
1.2 Smart parts for flexibilty (pg. 7) | |
1.3 Redundancy and degeneracy (pg. 12) | |
1.4 Exploratory behavior (pg. 14) | |
1.5 The cost of flexibility (pg. 17) | |
2 Domain-Specific Languages (pg. 21) | |
2.1 Combinators (pg. 22) | |
2.2 Regular expressions (pg. 37) | |
2.3 Wrappers (pg. 46) | |
2.4 Abstracting a domain (pg. 52) | |
2.5 Summary (pg. 64) | |
3 Variations on an Arithmetic Theme (pg. 67) | |
3.1 Combining arithmetics (pg. 67) | |
3.2 Extensible generic procedures (pg. 87) | |
3.3 Example: Automatic differentiation (pg. 103) | |
3.4 Efficient generic procedures (pg. 125) | |
3.5 Efficient user-defined types (pg. 132) | |
3.6 Summary (pg. 154) | |
4 Pattern Matching (pg. 157) | |
4.1 Patterns (pg. 158) | |
4.2 Term rewriting (pg. 160) | |
4.3 Design of the matcher (pg. 170) | |
4.4 Unification match (pg. 183) | |
4.5 Pattern matching on graphs (pg. 209) | |
4.6 Summary (pg. 231) | |
5 Evaluation (pg. 233) | |
5.1 Generic eval/apply interpreter (pg. 234) | |
5.2 Procedures with non-strict arguments (pg. 250) | |
5.3 Compiling to execution procedures (pg. 259) | |
5.4 Exploratory behavior (pg. 269) | |
5.5 Exposing the underlying continuations (pg. 280) | |
5.6 Power and responsibility (pg. 296) | |
6 Layering (pg. 299) | |
6.1 Using layers (pg. 300) | |
6.2 Implementation of layering (pg. 301) | |
6.3 Layered arithmetic (pg. 309) | |
6.4 Annotating values with dependencies (pg. 315) | |
6.5 The promise of layering (pg. 323) | |
7 Propagation (pg. 327) | |
7.1 An example: Distances to stars (pg. 329) | |
7.2 The propagation mechanism (pg. 342) | |
7.3 Multiple alternative world views (pg. 349) | |
7.4 Merging values (pg. 351) | |
7.5 Searching possible worlds (pg. 355) | |
7.6 Propagation enables degeneracy (pg. 369) | |
8 Epilogue (pg. 373) | |
A Appendix: Supporting Software (pg. 377) | |
B Appendix: Scheme (pg. 379) | |
References (pg. 399) | |
Index (pg. 409) | |
List of Exercises (pg. 425) |
eTextbook
Go paperless today! Available online anytime, nothing to download or install.
|