1st Edition

Software Design by Example A Tool-Based Introduction with Python

By Greg Wilson Copyright 2024
    342 Pages 1 Color & 105 B/W Illustrations
    by Chapman & Hall

    342 Pages 1 Color & 105 B/W Illustrations
    by Chapman & Hall

    342 Pages 1 Color & 105 B/W Illustrations
    by Chapman & Hall

    The best way to learn design in any field is to study examples, and some of the best examples of software design come from the tools programmers use in their own work. Software Design by Example: A Tool-Based Introduction with Python therefore builds small versions of the things programmers use in order to demystify them and give some insights into how experienced programmers think. From a file backup system and a testing framework to a regular expression matcher, a browser layout engine, and a very small compiler, we explore common design patterns, show how making code easier to test also makes it easier to reuse, and help readers understand how debuggers, profilers, package managers, and version control systems work so that they can use them more effectively.

    This material can be used for self-paced study, in an undergraduate course on software design, or as the core of an intensive weeklong workshop for working programmers. Each chapter has a set of exercises ranging in size and difficulty from half a dozen lines to a full day’s work. Readers should be familiar with the basics of modern Python, but the more advanced features of the language are explained and illustrated as they are introduced.

    All the written material in this project can be freely reused under the terms of the Creative Commons - Attribution license, while all of the software is made available under the terms of the Hippocratic License. All proceeds from sale of this book will go to support the Red Door Family Shelter in Toronto.

    Features:

    • Teaches software design by showing programmers how to build the tools they use every day
    • Each chapter includes exercises to help readers check and deepen their understanding
    • All the example code can be downloaded, re-used, and modified under an open license

    1 Introduction

     

    2 Objects and Classes

     

    3 Finding Duplicate Files

     

    4 Matching Patterns

     

    5 Parsing Text

     

    6 Running Tests

     

    7 An Interpreter

     

    8 Functions and Closures

     

    9 Protocols

     

    10 A File Archiver

     

    11 An HTML Validator

     

    12 A Template Expander

     

    13 A Code Linter

     

    14 Page Layout

     

    15 Performance Profiling

     

    16 Object Persistence

     

    17 Binary Data

     

    18 A Database

     

    19 A Build Manager

     

    20 A Package Manager

     

    21 Transferring Files

     

    22 Serving Web Pages

     

    23 A File Viewer

     

    24 Undo and Redo

     

    25 A Virtual Machine

     

    26 A Debugger

     

    27 Conclusion

     

    A Bibliography

     

    B Bonus Material

     

    C Syllabus

     

    D License

     

    E Code of Conduct

     

    F Contributing

     

    G Glossary

     

    H Credits

     

    Index

    Biography

    Dr. Greg Wilson is a programmer, author, and educator based in Toronto. He co-founded and was the first Executive Director of Software Carpentry, which has taught basic software skills to tens of thousands of researchers worldwide, and has authored or edited over a dozen books (including two for children). Greg is a member of the Python Software Foundation and a recipient of ACM SIGSOFT's Influential Educator of the Year award.