Software Design by Example
A tool-based introduction with JavaScript
The best way to learn design in any field is to study examples,
and the most approachable examples are ones that readers are already familiar with.
These lessons therefore build small versions
of tools that programmers use every day
to show how experienced software designers think.
Along the way,
they introduce some fundamental ideas in computer science
that many self-taught programmers haven't encountered.
We hope these lessons will help you design better software yourself,
and that if you know how programming tools work,
you'll be more likely to use them
and better able to use them well.
Chapters
- Introduction
- Systems Programming
- Asynchronous Programming
- Unit Testing
- File Backup
- Data Tables
- Pattern Matching
- Parsing Expressions
- Page Templates
- Build Manager
- Layout Engine
- File Interpolator
- Module Loader
- Style Checker
- Code Generator
- Documentation Generator
- Module Bundler
- Package Manager
- Virtual Machine
- Debugger
- Conclusion
Appendices
Acknowledgments
Greg Wilson is a programmer, author, and educator based in Toronto, Canada. He was the co-founder and first Executive Director of Software Carpentry and received ACM SIGSOFT's Influential Educator Award in 2020.
start where you are · use what you have · help who you can