This document provides an introduction to software design principles and methods. It discusses the overall goal of teaching a systematic and repeatable approach to software architecture design. Key topics covered include software products and design, abstraction and modeling, different types of design, the role of design in the software lifecycle, and an introduction to the Agile software engineering design method. The document provides definitions and explanations of important software design concepts.