Software Design by Example (A Tool-Based Introduction with Python)