Introduction to Software Design
This textbook provides a balanced coverage on software design, including design principles, methodologies, and techniques in contexts of designing modules of small and larger sizes with a multi-paradigm viewpoint emphasizing design trade-off.