43 References
This bibliography is organized by each work’s direct role in the book’s themes.
43.1 Foundational Texts in Programming and Computation
- Structure and Interpretation of Computer Programs (Abelson et al. 1996)
- How to Design Programs (Felleisen et al. 2018)
- The Art of Computer Programming (Knuth 2011)
43.2 Algorithm Design and Analysis
- Introduction to Algorithms (Cormen et al. 2022)
- The Algorithm Design Manual (Skiena 2020)
- Algorithms (Sedgewick and Wayne 2011)
43.3 Software Design and Architecture
- On module decomposition and information hiding (Parnas 1972)
- Object-Oriented Software Construction (Meyer 1997)
- Clean Architecture (Martin 2017)
- Domain-Driven Design (Evans 2003)
- Patterns of Enterprise Application Architecture (Fowler 2002)
43.4 Functional Programming and Type Systems
- Why functional style matters (Hughes 1989)
- Theorems from parametric polymorphism (Wadler 1989)
43.5 Graph Theory and Discrete Mathematics
- Graph Theory (Diestel 2017)
- Discrete Mathematics and Its Applications (Rosen 2018)
43.6 Testing and Verification
- Notes on structured programming and limits of testing (Dijkstra 1972)
- Hoare logic foundations (Hoare 1969)
- Test-Driven Development: By Example (Beck 2002)
43.7 Data Modeling
- An Introduction to Database Systems (Date 2003)
- Designing Data-Intensive Applications (Kleppmann 2017)
43.8 Influence Note
Works are cited where their influence is most direct. Several shape the book across multiple parts.
43.9 Notes
- Add chapter-local citations as needed using
[@citation_key]. - Rebuild with
make bookormake printto refresh bibliography output.
Abelson, Harold, Gerald Jay Sussman, and Julie Sussman. 1996. Structure and Interpretation of Computer Programs. 2nd ed. MIT Press.
Beck, Kent. 2002. Test-Driven Development: By Example. Addison-Wesley.
Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2022. Introduction to Algorithms. 4th ed. MIT Press.
Date, C. J. 2003. An Introduction to Database Systems. 8th ed. Addison-Wesley.
Diestel, Reinhard. 2017. Graph Theory. 5th ed. Springer.
Dijkstra, Edsger W. 1972. “Notes on Structured Programming.” In Structured Programming, edited by O.-J. Dahl, E. W. Dijkstra, and C. A. R. Hoare. Academic Press.
Evans, Eric. 2003. Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley.
Felleisen, Matthias, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2018. How to Design Programs: An Introduction to Programming and Computing. 2nd ed. MIT Press.
Fowler, Martin. 2002. Patterns of Enterprise Application Architecture. Addison-Wesley.
Hoare, C. A. R. 1969. “An Axiomatic Basis for Computer Programming.” Communications of the ACM 12 (10): 576–80.
Hughes, John. 1989. “Why Functional Programming Matters.” The Computer Journal 32 (2): 98–107.
Kleppmann, Martin. 2017. Designing Data-Intensive Applications. O’Reilly Media.
Knuth, Donald E. 2011. The Art of Computer Programming. Addison-Wesley.
Martin, Robert C. 2017. Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall.
Meyer, Bertrand. 1997. Object-Oriented Software Construction. 2nd ed. Prentice Hall.
Parnas, David L. 1972. “On the Criteria to Be Used in Decomposing Systems into Modules.” Communications of the ACM 15 (12): 1053–58.
Rosen, Kenneth H. 2018. Discrete Mathematics and Its Applications. 8th ed. McGraw-Hill.
Sedgewick, Robert, and Kevin Wayne. 2011. Algorithms. 4th ed. Addison-Wesley.
Skiena, Steven S. 2020. The Algorithm Design Manual. 3rd ed. Springer.
Wadler, Philip. 1989. “Theorems for Free!” Proceedings of the Fourth International Conference on Functional Programming Languages and Computer Architecture.